所以我正在绘制pandas数据帧的错误栏。现在错误栏顶部有一个奇怪的箭头,但我想要的是一条水平线。例如,像这样的数字: 但现在我的错误栏以箭头而不是水平线结束。
以下是我用来生成它的代码:
plot = meansum.plot(kind='bar',yerr=stdsum,colormap='OrRd_r',edgecolor='black',grid=False,figsize=(8,2),ax=ax,position=0.45,error_kw=dict(ecolor='black',elinewidth=0.5,lolims=True,marker='o'),width=0.8)
那么我该怎么做才能让错误成为我想要的错误。 THX。
答案 0 :(得分:2)
只是没有设置lolim = True
,你很高兴,这是一个示例数据示例:
import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
df = pd.DataFrame({"val":[1,2,3,4],"error":[.4,.3,.6,.9]})
meansum = df["val"]
stdsum = df["error"]
plot = meansum.plot(kind='bar',yerr=stdsum,colormap='OrRd_r',edgecolor='black',grid=False,figsize=(8,2),ax=ax,position=0.45,error_kw=dict(ecolor='black',elinewidth=0.5),width=0.8)
plt.show()
答案 1 :(得分:1)
使用matplotlib中的plt.errorbar
可以更轻松地返回多个对象,包括caplines
,其中包含您要更改的标记(lolims
设置为True
时自动使用的箭头pandas
,请参阅docs)。
使用plot
,您只需在import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
df = pd.DataFrame({"val":[1,2,3,4],"error":[.4,.3,.6,.9]})
meansum = df["val"]
stdsum = df["error"]
plot = meansum.plot(kind='bar',yerr=stdsum,colormap='OrRd_r',edgecolor='black',grid=False,figsize=8,2),ax=ax,position=0.45,error_kw=dict(ecolor='black',elinewidth=0.5, lolims=True),width=0.8)
for ch in plot.get_children():
if str(ch).startswith('Line2D'): # this is silly, but it appears that the first Line in the children are the caplines...
ch.set_marker('_')
ch.set_markersize(10) # to change its size
break
plt.show()
的子项中挖掘正确的行并更改其标记:
TypeError: Cannot read property 'transformDateToApi' of undefined