嘿,我正在尝试将图例放入绘图中,这样它就不会遮挡图形。
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0,100,11)
plt.plot(X,-X, label='plot 1')
plt.plot(X,-2*X, label='plot 2')
plt.plot(X,-3*X, label='plot 3')
leg=plt.legend(ncol=2)
leg.get_frame().set_visible(False)
plt.show()
所以在上面的最小工作示例中,我希望能够做的是将图例中的“plot 2”标签移动到右栏中,即直接在“plot 3”下方。
如有任何帮助,我们将不胜感激。
最佳答案
@cosmos 答案的不同实现。它可能更灵活。
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0,100,11)
plt.plot(X,-X, label='plot 1', color='red')
plt.plot(X,-2*X, label='plot 2', color='green')
plt.plot(X,-3*X, label='plot 3', color='blue')
(lines, labels) = plt.gca().get_legend_handles_labels()
#it's safer to use linestyle='none' and marker='none' that setting the color to white
#should be invisible whatever is the background
lines.insert(1, plt.Line2D(X,X, linestyle='none', marker='none'))
labels.insert(1,'')
plt.legend(lines,labels,numpoints=1, loc=4,ncol=1)
plt.show()
另一种选择是创建两个图例 here然后使用 bbox_to_anchor 关键字 here 替换它们
(lines, labels) = plt.gca().get_legend_handles_labels()
leg1 = plt.legend(lines[:1], labels[:1], bbox_to_anchor=(0,0,0.8,1), loc=1)
leg2 = plt.legend(lines[1:], labels[1:], bbox_to_anchor=(0,0,1,1), loc=1)
gca().add_artist(leg1)
这样做我得到 无需在其他对象上添加任何内容。
关于python - 先填一个matplotlib图例的右栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14737681/