Я только начинаю работать с Matplotlib и хочу создать простую гистограмму с суммированными данными (я использую Jupyter Notebooks). Данные следующие:
Из фрейма данных Pandas:
by_gender = df.groupby(["Gender"])["Value"].mean().reset_index()
Результат, по которому я хочу создать гистограмму:
Gender Value
0 F 22.936350
1 M 15.897205
Код выглядит следующим образом:
import matplotlib.pyplot as plt
x = by_gender["Gender"]
y = by_gender["Value"]
plt.bar(x, y, label = "Proportion", color = "#468499")
plt.title("% respondents accepting violence against women, by gender")
plt.xlabel("Gender")
plt.ylabel("Proportion %")
plt.legend()
plt.show()
Это дает мне сюжет, без проблем. Но теперь я хочу изменить крестики с «F» и «M» на «Female» и «Male».
Я МНОГО гуглил и перепробовал все функции, которые нашел, в том числе:
plt.xticks()
plt.set_ticks()
plt.set_xticks()
plt.set_xticklabels()
... и это дает мне ту же ошибку, несмотря ни на что:
AttributeError: module 'matplotlib.pyplot' has no attribute 'set_xticks'
(замените «set_xticks» на все, что я предложил выше)
Я попытался изменить интервалы делений оси Y просто для удовольствия, и это дало мне ту же ошибку. Что-то не так с тем, как я создаю сюжет? Я также пытался создать подзаголовок, создать переменную fig... и ничего не помогает.
Спасибо за помощь.
Вместо этого вы должны манипулировать осью, как в:
fig, ax = plt.subplots()
ax.bar(x, y, label = "Proportion", color = "#468499")
ax.set_title("% respondents accepting violence against women, by gender")
ax.set_xlabel("Gender")
ax.set_ylabel("Proportion %")
ax.legend()
ax.set_xticklabels(['Female', 'Male'])
plt.show()
Я попытался добавить первую строку, как вы предложили, и это сработало! Однако, когда я попытался внести другие изменения (добавив ax. к другим командам), он начал выдавать ошибки. Единственный, который я держу с топором. был ax.set_xticklabels(). Не уверен, почему. В любом случае! Моя проблема решена, так что СПАСИБО!
@Daltoniana, я рад слышать, что это сработало! Обратите внимание, что кроме добавления файла ax. для других команд вы также должны установить " set_" (например, plt.title стал ax.set_title). Использование объекта оси для всех правок на диаграмме сделает код более согласованным, что означает более качественный код. Кроме того, было бы здорово, если бы вы могли сделать мой ответ ответом, так как это даст мне несколько очков, которые откроют некоторые функции в Stackoverflow.
Теперь я понимаю. Спасибо! Да, я сделаю это.
Я продолжаю получать ту же ошибку: с