Python 如何将错误条添加到分组条形图?
我想在我的绘图中添加错误栏,以便显示每个绘图的最小最大值。求求你,任何人都可以帮我。提前谢谢 最小最大值如下所示: 延迟=(53.46(最小0,最大60),36.22(最小12,最大70),83(最小21,最大54),17(最小12,最大70)) 延迟=(38(最小2,最大70),44(最小12,最大87),53(最小9,最大60),10(最小11,最大77))Python 如何将错误条添加到分组条形图?,python,pandas,matplotlib,data-science,Python,Pandas,Matplotlib,Data Science,我想在我的绘图中添加错误栏,以便显示每个绘图的最小最大值。求求你,任何人都可以帮我。提前谢谢 最小最大值如下所示: 延迟=(53.46(最小0,最大60),36.22(最小12,最大70),83(最小21,最大54),17(最小12,最大70)) 延迟=(38(最小2,最大70),44(最小12,最大87),53(最小9,最大60),10(最小11,最大77)) 为了在条形图上正确绘制位置,必须提取每个条形图的面片数据 返回一个ndarray,每列返回一个。 在本图中,ax.patches包
- 为了在条形图上正确绘制位置,必须提取每个条形图的面片数据
- 返回一个
,每列返回一个。ndarray
- 在本图中,
包含8个对象,每个条的每个段对应一个对象。ax.patches
- 通过使用此对象的关联方法,可以提取
、高度
和宽度
位置,并使用这些位置绘制线x
- 通过使用此对象的关联方法,可以提取
- 在本图中,
- 条形图的
用于从高度
,dict
中提取正确的z
和min
值。max
- 不幸的是,补丁数据不包含条形标签(例如,
&Delay
)Latency
- 不幸的是,补丁数据不包含条形标签(例如,
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
#创建数据帧
延迟=(53.46,36.22,83,17)
延迟=(38,44,53,10)
索引=['T=0','T=26','T=50','T=900']
数据帧({'Delay':Delay,'Latency':Latency},index=index)
#有错误的口述
延迟错误={53.46:{min':0,'max':60},36.22:{'min':12,'max':70},83:{'min':21,'max':54},17:{'min':12,'max':70}
延迟错误={38:{'min':2,'max':70},44:{'min':12,'max':87},53:{'min':9,'max':60},10:{'min':11,'max':77}
#把它们结合起来;如果所有密钥都是唯一的
z={**Delay_error,**Latency_error}
#密谋
ax=df.plot.bar(rot=0)
plt.xlabel(“时间”)
plt.ylabel(“(%”)
plt.ylim(0,101)
对于ax.patches中的p:
x=p.获取x()#获取条的左下角x
w=p.获取宽度()#获取条的宽度
h=p.获取高度()#获取杆的高度
min_y=z[h]['min']#使用h从dict z获取min
max_y=z[h]['max']#使用h从dict z获得max
plt.v线(x+w/2,minu_-y,max_-y,color='k')画一条垂直线
- 如果两个
中存在非唯一值,因此无法组合,我们可以根据条形图顺序选择正确的dict
dict
- 首先打印单个标签的所有条形图。
- 在这种情况下,索引0-3是
条,4-7是Dalay
条Latency
- 在这种情况下,索引0-3是
(ax.patches):
打印(i,p)
x=p.get_x()
w=p.获取宽度()
h=p.获得高度()
如果i
非常感谢你,特伦顿!这就是我需要的。
import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame
from matplotlib.dates import date2num
import datetime
Delay = (53.46, 36.22, 83, 17)
Latency = (38, 44, 53, 10)
index = ['T=0', 'T=26', 'T=50','T=900']
df = pd.DataFrame({'Delay': Delay, 'Latency': Latency}, index=index)
ax = df.plot.bar(rot=0)
plt.xlabel('Time')
plt.ylabel('(%)')
plt.ylim(0, 101)
plt.savefig('TestX.png', dpi=300, bbox_inches='tight')
plt.show()