Python 在matplotlib中打印值与字符串?

Python 在matplotlib中打印值与字符串?,python,matplotlib,Python,Matplotlib,我试图在matplotlib中创建一个绘图,其中x值是整数,y值是字符串。是否可以在matplotlib中绘制这种类型的数据?我检查了matplotlib的文档和文档,没有找到任何此类示例 我有许多列表绑定到一个名为my_list的变量。结构如下所示: mylists = [765340, 765371, 765310,'MA011',], [65310, 'MA015'], [765422, 765422, 24920205, 24920161, 'MA

我试图在matplotlib中创建一个绘图,其中x值是整数,y值是字符串。是否可以在matplotlib中绘制这种类型的数据?我检查了matplotlib的文档和文档,没有找到任何此类示例

我有许多列表绑定到一个名为my_list的变量。结构如下所示:

mylists = [765340, 765371, 765310,'MA011',],
          [65310, 'MA015'],
          [765422, 765422, 24920205, 24920161, 'MA125'],
          [765422, 'MA105'], 
          [765371, 12345, 'MA004']
在每个列表中,除最后一项外的所有项都是x值。每个列表中的最后一项是一个字符串,它是单个y值。 如何绘制这是matplotlib?以下是我的尝试:

import matplotlib.pyplot as plt

for sub_list in my_lists:
    x_value = sub_list[:1]
    y_value = sub_list[-1]
    plt.plot(x_value, y_value, "ro")
    plt.show()
上面的代码引发了以下错误:

ValueError:无法将字符串转换为浮点:MA011


如何绘制整数与字符串的关系?

您可能可以这样做,为每个y“字符串”指定一个唯一的索引值。你可能得修改i的间距。i*2代替i,让事情看起来更美好。然后,将每个索引的记号标签设置为其对应的字符串

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(9,7))
ax1 = fig.add_subplot(111)


mylists = [[765340, 765371, 765310,'MA011',], [65310, 'MA015'], 
           [765422, 765422, 24920205, 24920161, 'MA125'],
           [765422, 'MA105'],[765371, 12345, 'MA004']]

x = []
y = []
y_labels = []
y_ticks = []
for i,sub_list in enumerate(mylists):
    y_labels.append(sub_list[-1])
    y_ticks.append(i)
    for v in sub_list[:-1]:
        x.append(v)
        y.append(i)

ax1.set_yticks(y_ticks)
ax1.set_yticklabels(y_labels)
ax1.plot(x, y, "ro")
plt.show()
编辑:


抱歉,我忘记在for循环中包含
enuemrate
调用。它基本上将
i
的值设置为当前子列表的索引。然后使用索引而不是字符串值作为y值。然后,用实际字符串值替换这些y值的标签

谢谢你的帮助。您提供的代码似乎抛出了一些错误,我不完全确定
for
循环在做什么。你能进一步解释一下你的解决方案吗?谢谢。@dr.bunsen:对不起,我的代码有一个拼写错误,我在编辑中修正了它。太棒了!这很有效。我现在了解了如何使用
enumerate()
构建y轴,然后将字符串添加为y_标签。再次感谢,非常感谢您的帮助@布伦森博士:没问题,我很高兴这有帮助。作为旁注,我注意到原始代码中的另一个输入错误,您实际上希望
sub_list[:-1]
循环遍历除最后一个元素之外的所有元素。