Я создал столбчатую диаграмму в виде панд, и первый и последний столбцы находятся по краям графика. Они обрезаны.
График, который я хочу получить, представляет собой столбчатую диаграмму с накоплением и линейную диаграмму с осью 2 y. Значения слоев слоев должны отображаться в слое.
Я создал pd.DataFrame
, который содержит следующее:
1.0 1.3 1.7 2.0 2.3 2.7 3.0 3.3 3.7 4.0 5.0
SS 15 2.0 0.0 1.0 1.0 4.0 8.0 5.0 6.0 6.0 10.0 19.0
SS 16 1.0 1.0 5.0 2.0 11.0 16.0 11.0 8.0 7.0 6.0 12.0
SS 17 1.0 5.0 3.0 3.0 5.0 6.0 5.0 9.0 8.0 9.0 13.0
Каждая строка (SS 15
- SS 17
)должен быть один столбец с накоплением, где значение - один слой столбца. Линейная диаграмма содержит только 3 точки, которые должны быть соединены линией.
Код, который я использую для построения графика:
fig, ax1 = plt.subplots()
ax1 = df.plot(kind='bar',
stacked=True,
figsize=(20,15),
fontsize=20,
grid=True,
rot=45,
align='center',
edgecolor='#000000',
colormap='Paired')
ax2 = ax1.twinx()
ax1.set_xlabel('X-LABEL', fontsize=25)
ax1.set_ylabel('1st Y-LABLE', fontsize=25)
ax1.set_title(name, fontsize=35)
ax1.legend(fontsize=15, loc='upper left')
ax1.grid(True, axis='y')
df2 = pd.DataFrame(medi) #medi is just a dict with 3 pais
df2.plot(ax=ax2,
color='red',
marker='o',
linewidth='2',
fontsize=20)
ax2.legend(["2nd LEGEND"], fontsize=15, loc='upper right')
ax2.set_ylim(1,5)
ax2.set_ylabel('2nd Y-LABEL', fontsize=25)
ax2.grid(True,axis='y')
В результате:
![enter image description here](https://i.stack.imgur.com/imobS.png)
Как видите, первый и последний столбец находятся прямо по краям графика и обрезаются. Я попытался переопределить xticks
, но это не сработало.
Вторая проблема, которую я имею, состоит в отображении значений в барах. Я нашел решение здесь , но оно приводит к ошибке:
AttributeError: 'NoneType' object has no attribute 'update'