Белые полосы ошибок с черными границами на графике панд - PullRequest
0 голосов
/ 25 апреля 2018

Мне было интересно, можно ли добиться того, чтобы полосы ошибок были белыми с черной рамкой (на графике полос Панд)?

Я пытаюсь добиться того, что упомянуто в принятом ответе в этомpost ( Граница на панелях ошибок в matplotlib / python ), однако мне интересно, можно ли реализовать это для сюжета Pandas?

Соответствующий сюжет Pandas:

from io import StringIO
import pandas as pd
import matplotlib.pyplot as plt

txt = u'''Category    COLUMN1         COLUMN2     COLUMN3    
A          0.5               3          Cat1   
B          0.3               5          Cat1 
C          0.7               4          Cat1
A          0.4               3          Cat2
B          0.8               5          Cat2
C          0.3               4          Cat2
'''

df = pd.read_table(StringIO(txt), sep="\s+")

order = ['Cat2', 'Cat1']
suborder = list("BAC")

df2 = pd.pivot_table(df,index='COLUMN3',columns='Category',values='COLUMN2').loc[order]
df2 = df2[suborder]
df2.plot(kind='bar', 
         yerr=pd.pivot_table(df,
                             index='COLUMN3',
                             columns='Category',values='COLUMN1')
                .reindex(df2.index)
                .reindex(df2.columns, axis=1), capsize=4)

1 Ответ

0 голосов
/ 25 апреля 2018

Вы можете в основном использовать тот же принцип, который показан в ответе, на который вы ссылаетесь, с некоторыми небольшими изменениями, когда вы используете pandas вместо чистого matplotlib.Идея та же: построить график дважды, а во второй раз использовать чуть более толстые панели ошибок и установить zorder ниже, что мы можем сделать, используя словарь kwargs - error_kw.Кроме того, обязательно передайте аргумент ax=, чтобы графики отображались на одном рисунке, и установите legend=False на втором графике, чтобы избежать повторения записей легенды.

fig, ax = plt.subplots()

df2.plot(kind='bar', 
         yerr=pd.pivot_table(df,
                             index='COLUMN3',
                             columns='Category',values='COLUMN1')
                .reindex(df2.index)
                .reindex(df2.columns, axis=1), ax=ax,
                error_kw=dict(ecolor='white', capthick=2,elinewidth=2,capsize=3,zorder=10))


df2.plot(kind='bar', 
         yerr=pd.pivot_table(df,
                             index='COLUMN3',
                             columns='Category',values='COLUMN1')
                .reindex(df2.index)
                .reindex(df2.columns, axis=1), ax=ax, legend=False,
                error_kw=dict(ecolor='black',capthick=4,elinewidth=4,capsize=4,zorder=5))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...