Matplotlib子块循环中的图例:我的代码有什么问题?

2024-06-17 01:43:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有6个不同子区的情节。我遍历一个循环来生成每个子块,现在也要为每个子块添加图例。下面是一个简单的例子:

matrixSol = scipy.random.random((6,6,4))
print matrixSol
mylegend = ['10 Million','15 Million','1 Million','20 Million','25 Million','5 Million']

for k in range(6):
    print k
    xs = matrixSol[k,:,0]
    ys = matrixSol[k,:,1]
    zs = matrixSol[k,:,3]
    plt.subplot(2,3,k+1)
    plt.plot(ys, zs,'o', c=color[k], markersize=10)#marker = styles[k])
    #print mylegend[k]
    plt.legend((mylegend[k]),loc=2)
    plt.xlabel('X')
    plt.ylabel('Y (%)')
plt.show()

问题是我得到了一个图例,它只选取列表中每个成员的第一个符号,请参见附图。 我的代码怎么了???? 太简单了!非常感谢你!任何帮助都将不胜感激!enter image description here


Tags: inforpltrandomscipy例子子块print
2条回答

使用:

plt.plot(ys, zs,'o', c=color[k], label=mylegend[k], markersize=10)
plt.legend(loc=2)

enter image description here

或者,Chris Redford已经指出的解决方案也可以:

plt.legend((mylegend[k],), loc=2)

我很确定它处理的是行中的代码(mylegend[k])

plt.legend((mylegend[k]),loc=2)

好像字符串(例如'10 Million')本身就是一个列表(例如['1', '0', ' ', 'M', 'i', 'l', 'l', 'i', 'o', 'n'])。

如果将该行更改为使用(mylegend[k],)(逗号指定它是元组),则它可能工作正常:

plt.legend((mylegend[k],),loc=2)

相关问题 更多 >