【发布时间】:2016-12-03 11:53:15
【问题描述】:
我想在 matplotlib 中做一个复杂的图例。我做了以下代码
import matplotlib.pylab as plt
import numpy as np
N = 25
y = np.random.randn(N)
x = np.arange(N)
y2 = np.random.randn(25)
# serie A
p1a, = plt.plot(x, y, "ro", ms=10, mfc="r", mew=2, mec="r")
p1b, = plt.plot(x[:5], y[:5] , "w+", ms=10, mec="w", mew=2)
p1c, = plt.plot(x[5:10], y[5:10], "w*", ms=10, mec="w", mew=2)
# serie B
p2a, = plt.plot(x, y2, "bo", ms=10, mfc="b", mew=2, mec="b")
p2b, = plt.plot(x[15:20], y2[15:20] , "w+", ms=10, mec="w", mew=2)
p2c, = plt.plot(x[10:15], y2[10:15], "w*", ms=10, mec="w", mew=2)
plt.legend([p1a, p2a, (p1a, p1b), (p2a,p2b), (p1a, p1c), (p2a,p2c)],
["No prop", "No prop", "Prop +", "Prop +", "Prop *", "Prop *"], ncol=3, numpoints=1)
plt.show()
但我想像这里一样绘制复杂的图例:
我也尝试用table 函数做图例,但我无法将补丁对象放入表格中到单元格的正确位置。
【问题讨论】:
-
我不肯定,但我相信在this 问题的公认答案中有一个例子可以做到这一点。或者它至少可以为你指明正确的方向?
-
不,在那个例子中,每个标记都有自己的标签。
-
是的,但是你可以在那里放空字符串。我实际上是在寻找我以前在这里看到的另一个例子(有人写了一个美丽的传说),但我无法找到它。只是一个想法,因为我认为那个使用了空字符串。抱歉,我找不到它...
-
是的,我也试过了。结果很丑:i.imgur.com/JHbNt3z.png
-
没有顶级的可配置方式来做到这一点。执行此操作的工具在那里(处理程序创建工具、布局框 hpackers / vpackers 等)但作为替代方案会很有趣(并且至少在我们的文档中最终会是一件好事)图例实现。
标签: python matplotlib legend