如何在Plots.jl绘图中向图例添加标记?

10

这段代码

using Plots
pyplot(markershape = :auto)
for i in 1:4
  plot!(rand(10), label = "Series " * string(i))
end
savefig("Plot.png")

生成了以下图表:

在这里输入图片描述

标记不出现在图例中,只有数据系列的线条颜色。这使得对于那些色盲或者查看黑白打印输出的人来说,将线条与图例中的标签匹配起来变得更加困难。是否有一种方法可以在图例中同时显示图标和线条颜色?

2个回答

7

我为后人添加了一个答案 - 这个问题已经在Plots中得到解决,所以现在可以这样做:

plot(rand(10,4), markershape = :auto)

enter image description here


当使用pgfplots()作为后端时,是否可以制作一个散点图而不通过数据绘制线条? - Huckleberry Febbo
我找到了答案,你需要加上“scatter(rand(10),line=(0.0,:blue,:dash))”。我认为这应该成为默认值,你觉得呢? - Huckleberry Febbo
是的,在pgfplots中出现在图例中的线条是一个bug。 - Michael K. Borregaard

3

可能有更高效、直接的方法,但您可以尝试将线条/标记分开绘制:

using Plots
pyplot(markershape = :auto)
for i in 1:4
    x = rand(10)
    plot!(x, color=i, marker=false, label="")
    scatter!(x, color=i, markersize=10, label = "Series " * string(i))
end
savefig("Plot.png")

plot

label=""的作用是抑制线条的图例显示。

color=i 确保线条/标记的颜色相同。


这是一个改进,但理想情况下我希望在图例中显示标记和线条,以最准确地反映实际绘图。 - tparker
这个解决方案还有一个问题:线图仍然按照标记类型递增,因此该解决方案会循环每两个绘图标记一次,导致标记顺序与仅散点图的不同。有什么办法可以解决这个问题吗? - tparker
2
目前不幸的是,你必须使用这样的一些技巧才能让它正常工作。如果有一种同时具有线条和标记的系列类型,那就太好了,但目前还没有这样的类型。你可以在Plots上开一个问题 :-) - Michael K. Borregaard
现在可以了 - 我又添加了一个答案,以便后人能够找到。 - Michael K. Borregaard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接