Добавить сетку и изменить размер в barh python

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

введите описание изображения здесь