我创建了一个正态分布图,如下所示:
fig, ax = plt.subplots()
ax.set_title('Плотнось распределения вероятности')
ax.set_xlabel('x')
ax.set_ylabel('f(x)')
x = np.linspace(148, 200, 100) # X от 148 до 200
y = (1 / (5 * math.sqrt(2*math.pi))) * np.exp((-(x-178)**2) / (2*5**2))
ax.plot(x, y)
plt.show()
但我还需要在图形区域内添加垂直线,给内部线段着色,并添加标记,如在picture on axis = 0中。
在python中如何使用matplotlib来实现呢?
我试着使用plt.axvline
,但是垂直线超出了我的主图:
plt.axvline(x = 178, color = 'g', label = 'axvline - full height')
plt.axvline(x = 178+5, color = 'b', label = 'axvline - full height')
plt.axvline(x = 178-5, color = 'b', label = 'axvline - full height')
plt.axvline(x = 178+5*2, color = 'r', label = 'axvline - full height')
plt.axvline(x = 178-5*2, color = 'r', label = 'axvline - full height')
1条答案
按热度按时间bqucvtff1#
行版本可以使用
vlines
实现,但请注意,使用fill_between
可以更好地再现您的参考图。线路版本
使用支持
ymin
和ymax
边界的vlines
代替axvline
。把你的
y
变成一个lambdaf(x, mu, sd)
并用它来定义ymax
的边界:阴影版本
使用
fill_between
可以更好地重新创建示例图形。使用where
参数定义着色边界:要标记区域百分比,请在有边界区域的中点处添加
text
对象: