我想修改我的绘图代码,以便显示下图所示的最小/最大条:
我的代码是:
from datetime import datetime, timedelta
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("white")
sns.set_style('darkgrid',{"axes.facecolor": ".92"}) # (1)
sns.set_context('notebook')
Delay = ['S1', 'S2', 'S3', 'S4']
Time = [87, 66, 90, 55]
df = pd.DataFrame({'Delay':Delay,'Time':Time})
print("Accuracy")
display(df) # in jupyter
fig, ax = plt.subplots(figsize = (8,6))
x = Delay
y = Time
plt.xlabel("Delay", size=14)
plt.ylim(-0.3, 100)
width = 0.1
for i, j in zip(x,y):
ax.bar(i,j, edgecolor = "black",
error_kw=dict(lw=1, capsize=1, capthick=1))
ax.set(ylabel = 'Accuracy')
from matplotlib import ticker
ax.yaxis.set_major_locator(ticker.MultipleLocator(10))
plt.savefig("Try.png", dpi=300, bbox_inches='tight')
代码生成此图:
我要添加的最小值/最大值适用于:
87 (60-90)
66 (40-70)
90 (80-93)
55 (23-60)
先谢谢你的帮助。
3条答案
按热度按时间ffdz8vbo1#
seaborn.barplot
和ax.bar
的示例。matplotlib.pyplot.errorbar
python 3.11
、pandas 1.5.3
、matplotlib 3.7.0
、seaborn 0.12.2
中进行测试**∮ ∮ ∮ ∮ ∮
seaborn.barplot
将自动添加误差线,如链接中的示例所示。但是,这是特定于使用许多数据点的。在这种情况下,将一个值指定为误差,而不是根据数据确定误差。capsize
参数,以便在误差线的顶部和底部添加水平线。yerr
参数可用于显式地向API提供错误。yerr
要求值与条形的顶部相关S1
为87,min
为60,max
为90。因此,ymin
为27(87 - 60),ymax
为3(90 - 87)。seaborn.barplot
capsize
参数似乎不适用于yerr
,因此必须设置matplotlib
'errorbar.capsize'
rcParmas
。∮ ∮ ∮ ∮ ∮
一米二十四分一秒
tzdcorbm2#
你可以直接使用
plt.bar
的yerr
参数,以@特伦顿McKinney的代码为例:vybvopom3#
下面是一个使用
yerr
和numpy
的解决方案,它比@gepcel的样板代码少。