Check if plot title already exists before adding again (#4027)
* Check if plot title already exists before adding again * Add plot title tests
This commit is contained in:
parent
2872c7a345
commit
cffeba7609
@ -277,26 +277,35 @@ end
|
|||||||
|
|
||||||
function _add_plot_title!(plt)
|
function _add_plot_title!(plt)
|
||||||
plot_title = plt[:plot_title]
|
plot_title = plt[:plot_title]
|
||||||
|
|
||||||
if plot_title != ""
|
if plot_title != ""
|
||||||
the_layout = plt.layout
|
# make new subplot for plot title
|
||||||
vspan = plt[:plot_titlevspan]
|
if plt[:plot_titleindex] == 0
|
||||||
plt.layout = grid(2, 1, heights = (vspan, 1 - vspan))
|
the_layout = plt.layout
|
||||||
plt.layout.grid[1, 1] = subplot = Subplot(plt.backend, parent = plt.layout[1, 1])
|
vspan = plt[:plot_titlevspan]
|
||||||
plt.layout.grid[2, 1] = the_layout
|
plt.layout = grid(2, 1, heights = (vspan, 1 - vspan))
|
||||||
subplot.plt = plt
|
plt.layout.grid[1, 1] = subplot = Subplot(plt.backend, parent = plt.layout[1, 1])
|
||||||
|
plt.layout.grid[2, 1] = the_layout
|
||||||
|
subplot.plt = plt
|
||||||
|
|
||||||
|
top = plt.backend isa PyPlotBackend ? nothing : 0mm
|
||||||
|
bot = 0mm
|
||||||
|
plt[:force_minpad] = nothing, top, nothing, bot
|
||||||
|
subplot[:subplot_index] = last(plt.subplots)[:subplot_index] + 1
|
||||||
|
plt[:plot_titleindex] = subplot[:subplot_index]
|
||||||
|
subplot[:framestyle] = :none
|
||||||
|
subplot[:margin] = 0px
|
||||||
|
push!(plt.subplots, subplot)
|
||||||
|
end
|
||||||
|
|
||||||
# propagate arguments plt[:plot_titleXXX] --> subplot[:titleXXX]
|
# propagate arguments plt[:plot_titleXXX] --> subplot[:titleXXX]
|
||||||
|
plot_titleindex = plt[:plot_titleindex]
|
||||||
|
subplot = plt.subplots[plot_titleindex]
|
||||||
for sym in filter(x -> startswith(string(x), "plot_title"), keys(_plot_defaults))
|
for sym in filter(x -> startswith(string(x), "plot_title"), keys(_plot_defaults))
|
||||||
subplot[Symbol(string(sym)[(length("plot_") + 1):end])] = plt[sym]
|
subplot[Symbol(string(sym)[(length("plot_") + 1):end])] = plt[sym]
|
||||||
end
|
end
|
||||||
top = plt.backend isa PyPlotBackend ? nothing : 0mm
|
|
||||||
bot = 0mm
|
|
||||||
plt[:force_minpad] = nothing, top, nothing, bot
|
|
||||||
subplot[:subplot_index] = last(plt.subplots)[:subplot_index] + 1
|
|
||||||
plt[:plot_titleindex] = subplot[:subplot_index]
|
|
||||||
subplot[:framestyle] = :none
|
|
||||||
subplot[:margin] = 0px
|
|
||||||
push!(plt.subplots, subplot)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return nothing
|
return nothing
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -11,3 +11,17 @@ using Plots, Test
|
|||||||
@test pl[3][:yaxis][:scale] == :log10
|
@test pl[3][:yaxis][:scale] == :log10
|
||||||
@test pl[4][:yaxis][:scale] == :log10
|
@test pl[4][:yaxis][:scale] == :log10
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@testset "Plot title" begin
|
||||||
|
pl = plot(rand(4, 8), layout = 4, plot_title = "My title")
|
||||||
|
@test pl[:plot_title] == "My title"
|
||||||
|
@test pl[:plot_titleindex] == 5
|
||||||
|
|
||||||
|
plot!(pl)
|
||||||
|
@test pl[:plot_title] == "My title"
|
||||||
|
@test pl[:plot_titleindex] == 5
|
||||||
|
|
||||||
|
plot!(pl, plot_title = "My new title")
|
||||||
|
@test pl[:plot_title] == "My new title"
|
||||||
|
@test pl[:plot_titleindex] == 5
|
||||||
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user