Отображение значений по оси x на горизонтальной гистограмме matplotlib - PullRequest
0 голосов
/ 29 октября 2019

Я хотел бы использовать matplotlib для отображения горизонтальной гистограммы, аналогичной приведенной ниже:

enter image description here

Приведенный ниже код отлично работает для вертикальных гистограмм:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame({'A':['Male'] * 10 + ['Female'] * 5})
plt.hist(df['A'])
plt.show()

enter image description here

Параметр orientation='horizontal' делает столбцы горизонтальными, но сжимает горизонтальную шкалу.

plt.hist(df['A'],orientation='horizontal')

enter image description here

Следующее работает, но похоже на большую работу. Есть ли лучший способ?

fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.set_xticks([0,5,10])
ax.set_xticklabels([0,5,10])
ax.set_yticks([0,1])
ax.set_yticklabels(['Male','Female'])
df['A'].hist(ax=ax,orientation='horizontal')
fig.tight_layout()  # Improves appearance a bit.
plt.show()

enter image description here

1 Ответ

1 голос
/ 29 октября 2019

plt.hist(df['A']) работает только по стечению обстоятельств. Я бы порекомендовал не использовать plt.hist для нечисловых или категориальных графиков - он не предназначен для этого.

Кроме того, часто рекомендуется отделять агрегацию данных от визуализации. Так, используя черчение панд,

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'A':['Male'] * 10 + ['Female'] * 5})
df["A"].value_counts().plot.barh()
plt.show()

Или используя черчение матплотлиб,

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'A':['Male'] * 10 + ['Female'] * 5})
counts = df["A"].value_counts()
plt.barh(counts.index, counts)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...