Python df.plot:如何使x轴从数据帧的第一行开始

Python df.plot:如何使x轴从数据帧的第一行开始,python,dataframe,Python,Dataframe,我有一个12行2列的数据框(月和y值)。我使用了numpy.roll,所以数据帧中的第一行是June。换言之: 当我将这个数据帧绘制为条形图时,我得到了我想要的,其中x轴从“6”开始,在“5”结束: monthlyAvg.plot(x='Month', y='NDVI',kind = 'bar',ylim = (0.45,0.65)) 但是,如果我将种类更改为折线图,x轴从1开始,有一条长线从1延伸到12: 如何更改轴,使其从6开始,如条形图?这是因为条形图将x轴值视为分类变量,并按输入

我有一个12行2列的数据框(月和y值)。我使用了numpy.roll,所以数据帧中的第一行是June。换言之:

当我将这个数据帧绘制为条形图时,我得到了我想要的,其中x轴从“6”开始,在“5”结束:

monthlyAvg.plot(x='Month', y='NDVI',kind = 'bar',ylim = (0.45,0.65))

但是,如果我将种类更改为折线图,x轴从1开始,有一条长线从1延伸到12:


如何更改轴,使其从6开始,如条形图?

这是因为条形图将x轴值视为分类变量,并按输入顺序保留,而线形图将x轴值视为数字并相应地进行排序

要使用折线图获得所需的输出,必须将x轴月份数转换为字符串,以便将其视为分类变量。以下是如何:

import matplotlib.pyplot as plt
monthlyAvg = pd.DataFrame({'Month':[6,7,8,9,10,11,12,1,2,3,4,5], 'NDVI':[0.59,0.56,0.53,0.54,0.55,0.56,0.55,0.59,0.59,0.57,0.59,0.60]})

plt.plot(monthlyAvg['Month'].astype('str'), monthlyAvg['NDVI'])
plt.ylim(0.45,0.65)
plt.xlabel('Month')
plt.ylabel('NDVI')
plt.show()

你确定吗?对于条形图,x轴可以是任何名称,因此它以数据序列的方式开始(即6、.12,1,3,4,5),对于折线图,它更像一个时间序列,因此1应该在6之前,因此它对月份进行排序,以便从1到12开始。我希望这是有意义的。