Python df.график: Как сделать так, чтобы ось x начиналась с первой строки кадра данных

#python #dataframe

Вопрос:

У меня есть фрейм данных из 12 строк, 2 столбцов (месяц и значение y). Я использовал numpy.roll, поэтому первая строка в кадре данных-июнь. Другими словами:

Фрейм данных

Когда я строю этот кадр данных в виде гистограммы, я получаю то, что хочу, где ось x начинается с » 6 «и заканчивается на «5»:

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

Гистограмма

Однако, если я изменю вид на линейный график, ось x начнется с 1, и на графике появится длинная линия, простирающаяся от 1 до 12 :

Линейный график

Как я могу изменить ось так, чтобы она начиналась с 6, как на гистограмме?

Комментарии:

1. вы уверены в этом? для гистограммы ось x может иметь любое имя, поэтому она начиналась с того, как была последовательность данных(т. е. 6,.12,1,3,4,5), для линейного графика это больше похоже на временной ряд, поэтому 1 должен предшествовать 6, поэтому он отсортирован по месяцам, поэтому он начинается с 1 до 12. я надеюсь, что это имеет смысл.

Ответ №1:

Это связано с тем, что столбчатая диаграмма рассматривает значения по оси 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()
 

введите описание изображения здесь