Получить значения из словаря для гистограммы - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь создать словарь, который будет использоваться моей диаграммой (и другими графиками) вместо того, чтобы каждый раз вручную вводить метки тика оси x, как показано: query1.set_xticklabels(['Met Police','Thames Valley','Kent'],fontsize=12).

Что-то вроде этого (хотя я не уверен, как это реализовать):

dict = {'1': 'Met Police','3': 'Cumbria', '4': 'Lancashire', '43': 'Thames Valley', '46': 'Kent'}

Это мой фрейм данных df1. Числа в столбце Police_force соответствуют различным строковым значениям.

+---+--------------+---------+
|   | police_force |    ft   |
+---+--------------+---------+
| 0 |      1       |   129   |
| 1 |      43      |   59    |
| 2 |      46      |   56    |
+---+--------------+---------+

Вот моя диаграмма:


# uses seaborn library to generate graph

import seaborn as sns, pandas as pd
%matplotlib inline 
# to plot the graphs inline on jupyter notebook

# set style and size

sns.set(style='darkgrid',palette='rainbow',rc={'figure.figsize':(8,8)})

# read file

df1 = pd.read_csv("1.csv")

# define parameters for query1

query1 = sns.barplot(x=df1.police_force,y=df1.ft,data=df1)

query1.set_title('Polices forces with the most fatal accidents',fontsize=18)
query1.set_xlabel('Police Force',fontsize=14)
query1.set_ylabel('Fatalities',fontsize=12)
query1.set_xticklabels(['Met Police','Thames Valley','Kent'],fontsize=12)

1 Ответ

0 голосов
/ 08 мая 2019

Ну, во-первых, не называйте переменную dict, так как это ключевое слово в Python.Давайте предположим, что вы назвали его pf_dict, тогда строка, о которой вы спрашиваете, станет такой:

query1.set_xticklabels([pf_dict[k] for k in df1.police_force], fontsize=12)

Но я бы на самом деле сделал это, добавив имя полицейского подразделения в DataFrame.:

pf_dict = {
    '1': 'Met Police',
    '3': 'Cumbria',
    '4': 'Lancashire',
    '43': 'Thames Valley',
    '46': 'Kent'
}
df1['police_force_name'] = df1['police_force'].map(pf_dict)

# ...

query1.set_xticklabels(df1['police_force_name'], fontsize=12)
...