我想绘制一个数组的多个列,并在图例中标记它们。但是在使用时:
x = np.loadtxt('example_array.npy')
plt.plot(x[:,1:3],label = 'first 2 lines')
plt.plot(x[:,3:5],label = '3rd and 4th lines')
plt.legend()
我获得了与我所拥有的线条一样多的传奇标签。因此,上面的代码在图例框中产生了四个标签。
必须有一种简单的方法为一组线分配标签?!但我找不到它......
我想避免诉诸
x = np.loadtxt('example_array.npy')
plt.plot(x[:,1],label = 'first 2 lines')
plt.plot(x[:,1:3])
plt.plot(x[:,3],label = '3rd and 4th lines')
plt.plot(x[:,3:5])
plt.legend()
提前致谢
答案 0 :(得分:1)
如果您想要两个列的相同标签和刻度,您可以在绘图之前合并列。
x = np.loadtxt('example_array.npy')
plt.plot(x[:,1:3].flatten(1),label = 'first 2 lines')
plt.plot(x[:,3:5].flatten(1),label = '3rd and 4th lines')
plt.legend()
希望这有帮助。
答案 1 :(得分:1)
因此,如果我找到你的话,你想一次性应用你的标签,而不是在每一行输入你的标签。
您可以做的是将元素保存为数组,列表或类似元素,然后迭代它们。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(1,10)
y1 = x
y2 = x*2
y3 = x*3
lines = [y1,y2,y3]
colors = ['r','g','b']
labels = ['RED','GREEN','BLUE']
# fig1 = plt.figure()
for i,c,l in zip(lines,colors,labels):
plt.plot(x,i,c,label='l')
plt.legend(labels)
plt.show()
导致: result:
另外,请查看@Miguels答案:"Add a list of labels in Pythons matplotlib"
希望它有所帮助! :)