Как добавить заголовок, метку оси x и метку оси y при использовании .subplot в matplotlib? - PullRequest
1 голос
/ 27 мая 2020

У меня есть датафрейм под названием for_plot, и я использую следующий фрагмент кода для создания гистограммы:

import matlplotlib.pyplot as plt
f, ax = plt.subplots(1,1,figsize=(10,8))
x_1 = for_plot['res_code'] - 0.2
x_2 = for_plot['res_code']
pre = for_plot['n_indnota_pre']
post = for_plot['n_indnota_post']
ax.bar(x_1,pre, width = 0.2, color = 'red')
ax.bar(x_2,post, width = 0.2, color = 'green')
ax.set_xticks([0.9,1.9,2.9])
ax.set_xticklabels(['GEN','ST','SC'])
ax.legend(['pre_nota', 'post_nota'],loc = 1)

ax.xlabel('Constituency Type')
ax.ylabel('No of Independent Candidates')
ax.title('Average No Of Independent Candidates by Constituency Type')

plt.show()

Я понимаю, как работать с matplotlib, но у меня есть несколько вопросов по нюансам:

  1. Что делает f в строке 1 сниппета? Что обозначают f и ax в этом фрагменте?
  2. Я не могу добавить метки осей и заголовок диаграммы (как в последних 4 строках фрагмента), используя ax.xlabel('Constituency Type'), но при рисовании других фигур, если я не назову subplot() в первая строка и используйте plt.xlabel('Constituency Type'), он работает абсолютно нормально. Почему это так?

Я получаю следующую ошибку:

AttributeError: 'AxesSubplot' object has no attribute 'xlabel'

Изменить 1:

f.xlabel('Constituency Type')
f.ylabel('No of Independent Candidates')
f.title('Average No Of Independent Candidates by Constituency Type')

Тоже не работает.

AttributeError:'Figure' object has no attribute 'xlabel'

1 Ответ

1 голос
/ 27 мая 2020

Надеюсь, что ответ ниже.

  1. f представляют Figure объект, который является контейнером верхнего уровня для всех элементов графика, а ax - это объект или массив Axes объектов (в вашем случае это единственный объект)

  2. Вы можете использовать приведенный ниже код для установки метки и заголовка подзаголовков: ax.set_xlabel('common xlabel') ax.set_ylabel('common ylabel') ax.set_title('ax title')

...