Я пытаюсь построить линейный график, используя Dataframe. После этого я вижу три точки данных на графике для одной строки данных.
fig = plt.figure(figsize=(8, 4.6), dpi=100)
ax = fig.add_subplot(111)
ax.plot(df[column], df['Value'])
Когда я использую гистограмму dataframe, я правильно вижу график.
df.plot(x=column, ax=ax, kind='bar')
Как это исправить?
почему бы не использовать df.plot(x=column, ax=ax, kind='line')
?
Линейный график @tmdavison pandas не поддерживает строковые значения для xticks github.com/pandas-dev/pandas/issues/22334, поэтому я использую pyplot
@ImportanceOfBeingErnest Я использовал столбец для ссылки на любой общий столбец. Теперь, что касается рассматриваемой проблемы, это похоже на ошибку с pyplot
. Не могли бы вы заглянуть на github.com/matplotlib/matplotlib/issues/13905 и проверить, можете ли вы мне помочь?
Я комментировал на гитхабе. В этом файле test.txt у вас есть повторяющееся значение в столбце GNRL_Scenario
: V2017AC
, поэтому строка прыгает вперед и назад.
Да, большое спасибо, что указали на это! Виноват!
@tmdavison В таком случае, почему в сюжете панд нет двух «V2017AC»?
I думать pandas рассматривает каждое значение в данных x как отдельный индекс, даже если оно повторяется, в то время как matplotlib будет группировать повторяющиеся значения вместе. Но я не очень хорошо знаком с пандами, поэтому кто-то другой, вероятно, сможет объяснить лучше.
Возможно, вы правы, я использовал метод drop_duplicates
, чтобы удалить дубликат V2017AC
, и теперь все работает нормально. Спасибо еще раз!
Отбросьте повторяющееся значение в столбце «GNRL_Scenario» и постройте график.
fig = plt.figure(figsize=(8, 4.6), dpi=100)
ax = fig.add_subplot(111)
df = df.drop_duplicates(df[column]) #for dropping duplicate values in this column
ax.plot(df[column], df['Value'])
Я не знаю, что такое
column
, но я думаю, чтоax.plot(df[column].values, df['Value'].values)
должно работать правильно. Если вы можете создать минимальный воспроизводимый пример (т. е. минимальный исполняемый код), из этого можно составить отчет об ошибке.