【问题标题】:Supressing some labels in legend or putting sampled markers抑制图例中的某些标签或放置采样标记
【发布时间】:2019-09-26 14:54:57
【问题描述】:

我正在使用 Julia 1.1.0 并想在其中进行一些绘图。我为此使用Plotspyplot 后端。

我想用相同的线条样式和颜色绘制两个数据,并通过标记来区分它们。

这是一个例子:

using Plots
pyplot()
nf = 150;
freq = exp10.(range(2, stop=6.4, length=nf)); #logspace
foo1 = (freq*2 .- 3);
foo2 = (freq .- 10);
plot(freq, foo1, label="foo 1", line=(1, :black, :solid), xaxis=:log, yaxis=:log)
plot!(freq, foo2, label="foo 2", line=(1, :black, :solid), marker=(:circle, :black, 3, 0,5))

问题是带有标记的线变得复杂。我没有找到一个论点来在每个 n-th 点放置一个标记(有吗?)

然后我尝试使用完整数据生成一个带有线条且没有标记的图,然后是一个带有采样数据的只有标记(没有线条)的图,如下所示

plot(freq, foo1, label="foo 1", line=(1, :black, :solid), xaxis=:log, yaxis=:log)
plot!(freq, foo2, line=(1, :black, :solid))
r = 1:10:nf;
plot!(freq[r], foo2[r], line=(false), marker=(:circle, :black, 3, 0,5))
plot!(freq[1:1:2], foo2[1:1:2], label="foo2", line=(1, :black, :solid), marker=(:circle, :black, 3, 0,5))

它有我想要的外观,但现在传说搞砸了。如何从图例中隐藏标签 y2 和 y3?

【问题讨论】:

    标签: julia plots.jl


    【解决方案1】:

    我重新阅读文档,发现Series 的属性label

    系列的标签,出现在图例中。如果为空,则无图例 条目已添加。

    因此,将标签设为空字符串 "" 可以解决问题,而 label=falselabel=nothing 则不行。

    plot(freq, foo1, label="foo 1", line=(1, :black, :solid), xaxis=:log, yaxis=:log)
    plot!(freq, foo2, line=(1, :black, :solid), label="")
    r = 1:10:nf;
    plot!(freq[r], foo2[r], line=(false), marker=(:circle, :black, 3, 0,5), label="")
    plot!(freq[[1,11]], foo2[[1,11]], label="foo 2", line=(1, :black, :solid), marker=(:circle, :black, 3, 0,5))
    

    【讨论】:

    • 这似乎是一个糟糕的 API 选择。空字符串仍然是字符串,因此我希望该行显示在图例中而没有任何文本。您的任何本能选择,甚至label=[],都会更好。哦,好吧……
    猜你喜欢
    • 1970-01-01
    • 2019-10-21
    • 2013-02-19
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    相关资源
    最近更新 更多