Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将错误条添加到分组条形图?_Python_Pandas_Matplotlib_Data Science - Fatal编程技术网

Python 如何将错误条添加到分组条形图?

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包

我想在我的绘图中添加错误栏,以便显示每个绘图的最小最大值。求求你,任何人都可以帮我。提前谢谢

最小最大值如下所示:

延迟=(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
      包含8个对象,每个条的每个段对应一个对象。
      • 通过使用此对象的关联方法,可以提取
        高度
        宽度
        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是
      Dalay
      条,4-7是
      Latency
枚举中i,p的
(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()