如何在matplotlib pyplot中保留不同的x轴值

时间:2018-01-15 20:30:34

标签: 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 ......

1 个答案:

答案 0 :(得分:1)

问题中的数据表示似乎不太合理。我希望在相同的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