python-3.x - 如何在 matplotlib pyplot 中保持 x 轴的不同值

标签 python-3.x matplotlib

我有一个包含 2000 个值的列表,这些值的年份范围是 2006-2017。我想在绘图的 x 轴上使用这个值。如何保留不同的年份值并删除重复项。这是一个例子:

dates = ['2006', '2006', '2006', '2007', '2007', '2007', '2008', '2008', '2008']
x = np.arange(len(dates))
plt.xticks(x, dates)
y = [0.523,0.512,0.599,0.595,0.555,0.66,0.99,0.52,0.52]

plt.plot(y)
plt.axhline(0, color='black')
plt.legend(['ORG'], loc='best', prop={'size': 15})

plt.show()

在图中,如何删除重复值并仅保留每个不同年份的一个值?

enter image description here

编辑: “日期”列表中出现的年份是从日期中提取的。即2006-01-25、2006-01-26、2006-01-27、2006-01-28 ...

最佳答案

问题中的数据表示似乎不太合理。我希望在相同的 x 轴位置上有相同的年份,而不是分布在其中的几个位置上。因此,根据日期绘制数据将是一个有用的选择。

import matplotlib.pyplot as plt

dates = ['2006', '2006', '2006', '2007', '2007', '2007', '2008', '2008', '2008']

y = [0.523,0.512,0.599,0.595,0.555,0.66,0.99,0.52,0.52]

plt.plot(dates, y, marker="o", ls="")

plt.axhline(0, color='black')
plt.legend(['ORG'], loc='best', prop={'size': 15})

plt.show()

enter image description here

如果日期是真实日期,请将它们保留为日期。

import datetime
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(3)

start = datetime.datetime(2006,1,1)
dates = [start + datetime.timedelta(days=x) for x in range(0, 2000)]

y = np.cumsum(np.random.randn(2000))+70

plt.plot(dates, y)

plt.axhline(0, color='black')
plt.legend(['ORG'], loc='best', prop={'size': 15})

plt.show()

enter image description here

关于python-3.x - 如何在 matplotlib pyplot 中保持 x 轴的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48270250/

相关文章:

python - Pandas 数据帧,ValueError : shape mismatch: objects cannot be broadcast to a single shape

python - python数据集上的Groupby函数

python - 如何在 matplotlib 中为 pyplot.show() 设置超时?

python - 使用 python 和 matplotlib 获取箱线图中使用的值

python - 罗马到整数 python

python - 两种颜色之间的 matplotlib 颜色渐变

python - 让图例对应于 Pandas/PyPlot 中的 y 值

python - 程序给出了意外的输出——为什么?

python - 创建并运行 python 文件

python - 使用自定义异常或使用ValueError哪个更好?