Matplotliib: создание нескольких столбчатых диаграмм для нескольких столбцов из кадра данных Pandas - PullRequest
0 голосов
/ 20 января 2020

У меня есть Pandas кадр данных с четырьмя столбцами; первый - это тип центра (ось x), и я хочу, чтобы остальные столбцы отображались рядом друг с другом для каждого типа центра по годам. Я не уверен, что я делаю неправильно, так как я получаю только значения для 2019, но я хочу, чтобы 2018 и 2017 тоже отображались.

enter image description here

enter image description here

df = c2

colors = ['steelblue','forestgreen','salmon']

ax = df.plot(kind='bar', color=colors, width=0.7, align='center', stacked=False, rot=60, figsize=(12,6), legend=False, zorder=3)


from matplotlib.ticker import FuncFormatter, MaxNLocator
ax.yaxis.set_major_locator(MaxNLocator(integer=True))

plt.grid(zorder=0)
#plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.2))
plt.xlabel("Type of centre")
plt.ylabel("Number")
plt.title("")

ax.spines['bottom'].set_color('gainsboro')
ax.spines['top'].set_color('white') 
ax.spines['right'].set_color('white')
ax.spines['left'].set_color('gainsboro')

ax.yaxis.label.set_color('black')
ax.xaxis.label.set_color('black')

ax.title.set_color('black')

ax.patch.set_facecolor('white')

plt.savefig('images/figure1.png', dpi=300, facecolor=ax.get_facecolor(), transparent=True,  bbox_inches='tight', pad_inches=0.1)
plt.show()
data.shape

1 Ответ

0 голосов
/ 20 января 2020

Причина, по которой ваша фотография содержит только один столбец, df = c2. Очевидно, c2 содержит только один из столбцов вашего DataFrame. Удалите эту инструкцию.

В качестве теста я выполнил только:

df.plot.bar(width=0.7, rot=60, figsize=(12,6), legend=False);

, получив следующую правильную картинку, с 5 наборами столбцов по 3 столбца каждый:

enter image description here

Начните с только что вышеприведенной инструкции, а затем решите, какая оставшаяся инструкция должна фактически выполняться.

По моему мнению, пропущенные параметры не нужны, потому что они передать соответствующие значения по умолчанию.

Обратите внимание также на точку с запятой в конце. Работая под Jupyter Notebook , требуется визуализировать только картинку. В противном случае (без завершающей точки с запятой), напечатано поверх изображения.

Возможно, вам также следует сбросить legend = False (оставьте значение по умолчанию True и напечатайте легенду). В противном случае неясно, к каким конкретно столбцам относятся.

...