我正在尝试绘制条形图,但我不断收到此错误

时间:2021-07-15 14:51:34

标签: python dictionary matplotlib

我的代码:

Dict = {'b':1 , 'n':1, '-':20, '\xa0':5}
x = list(Dict.keys())
y = list(Dict.values())
fig = plt.figure(figsiz = (10,5))

plt.bar(x,y,width = 0.5, color = 'maroon')

错误:

unsupported operand type(s) for -: 'float' and 'str'

1 个答案:

答案 0 :(得分:0)

Matplotlib 告诉您它不知道如何在 X 轴上绘制您的 Dict.keys()。您需要使用 X 轴的数值绘制条形图,然后您可以将 Dict.keys() 作为刻度标签分配给条形。您需要调整绘图比例和/或数据字典以使数据正确显示。以下代码显示了如何获取要绘制的数据以及如何分配刻度标签(但不进行任何其他调整)。

import matplotlib.pyplot as plt

# Dict = {u'b':1 , u'n':1, u'-':20, u'\xa0':5}

x = [1, 2, 3, 4]
y = [1, 1, 20, 5]
labels = [u'b', u'n', u'-', u'\xa0']  # Note that '\xa0' is a non-breaking space

fig = plt.figure(figsize = (10,5))
plt.bar(x,y,width = 0.5, color = 'maroon')
plt.xticks(x, labels)

plt.show()

注意:根据您的 Python 版本,您无法保证字典键和值的传递顺序。我已更新此答案以对数据进行硬编码,以使您对原始问题的回答更加明显。