如何将图例移动到Plots.jl(GR)中的绘图区域之外?

Ian*_*all 5 julia plots.jl

我有以下图表,其中图例遮盖了部分数据:

using Plots; gr()
using StatPlots
groupedbar(rand(1:100,(10,10)),bar_position=:stack, label="item".*map(string,collect(1:10)))
Run Code Online (Sandbox Code Playgroud)

堆积条形图

我可以看到,使用“ legend”属性,可以将图例移动到绘图区域内的各个位置,例如:

groupedbar(rand(1:100,(10,10)),bar_position=:stack, label="item".*map(string,collect(1:10)),legend=:bottomright)
Run Code Online (Sandbox Code Playgroud)

右下方带有图例的堆叠条形图

有什么方法可以将图例完全移至绘图区域之外,例如移至绘图的右侧或下方吗?对于这些堆积的条形图,在图区内部确实没有图例的好位置。到目前为止,我唯一能想到的解决方案是在输入数据矩阵中创建一些“虚假”的空行,以使空间中带有一些零,但这似乎有点棘手,并且需要进行一些摆弄才能获得正确的结果。每次绘制时的额外行数:

groupedbar(vcat(rand(1:100,(10,10)),zeros(3,10)),bar_position=:stack, label="item".*map(string,collect(1:10)),legend=:bottomright)
Run Code Online (Sandbox Code Playgroud)

带图例的堆叠条形图放置在额外的空白区域

我可以看到,有人针对pyplot提出了某种解决方案,有人知道GR后端有类似的解决方案吗?我可以想象的另一个解决方案-是否可以将图例本身保存到其他文件中,然后再将它们重新放在Inkscape中?

Ale*_*lec 21

现在可以通过Plots.jl轻松启用:

例子:

plot(rand(10), legend = :outertopleft)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Thu*_*ner 7

使用布局,我可以创建一个变通方法,制作仅带有图例的假图。

using Plots
gr()
l = @layout [a{0.001h}; b c{0.13w}]

values = rand(1:100,(10,10))

p1 = groupedbar(values,bar_position=:stack, legend=:none)
p2 = groupedbar(values,bar_position=:stack, label="item".*map(string,collect(1:10)), grid=false, xlims=(20,3), showaxis=false)


p0=plot(title="Title",grid=false, showaxis=false)

plot(p0,p1,p2,layout=l)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明