#python #matplotlib
#python #matplotlib
Вопрос:
Я использую matplotlib для рисования горизонтальных графиков. Я хочу добавить сетки и изменить размер графика, чтобы избежать превышения метки. Мой код выглядит следующим образом:
baseline = [0.5745,0.5282,0.4923,0.5077,0.5487,0.5385,0.5231]
low = [0.2653,0.3878,0.3673,0.5510,0.2245,0.5714,0.3265]
high = [0.5102,0.5102,0.3673,0.3877,0.5306,0.4286,0.49]
index = ['Bagging','Decision tree','Gussian Naive Bayes','Logistic regression','Random forest','SVM','k-NN']
df = pd.DataFrame({'Baseline': baseline,'ttd lower than median': low,'ttd higher than median': high}, index=index)
plt.figure(figsize = (6,12))
ax.yaxis.grid(color='gray', linestyle='dashed')
ax = df.plot.barh()
и результирующий график выглядит следующим образом:
Однако сетка не отображалась, и «plt.figure(figsize = (6,12))», похоже, не сработал. Как я могу это исправить? Заранее спасибо!
Ответ №1:
- Укажите местоположение легенды с помощью
plt.legend
- Увеличение размера рисунка не обязательно улучшит соответствие легенды
- Показать сетку с помощью
plt.grid()
plt.figure(figsize = (6,12))
не сработало, потому что график фрейма данных не использовал эти оси.
fig, ax = plt.subplots(figsize=(7, 12))
ax.yaxis.grid(color='gray', linestyle='dashed')
df.plot.barh(ax=ax) # ax=ax lets the dataframe plot use the subplot axes
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left') # place the legend outside
plt.grid() # show the grid
- В качестве альтернативы используйте
df.plot.barh(ax=ax, figsize=(7, 12))
p = df.plot.barh(figsize=(7, 8))
p.yaxis.grid(color='gray', linestyle='dashed')
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')