为什么只有少数 x 轴标签在 Matplotlib 中绘制?

Why are only a few of my x axis labels plotting in Matplotlib?

我正在尝试制作折线图,但并未显示所有 x 轴标签。所有数据都在显示,只是标签没有显示。我希望标签从 4 月 4 日到 6 月 27 日。不过,这里它只显示到 5 月 30 日。下面是我的代码。我用来绘制这个以及 x 轴的数据形成一个 csv 文件。

#CSV data
df = pd.read_csv(r'C:\Downloads\Planting_Corn.csv', index_col=0)

#plot set up
fig = plt.figure(figsize=(10, 6))

# Creating subplot/axes
ax = fig.add_subplot(111)

#plotting each year
df.y_2000.plot(color='pink',lw=1.3, label='2000')
df.y_2001.plot(color='pink',lw=1.3, linestyle='--', label='2001')
df.y_2002.plot(color='magenta',lw=1.3, label='2002')
df.y_2003.plot(color='magenta',lw=1.3, linestyle='--', label='2003')
df.y_2004.plot(color='purple',lw=1.3, label='2004')
df.y_2005.plot(color='purple',lw=1.3, linestyle='--', label='2005')
df.y_2006.plot(color='deepskyblue',lw=1.3, label='2006')
df.y_2007.plot(color='deepskyblue',lw=1.3, linestyle='--', label='2007')
df.y_2008.plot(color='blue',lw=1.3, label='2008')
df.y_2009.plot(color='blue',lw=1.3, linestyle='--', label='2009')
df.y_2010.plot(color='navy',lw=1.3, label='2010')
df.y_2011.plot(color='navy',lw=1.3, linestyle='--', label='2011')
df.y_2012.plot(color='cyan',lw=1.3, label='2012')
df.y_2013.plot(color='cyan',lw=1.3, linestyle='--', label='2013')
df.y_2014.plot(color='limegreen',lw=1.3, label='2014')
df.y_2015.plot(color='limegreen',lw=1.3, linestyle='--', label='2015')
df.y_2016.plot(color='green',lw=1.3, label='2016')
df.y_2017.plot(color='green',lw=1.3, linestyle='--', label='2017')
df.y_2018.plot(color='orange',lw=1.3, label='2018')
df.y_2019.plot(color='orange',lw=1.3, linestyle='--', label='2019')
df.y_2020.plot(color='red',lw=1.3, label='2020')
df.y_2021.plot(color='red',lw=1.3, linestyle='--', label='2021')
df.y_2022.plot(color='black',lw=2, label='2022', zorder=25)
df.av_20.plot(color='darkgray',lw=2, linestyle='--', label='5-yr')
df.av_5.plot(color='gray',lw=2, linestyle='--', label='20-yr')

#Table info

ax.set_title('U.S. Corn Planting Progress', fontsize=18, fontweight='bold')
ax.set_ylim([0, 100])
ax.set_ylabel('Progress (%)', fontsize=15)
ax.set_xlabel('Date', fontsize=15)
plt.xticks(fontsize=13, rotation=25)
plt.yticks(fontsize=13)


#legend
ax.legend(frameon=False, loc='lower center', bbox_to_anchor=(.5, -.45), ncol=5, fontsize=11)

plt.grid(True, color='lightgray')
plt.show()

我已经尝试过其他解决方案,例如手动设置我的标签,但我想直接从 csv 文件中提取它们。


您可以使用 xticks 参数到 plot 来设置您想要的刻度数,如下所示:

df.plot(lw=1.3, label='2020', xticks=np.arange(N_weeks))

但这会使您的情节变得非常密集且难以阅读。这可以通过旋转 xticks 使其垂直显示来缓解。

查看带有模拟数据的实时实现here