.set_xticks
- это, на мой взгляд, самый читаемый способ установки значений, которые вы видите на оси х.
import pandas as pd
import matplotlib.pyplot as plt
data =[ {"Date":"2015-05-10", "Avg":34}, {"Date":"2016-05-10", "Avg":32},
{"Date":"2017-05-10", "Avg":31}, {"Date":"2015-05-10", "Avg":31},
{"Date":"2015-05-10", "Avg":26}, {"Date":"2015-05-10", "Avg":29}]
df = pd.DataFrame(data)
ax = plt.subplot(111)
ax.plot(df['Date'].dt.year, df['Avg'], color='r')
ax.set_xticks([2015, 2016, 2017])
plt.show()
Также похоже, что у вас проблемы, потому что у вас есть несколько значений для каждого года, поэтому он отображает вертикальные линии, которые вы видите. Совокупное значение, использующее функции pandas .groupby
, похоже на то, что вы хотите.
df["Year"] = df["Date"].dt.year
df = df.groupby("Year").mean().reset_index()
ax = plt.subplot(211)
ax.plot(df.Year, df['Avg'], color='r')
ax.set_xticks([2015, 2016, 2017])
plt.show()