Раскраска гистограммы в зависимости от значения столбца в кадре данных - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть следующий код, работающий для отображения гистограммы количества преступлений определенного типа (например, наркотики, батарея и т. Д. c.) Для данного района в Чика go.

df = pd.DataFrame(columns = ["ward", "count", "primary_type"])

for name, group in groups:

  df = df.append({
                  "ward" : name,
                  "count": group['Primary Type'].value_counts().nlargest(n=1)[0],
                  "primary_type":(group['Primary Type'].value_counts().nlargest(n=1).keys()[0]
                                  )}, ignore_index=True)



df = df.set_index("ward")

ax = df.plot.bar(rot=0, width=0.75, figsize=(10, 5))
ax.set_xlabel('', fontsize=16)
ax.set_ylabel('Incidents', fontsize=16)

enter image description here

Я хотел бы закрасить столбцы гистограммы определенным цветом в зависимости от их значения primary_type.

      count primary_type
ward                    
1.0    9920        THEFT
2.0   18439        THEFT
3.0    7822      BATTERY
4.0    6959        THEFT
5.0    6535      BATTERY
6.0    9294      BATTERY
7.0    8480      BATTERY
8.0    8066      BATTERY
9.0    7847      BATTERY
10.0   4831      BATTERY

1 Ответ

1 голос
/ 15 апреля 2020

при условии, что df =

    ward    count   primary_type
1   1.0     9920    THEFT
2   2.0    18439    THEFT
3   3.0    7822     BATTERY
4   4.0    6959     THEFT
.
.

, затем вы можете сгруппировать их на основе «типа primart» и графиков для каждой группы, как показано ниже.

fig, ax = plt.subplots()
for group_name, group in df.groupby('primary_type'):
    ax.bar(x = group['ward'], height = group['count'], label = group_name)
plt.legend()  

приводит к

enter image description here

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