Как добавить процент в горизонтальной гистограмме? - PullRequest
1 голос
/ 24 июня 2019

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

data = pandas.read_csv('C:/py/matplotlib/02-BarCharts/data.csv')
responders_id = data['Responder_id']
langs_worked_with = data['LanguagesWorkedWith']

languages = Counter()
for reponse in langs_worked_with:
    languages.update(reponse.split(";"))

langs = []
langs_users_num = []

for language in languages.most_common(15):
    langs.append(language[0])
    langs_users_num.append(language[1])

langs.reverse()
langs_users_num.reverse()

plt.barh(langs, langs_users_num)
plt.tight_layout()
plt.show()

и после выполнения кода выше я получаю это:

enter image description here

данные, которые представляют эту диаграмму, анализируются из stackoverflow, и та же самая диаграмма в stackoverflow выглядит следующим образом.Как мне изменить приведенный выше код, чтобы добавить процент, как показано ниже.

enter image description here

Пожалуйста, помогите мне с этим.Спасибо

1 Ответ

1 голос
/ 24 июня 2019

Вот один из способов сделать это. Я выбрал некоторые образцы данных. Идея

  • Создайте новые метки y-tick, добавив название языка и процент
  • Назначьте эти измененные метки на оси Y
  • Скрыть рамку и ось X фигуры вместе с отметками оси Y

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

total = 90000
langs = ['C', 'C++', 'Java', 'Python']
langs_users_num = np.array([32000, 40000, 50000, 60000])

percent = langs_users_num/total*100

new_labels = [i+'  {:.2f}%'.format(j) for i, j in zip(langs, percent)]

plt.barh(langs, langs_users_num, color='lightskyblue', edgecolor='blue')
plt.yticks(range(len(langs)), new_labels)
plt.tight_layout()

for spine in ax.spines.values():
    spine.set_visible(False)

ax.axes.get_xaxis().set_visible(False)
ax.tick_params(axis="y", left=False)
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...