我有一个要绘制的字典:
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 的实例,而不是浮点数
我该如何绘制它?
答案 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()
然后得到
如果您的字典中有 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()))
然后得到