pyplot step函数不会为第一个/最后一个点绘制一个级别

时间:2017-11-28 18:25:08

标签: python matplotlib plot

我正在尝试为输入数据中的每个点创建一个具有水平步长或水平的步骤图。无论您是为where参数指定“pre”还是“post”,pyplot.step都不会这样做。如果指定“pre”,它将从第一个点绘制一条垂直线,但该值没有任何步骤。如果指定“post”,则会发生相反的情况。请参阅下面的代码以获得此演示。

from matplotlib import pyplot as plt

#Series to plot
years = [2008, 2009, 2010, 2011, 2012, 2013]
data = [125, 78, 113, 56, 98, 140]

#Plot series
fig, ax = plt.subplots(figsize=(6,4))
ax.step(years, data, where='post')
plt.show()

Output of above

对于上下文,应用程序是时间序列图,显示对应于每个y值的时间段的水平级别。我有一个数据集,其中每个点代表一年的汇总统计量,因此每个y值适用于整年,而不是单个时间点。因此,步骤图似乎是一种直观的方式来显示这一点。我意识到条形图或直方图可能会对我的问题提供更多控制,但是,由于我有连续数据系列,因此最好使用折线图。

有没有办法改变这种行为,以便为所有点绘制一条水平线,包括第一个和最后一个点?

1 个答案:

答案 0 :(得分:0)

这里的问题是pyplot不知道您的“下一个” x值在哪里。不知道延伸水平线到哪一点。 因此,您需要手动在结尾(后)或开头(前)添加另一个x值,然后复制最后一个/第一个y值。