我想使用Plots.jl为一组子图添加全局标题。
理想情况下,我会做类似的事情:
using Plots
pyplot()
plot(rand(10,2), plot_title="Main title", title=["A" "B"], layout=2)
但是,根据Plots.jl documentation,plot_title
属性尚未实现:
整个情节的标题(不是子图)(注:目前尚未实施)
与此同时,有什么方法吗?
我目前正在使用pyplot
后端,但我并不特别关注它。
答案 0 :(得分:1)
使用for (int i = 0, n = strlen(s); i < n; i++)
后端时,您可以使用pyplot
命令更改PyPlot
数字,参见Accessing backend specific functionality with Julia Plots
要为整个数字设置标题,您可以执行以下操作:
Plots
需要明确调用using Plots
p1 = plot(sin, title = "sin")
p2 = plot(cos, title = "cos")
p = plot(p1, p2, top_margin=1cm)
import PyPlot
PyPlot.suptitle("Trigonometric functions")
PyPlot.savefig("suptile_test.png")
才能看到PyPlot.savefig
函数的效果。
请注意,使用PyPlot
函数时,使用PyPlot
界面所做的所有更改都将被覆盖。
答案 1 :(得分:1)
这有点骇人听闻,但对于后端应该是不可知的。基本上创建一个新绘图,其中唯一的内容就是所需的标题,然后使用layout
将其添加到顶部。这是使用GR
后端的示例:
# create a transparent scatter plot with an 'annotation' that will become title
y = ones(3)
title = Plots.scatter(y, marker=0,markeralpha=0, annotations=(2, y[2], Plots.text("This is title")),axis=false, leg=false,size=(200,100))
# combine the 'title' plot with your real plots
Plots.plot(
title,
Plots.plot(rand(100,4), layout = 4),
layout=grid(2,1,heights=[0.1,0.9])
)
产生:
答案 2 :(得分:0)
subplots
是Plot
类型的字段,每个子图都有一个名为:attr
的字段,您可以修改并重新display()
该图。请尝试以下方法:
julia> l = @layout([a{0.1h} ;b [c; d e]])
Plots.GridLayout(2,1)
julia> p = plot(randn(100,5),layout=l,t=[:line :histogram :scatter :steppre :bar],leg=false,ticks=nothing,border=false)
julia> p.subplots
5-element Array{Plots.Subplot,1}:
Subplot{1}
Subplot{2}
Subplot{3}
Subplot{4}
Subplot{5}
julia> fieldnames(p.subplots[1])
8-element Array{Symbol,1}:
:parent
:series_list
:minpad
:bbox
:plotarea
:attr
:o
:plt
julia> for i in 1:length(p.subplots)
p.subplots[i].attr[:title] = "subtitle $i"
end
julia> display(p)
您现在应该在每个subplot