#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()