我想知道是否可以实现错误条带为黑色边框的白色(在Pandas条形图中)?
我正在尝试实现这篇文章(Border on errorbars in matplotlib/python)中接受的答案中提到的内容,但是我想知道是否有可能为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)
答案 0 :(得分:1)
您基本上可以使用与链接的答案中显示的相同的原则,稍微修改一下,因为您使用的是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))