【问题标题】:Julia Plots.jl: changing marker colour from series recipeJulia Plots.jl:从系列配方更改标记颜色
【发布时间】:2019-01-11 15:41:40
【问题描述】:

我正在尝试将Plots.jl 用户配方放在一起,这将创建多个散点图和排列在网格中的直方图。散点图应占据网格的下三角形。直方图在对角线上。每个散点图应该有几个系列,以不同的颜色显示。子图中的颜色应该是一致的。

我的问题是当我允许用户指定自定义颜色时,散点图中的系列颜色会变得混乱。

这是(删节的)配方代码。 data 是一个大小为 r 的向量。 data 的每个元素都是一个大小为n_r x d 的矩阵。 n_r 可能会有所不同,d 保持不变。应该有d x (d-1) / 2 散点图,每个图上有r 系列,每个系列都有n_r 点。

@recipe function my_func(data::my_type; custom_colors=nothing)
    # get d, r, ...
    for i in i:d
        for j in 1:d
            @series begin
                subplot := (i - 1) * d + j
                if i == j
                    seriestype := :histogram
                    plot_data = # ... prepare data for histograms
                elseif j < i
                    # scatter subplot recipe
                    seriestype := :scatter
                    if custom_colors !== nothing
                        color := reshape(custom_colors, (1, r))
                    end
                    x = Vector()
                    y = Vector()
                    for r in runs
                        ser = data[r]
                        append!(x, [ser[:, j]])
                        append!(y, [ser[:, i]])
                    end # for r
                    plot_data = (x, y)
                else
                    # leave empty
                    plot_data = [0]
                end #  if/else
                plot_data  # return from the macro function
            end # @series
        end # for j
    end # for i
end # @recipe

我的问题是,每当我提供自定义颜色时,子图之间就会出现不一致:

plot(my_data, custom_colors=["blue", "green", "black"])

注意子图 (2, 1) 如何在中间有黑点,而所有其他散点图子图的外部都是黑色

如果我在没有自定义颜色的情况下进行绘图:

plot(my_data)

我在所有散点图中得到一致的颜色:

任何线索为什么颜色在第一个情节上混合?

【问题讨论】:

  • 相关评论。您定义的绘图配方称为角图。我自己写了一个,作为一个包分享,但既然你已经准备好了一个好的,那就更好了。请注意,在 StatPlots.jl github.com/JuliaPlots/StatPlots.jl 中有一个绘图配方

标签: julia plots.jl


【解决方案1】:

好的,这里的诀窍是每个散点图上的每个系列都应该用自己的宏来绘制。换句话说,@series ... end 应该进入for r in runs ... end。并为代码的其他每个分支提供一个单独的 @series 宏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 2020-08-16
    • 2012-02-15
    相关资源
    最近更新 更多