当我尝试绘制 dict 时出现类型错误

时间:2021-04-22 22:48:42

标签: python dictionary matplotlib

我有一个要绘制的字典:

my_dict={'a': 0.015015015015015015,
 'b': 2.0,
 'c': 0.0,
 'd-e': 0.14,
 'f': 0.0
 nan: 0.06
}

此代码出错

import matplotlib.pylab as plt

lists = sorted(my_dict.items()) # sorted by key, return a list of tuples

x, y = zip(*lists) # unpack a list of pairs into two tuples

plt.plot(x, y)
plt.show()
<块引用>

-> 类型错误:“float”和“str”的实例之间不支持“<”

而这个其他

plt.bar(list(my_dict.keys()), list(my_dict.values()))

返回错误

<块引用>

-> TypeError: 'value' 必须是 str 或 bytes 的实例,而不是浮点数

我该如何绘制它?

1 个答案:

答案 0 :(得分:3)

问题在于 plot 期望绘制数字。所以你可以这样做

x, y = zip(*lists) # unpack a list of pairs into two tuples

x_num = np.arange(len(x)) # Numbers to plot

plt.plot(x_num, y)
plt.xticks(x_num, labels=x) # Replace x_num with your labels in x
plt.show()

然后得到

Plot

如果您的字典中有 np.nan 作为键,您可以随时用另一个最适合您的键替换它:

my_dict['not nan'] = my_dict.pop(np.nan) # Replace

# Plot
lists = sorted(my_dict.items()) # sorted by key, return a list of tuples
x, y = zip(*lists) # unpack a list of pairs into two tuples

plt.bar(list(my_dict.keys()), list(my_dict.values()))

然后得到

bar plot