我在Matplotlib中使用step
和fill_between
函数,希望步骤以x点为中心。
代码
import matplotlib.pyplot as plt
import numpy as np
xpoints=np.array([1,2,3,4])
ypoints=np.array([4,6,5,2])
ypoints_std=np.array([0.5,0.3,0.4,0.2])
plt.step(xpoints,ypoints,where='mid')
plt.fill_between(xpoints,ypoints+ypoints_std,ypoints-ypoints_std,step='mid',alpha=0.2)
plt.show()
当前绘图:
此时,以1为中心的台阶仅为0.5宽,而以2为中心的台阶为1宽。
通缉
实际上我希望所有的步和填充的步宽都是1。这应该包括第一步和最后一步,这样它们相对于当前的图是扩展的。
当然,我可以填充数据,但在实际代码中这会变得很混乱。
问题
1.有没有办法让第一步和最后一步的大小和中间的一样?
1.或者有没有一种方法可以使用直方图生成类似的图形?即显示以图形的y位置为中心的条的全宽大小的误差?
2条答案
按热度按时间vhmi4jdf1#
使用某一高度的条形图
误差带可通过底部为
ypoints - ypoints_std
、高度为2*ypoints_std
的条形图显示。使用零高度条形图
如果只有水平线,可以用零高度的条形图替换第一个条形图。添加相同颜色的原始
plt.step
将创建连接线扩展点
您可以添加虚拟值来重复第一个点和最后一个点,然后使用
plt.xlim(...)
将绘图限制在0.5
和4.5
之间。oug3syen2#
您可以使用
pyplot.margins(0)
,至少让您的图形在所有4个侧面(左/右和底/顶)上接触轴。对x和y使用两个位置参数,或者使用一个位置参数同时应用于这两个位置参数:
输出: