colorbar positions :top, :bottom and :left and colorbar tickfont fixes

This commit is contained in:
Daniel Schwabeneder 2020-05-13 16:45:16 +02:00
parent 0a6e691222
commit 7eb8f2452c

View File

@ -215,9 +215,6 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend})
colormap={plots$(sp.attr[:subplot_index])}{$cm}, colormap={plots$(sp.attr[:subplot_index])}{$cm},
}""", }""",
) )
if sp[:colorbar] == true
push!(axis_opt, "colorbar" => nothing)
end
push!(axis_opt, "colormap name" => "plots$(sp.attr[:subplot_index])") push!(axis_opt, "colormap name" => "plots$(sp.attr[:subplot_index])")
if cg isa PlotUtils.CategoricalColorGradient if cg isa PlotUtils.CategoricalColorGradient
push!( push!(
@ -232,12 +229,25 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend})
end end
@label colorbar_end @label colorbar_end
if sp[:colorbar] == true if hascolorbar(sp)
xcstr = plot_color(sp[:xaxis][:tickfontcolor])
ycstr = plot_color(sp[:yaxis][:tickfontcolor])
colorbar_style = PGFPlotsX.Options(
"title" => sp[:colorbar_title],
"xticklabel style" => pgfx_get_ticklabel_style(sp, sp[:xaxis]),
"yticklabel style" => pgfx_get_ticklabel_style(sp, sp[:yaxis]),
)
if sp[:colorbar] === :top
push!(colorbar_style,
"at" => string((0.5, 1.05)),
"anchor" => "south",
"xticklabel pos" => "upper",
)
end
push!( push!(
axis_opt, axis_opt,
"colorbar style" => PGFPlotsX.Options( string("colorbar", pgfx_get_colorbar_pos(sp[:colorbar])) => nothing,
"title" => sp[:colorbar_title], "colorbar style" => colorbar_style,
),
"point meta max" => get_clims(sp)[2], "point meta max" => get_clims(sp)[2],
"point meta min" => get_clims(sp)[1], "point meta min" => get_clims(sp)[1],
) )
@ -670,6 +680,22 @@ pgfx_get_legend_pos(k) = get(
("at" => string((1.02, 1)), "anchor" => "north west"), ("at" => string((1.02, 1)), "anchor" => "north west"),
) )
pgfx_get_colorbar_pos(s) =
get((left = " left", bottom = " horizontal", top = " horizontal"), s, "")
pgfx_get_colorbar_pos(b::Bool) = ""
function pgfx_get_ticklabel_style(sp, axis)
cstr = plot_color(axis[:tickfontcolor])
return PGFPlotsX.Options(
"font" => pgfx_font(
axis[:tickfontsize], pgfx_thickness_scaling(sp)
),
"color" => cstr,
"draw opacity" => alpha(cstr),
"rotate" => axis[:tickfontrotation],
)
end
## -------------------------------------------------------------------------------------- ## --------------------------------------------------------------------------------------
# Generates a colormap for pgfplots based on a ColorGradient # Generates a colormap for pgfplots based on a ColorGradient
pgfx_arrow(::Nothing) = "every arrow/.append style={-}" pgfx_arrow(::Nothing) = "every arrow/.append style={-}"
@ -1106,17 +1132,8 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter)
string(letter, "tick align") => string(letter, "tick align") =>
(axis[:tick_direction] == :out ? "outside" : "inside"), (axis[:tick_direction] == :out ? "outside" : "inside"),
) )
cstr = plot_color(axis[:tickfontcolor])
α = alpha(cstr)
push!( push!(
opt, opt, string(letter, "ticklabel style") => pgfx_get_ticklabel_style(sp, axis)
string(letter, "ticklabel style") => PGFPlotsX.Options(
"font" =>
pgfx_font(axis[:tickfontsize], pgfx_thickness_scaling(sp)),
"color" => cstr,
"draw opacity" => α,
"rotate" => axis[:tickfontrotation],
),
) )
push!( push!(
opt, opt,
@ -1204,6 +1221,7 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter)
) )
end end
end end
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
# display calls this and then _display, its called 3 times for plot(1:5) # display calls this and then _display, its called 3 times for plot(1:5)
# Set the (left, top, right, bottom) minimum padding around the plot area # Set the (left, top, right, bottom) minimum padding around the plot area