quantiles drawn by geom_violin's draw_quantiles option are incorrect

オープン
#847 コメント 3 件 リアクション 1 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python

調査の方向性

まず、geom_violin(draw_quantiles=[0.25, 0.5, 0.75]) と重ね合わせた geom_boxplot を使用して、提供された Python の例を再現します。geom_violin の draw_quantiles の挙動を追跡し、その線をグループ化されたデータの 25%、50%、75% の値と比較します。バイオリンの分位点線が、中央値を含む対応する統計的分位点と一致すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Discussion

The quantiles drawn by geom_violin are incorrect e.g. the 50% quantile does not correspond to the median. A simple example, where a boxplot is overlayed to show the expected position of the 25, 50 and 75% quantiles:

from plotnine import *
import pandas as pd
import numpy as np

df = pd.DataFrame({
    "y": np.random.gamma(1,2,10),
    "x": ["a"]*10
})
plt = (
    ggplot(df, aes(x="x", y="y")) +
    geom_violin(draw_quantiles=[0.25,0.5,0.75]) +
    geom_boxplot(alpha=0.5,width=0.1,fill="grey")
)
plt.show()

Plotting the mean and median for comparison:

plt = (
    ggplot(df, aes(x="x", y="y")) +
    geom_violin(draw_quantiles=0.5) +
    geom_hline(data=df.groupby(["x"])["y"].describe(), mapping=aes(yintercept="mean"), color="red",alpha=0.5) +
    geom_hline(data=df.groupby(["x"])["y"].describe(), mapping=aes(yintercept="50%"), color="blue",alpha=0.5)
)
plt.show()

Tested with plotnine-0.13.6 and Python 3.10

主要言語
Python
スター
4.8k
フォーク
260
平均マージ
2日 12時間
マージ済み PR(30日)
4

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

has2k1/plotnine のほかの issue

has2k1/plotnine の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。