Изменить имя в x-тиках (строках) с помощью Matplotlib

Я только начинаю работать с 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... и ничего не помогает.

Спасибо за помощь.

Я продолжаю получать ту же ошибку: с

Daltoniana 15.12.2020 17:03
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
499
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо этого вы должны манипулировать осью, как в:

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 15.12.2020 17:07

@Daltoniana, я рад слышать, что это сработало! Обратите внимание, что кроме добавления файла ax. для других команд вы также должны установить " set_" (например, plt.title стал ax.set_title). Использование объекта оси для всех правок на диаграмме сделает код более согласованным, что означает более качественный код. Кроме того, было бы здорово, если бы вы могли сделать мой ответ ответом, так как это даст мне несколько очков, которые откроют некоторые функции в Stackoverflow.

Bernardo Trindade 15.12.2020 17:51

Теперь я понимаю. Спасибо! Да, я сделаю это.

Daltoniana 15.12.2020 19:42

Другие вопросы по теме