我的以下代码:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.pyplot import legend as legend
x = np.matrix(
[
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4]
]
)
y = x.transpose()
xx = x
yy = y+0.2
# Vertical Lines of grid:
plt.plot(x, y, 'b-o', label='data1')
plt.plot(xx, yy, 'r-*', label='data2')
legend()
plt.show()
生成类似
的数字我想做两件事:
答案 0 :(得分:2)
由于x
(因此,所有其他数组)都是二维数组,当您在其上调用plot()
时,它相当于在几个1-上调用plot()
d设置,所以你要为这些图中的每一个创建一个标签。
避免这种情况的一种方法是将图分配给变量,然后仅为每个图中的第一个插入图例。
lines = plt.plot(x, y, 'b-o')
other_lines = plt.plot(xx, yy, 'r-*')
plt.legend([lines[0], other_lines[0]], ['data1', 'data2'])
对于图例定位,请查看this或documentation。
答案 1 :(得分:0)
由于您的x
和y
是矩阵,因此每个矩阵行都会获得与图例中重复的标签相同的标签。
解决方案可能如下所示:
for i in range(x.size[0]):
plt.plot(x[i], y[i], label='data1' if i == 0 else None)
plt.plot(xx[i], yy[i], label='data2' if i == 0 else None)