#python #pandas #matplotlib
#python #панды #matplotlib
Вопрос:
Я сгруппировал фрейм данных pandas:
DailyTests pos_DailyTests percentOfPositive
Week
44 1079 45 4.00
45 14593 706 4.64
46 18290 1003 5.14
47 19271 1237 6.07
48 12258 938 7.04
Я хочу рисовать графики на основе этих данных. «Неделя» — это ось x, а первые два столбца представляют собой столбчатые диаграммы с накоплением, а третий должен быть линейным графиком. Но строка не отображается
Мой код:
fig , ax1 = plt.subplots()
ax2 = ax1.twinx()
data_con2.plot(kind='bar', stacked = True, ax=ax1, y = ['DailyTests','pos_DailyTests'])
data_con2.plot(kind='line', ax=ax2, y = 'percentOfPositive', color="red")
ax1.set_ylabel('Tests in day')
ax2.set_ylabel('percent of positives')
Пример графика выглядит следующим:
Ответ №1:
Есть причина, по которой ваш код не работает, потому что kind = ‘bar’ и ‘line’ по-разному отображают ось x. Простой способ решить эту проблему — преобразовать week в строковый тип. Еще одна вещь, которую трудно увидеть на линейном графике, поскольку «Процент положительного» имеет низкие значения по сравнению с двумя другими столбцами, но он есть.
df['Week'] = df['Week'].astype("string")
ax = df[['Week', 'DailyTests', 'pos_DailyTests']].plot(x='Week', kind='bar', stacked=True )
df[['Week', 'percentOfPositive']].plot(x='Week', color ='black' ,marker='o',ax=ax)
plt.show()