Python-如何使用字典正确绘制折线图?

时间:2019-12-31 23:40:45

标签: python dictionary jupyter-notebook line-plot

我正在尝试绘制折线图以显示Jupyter Notebook with Python中字典的每个键的趋势。这就是k_rmse_values变量中的内容,如下所示:

k_rmse_values = {'bore':{1:8423.759328233446, 3:6501.928933614838, 5:6807.187615513473, 7:6900.29659028346, 9:7134.8868708101645}, 'city-mpg':{1:4265.365592771621, 3:3865.0178306330113, 5:3720.409335758634, 7:381.98.183283405616, 9:422.67797275927}, '压缩率':{1:7016.906657495168, 3:7319.354017489066, 5:6301.624922763969, 7:6133.006310754547, 9:6417.253959732598}, '整备重量':{1:3950.9888180049306, 3:4201.343428000144, 5:4047.052502155118, 7:3842.0974736649846, 9:3943.9478256384205}, '引擎大小':{1:2853.7338453331627, 3:2793.6254775629623, 5:3123.320055069605, 7:2941.73029681235, 9:2931.996240628853}, '身高':{1:6330.178232877807, 3:7049.500497198366, 5:6869.570862695864, 7:6738.641089739572, 9:6344.062937760911}, 'highway-mpg':{1:4826.0580187146525, 3:3510.253629329685, 5:3379.2250123364083, 7:4044.21271135312068, 9:4462.027046251678}, '马力':{1:3623.6389886411143, 3:4294.825669466819, 5:4778.254807521257, 7:4730.538701514935, 9:4662.8601512508508}, '长度':{1:4952.798701744297, 3:5403.624431188139, 5:5500.731909846179, 7:5103.4515274528885, 9:4471.077661709427}, “正常损失”:{1:9604.929081466453, 3:7494.820436511842, 5:6391.912634697067, 7:6669.88538538577577, 9:6861.6389834002875}, 'peak-rpm':{1:8041.2366213164005, 3:7502.080095843049, 5:6529.863037752326, 7:6866.902542315512, 9:6884.533017667794}, '笔画':{1:10330.231237489314, 3:8947.585146097614, 5:6973.912792744113, 7:7266.3.3478250250421, 9:7026.017456146411}, '轮距':{1:2797.4144312203725, 3:3392.8627620671928, 5:4238.8.25624378706, 7:4456.687059524217, 9:4426.032222634904}, '宽度':{1:2849.2691940215127, 3:4076.59327053035, 5:3979.9751617315405, 7:3845.3326184519606, 9:3687.926625900343}}

当我使用此代码进行绘图时

for k,v in k_rmse_values.items():
x = list(v.keys())
y = list(v.values())

plt.plot(x,y)
plt.xlabel('k value')
plt.ylabel('RMSE')

,它没有按从1到9的顺序绘制;它给出了这张图 enter image description here

它按此k值顺序绘制1、3、9、5、7

我已经花了几个小时解决这个问题,但仍然找不到解决方法。您的帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

一种解决方案是对键进行排序并获取匹配的值:

for k,v in k_rmse_values.items():
  xs = list(v.keys()).sort()
  ys = [v[x] for x in xs]

# Note I renamed these arrays so following uses should be changed accordingly