Julia 使用for循环添加绘图后创建子绘图

Julia 使用for循环添加绘图后创建子绘图,julia,plots.jl,Julia,Plots.jl,我有一个id列的dataframe。我想过滤数据框中的特定id,然后将列中的数据添加到绘图中(这部分是使用for循环完成的)。最后,我想把图(本例中为3)添加到子图中。我是这样做到的,但我最后的情节是不正确的。想知道是否有人知道我做错了什么(前两个子部分是空的,所有信息似乎都在第三个子部分) 在您的示例中,始终更新最新创建的绘图,即您的p3。使用绘图时,您可以通过将哪个绘图放入plot中来指定更新哪个绘图的参数(否则将更新最新的参数)。所以我认为你应该做绘图!(p1,…)而不是p1=绘图!(…)

我有一个id列的dataframe。我想过滤数据框中的特定id,然后将列中的数据添加到绘图中(这部分是使用for循环完成的)。最后,我想把图(本例中为3)添加到子图中。我是这样做到的,但我最后的情节是不正确的。想知道是否有人知道我做错了什么(前两个子部分是空的,所有信息似乎都在第三个子部分)


在您的示例中,始终更新最新创建的绘图,即您的
p3
。使用
绘图时,您可以通过将哪个绘图放入
plot中来指定更新哪个绘图
的参数(否则将更新最新的参数)。所以我认为你应该做
绘图!(p1,…)
而不是
p1=绘图!(…)
,等等。

旁注:我认为您不需要在函数中复制(数据)
function plotAnom(data::DataFrame)
data = copy(data)
uniqIds = unique(data.id)

# Create emplty plots
p1 = plot()
p2 = plot()
p3 = plot()

for id in uniqIds
    # Filter datframe based on id
    df = data[data.id .== id,:]
    p1 = plot!(
        df.time,
        df[:,names(df)[3]],
        label = id,
        line = 3,
        legend = :bottomright,
    )
    p1 = plot!(
        df.time,
        df.pre_month_avg,
        label = id,
        line = 2
    )
    
    p2 = plot!(
        df.time,
        df.diff,
        line = 3
    )
    
    p3 = plot!(
        df.time,
        df.cumulative_diff,
        line = 3
    )
    
    end

p = plot(p1,p2,p3,layout = (3,1), legend = false)
return p
end