【问题标题】:Make custom legend with Julia Pyplot使用 Julia Pyplot 制作自定义图例
【发布时间】:2020-07-03 17:20:22
【问题描述】:

我想在 Julia 的 pyplot 中制作一个自定义图例,其中图例标签不一定与图表上绘制的单个系列相关。例如:

在 Python(pyplot 来自 matplotlib)中,可以这样做:

from matplotlib.lines import Line2D
custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),
                Line2D([0], [0], color=cmap(.5), lw=4),
                Line2D([0], [0], color=cmap(1.), lw=4)]

fig, ax = plt.subplots()
lines = ax.plot(data)
ax.legend(custom_lines, ['Cold', 'Medium', 'Hot'])

问题是我似乎无法访问 pyplot 中的 Line2D 对象(使用 pyplot 作为 plt,plt.lines.Line2D 不起作用)。

有什么解决方法吗?

【问题讨论】:

    标签: plot graph julia


    【解决方案1】:

    我知道不是@​​987654325@ 但MakieLayout 会解决你的问题:

    使用代码链接到example

    我从Julia Discourse得到了答案。

    【讨论】:

      【解决方案2】:

      我对现有答案不满意,但我设法弄明白了。根据导出函数下的PyPlot.jl docs

      (matplotlib 模块的原始 PyObject 也可以作为 PyPlot.matplotlib 访问。)

      因此,您只需将完整的调用放入即可实现您的目标(我分配给一个变量以避免使 custom_lines 变得丑陋):

      L2D = PyPlot.matplotlib.lines.Line2D
      custom_lines = [L2D([0], [0], color=cmap(0.), lw=4),
                      L2D([0], [0], color=cmap(.5), lw=4),
                      L2D([0], [0], color=cmap(1.), lw=4)]
      
      fig, ax = plt.subplots()
      lines = ax.plot(data)
      ax.legend(custom_lines, ['Cold', 'Medium', 'Hot'])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-08
        • 2016-02-24
        • 2015-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多