2017-06-07 93 views
7

代码如何将标记添加到Plots.jl图的图例?

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

产生以下情节:

enter image description here

的标志不会出现在传说中,只有数据系列的线条颜色。这使得将线条与图例中的标签进行匹配变得非常困难,特别是对于那些色盲或读取黑白打印输出的人来说更是如此。有没有办法显示图例标记以及图例中的线条颜色?

回答

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确保图例项线/标记的颜色相同

+0

这是一个进步,但最好我想在传说中同时显示标记和线,以最准确地反映实际情节。 – tparker

+0

此解决方案的另一个问题是:线图仍会增加标记类型,因此此解决方案会循环显示每个*秒*绘图标记,从而导致标记的顺序与散点图中的顺序不同。任何想法如何解决这个问题? – tparker

+2

你不幸的是现在需要使用一些这样的黑客来获得这个工作。对于同时具有线条和标记的serist类型会很好,但目前没有一个。你可以在剧情上打开一个问题:-) –

2

我是addi纳克为后人的答案 - 这已被固定在情节,所以此工程:

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

enter image description here

+0

当pgfplots()是后端时,是否有可能在没有在数据中画线的情况下制作散点图? –

+0

我想通了,你必须加上''scatter(rand(10),line =(0.0,:blue,:dash))''。我认为这应该是默认的,你怎么看? –

+0

是的,pgfplots在图例中出现的一条线是一个错误。 –