python - 从条形图的字典中检索值
问题描述
我正在尝试创建一个将由我的条形图(和其他图表)使用的字典,而不是每次手动输入 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)
解决方案
首先,不要命名变量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)
推荐阅读
- python - 将 Tensorflow tf.keras.initializers.GlorotNormal(seed=1) 应用于 tf.Variable
- javascript - 创建一个返回 22 的函数
- swift - 使用 ObservedObject 更新文本,但不是我的自定义视图
- node.js - 如果无法在 node.js 和 socket.io 中建立与服务器的连接,如何关闭套接字?
- javascript - javascript Promise 的工作原理
- javascript - 在 JavaScript 中动态更改表头和内容
- python - crontab ModuleNotFoundError
- python - 显示数据集时出现无效的起始字节错误
- python - 从导入的模块调试 python 函数调用
- javascript - 我尝试了多种方法,谁能告诉我这个数组有什么问题?