From c2b56878fc15881614fa3f1e615ad9adafbda263 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Wed, 10 Jan 2018 20:30:10 +0100 Subject: [PATCH] fixed problems with labels in scientific notation --- src/backends/gr.jl | 34 ++++++++++------------------------ src/utils.jl | 5 ++++- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 9869fec6..0be3fd06 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -193,7 +193,7 @@ gr_inqtext(x, y, s::Symbol) = gr_inqtext(x, y, string(s)) function gr_inqtext(x, y, s) if length(s) >= 2 && s[1] == '$' && s[end] == '$' GR.inqtextext(x, y, s[2:end-1]) - elseif search(s, '\\') != 0 + elseif search(s, '\\') != 0 || contains(s, "10^{") GR.inqtextext(x, y, s) else GR.inqtext(x, y, s) @@ -205,7 +205,7 @@ gr_text(x, y, s::Symbol) = gr_text(x, y, string(s)) function gr_text(x, y, s) if length(s) >= 2 && s[1] == '$' && s[end] == '$' GR.mathtex(x, y, s[2:end-1]) - elseif search(s, '\\') != 0 + elseif search(s, '\\') != 0 || contains(s, "10^{") GR.textext(x, y, s) else GR.text(x, y, s) @@ -222,12 +222,8 @@ function gr_polaraxes(rmin::Real, rmax::Real, sp::Subplot) sinf = sind.(a) cosf = cosd.(a) rtick_values, rtick_labels = get_ticks(yaxis) - rtick_labels = if yaxis[:formatter] == :scientific && yaxis[:ticks] == :auto - rtick_labels = string.(convert_sci_unicode.(rtick_labels),"\\ ") - # unicode × messes up superscript alignment so add space to superscript - replace.(rtick_labels, "{", "{ ") - else - rtick_labels + if yaxis[:formatter] == :scientific && yaxis[:ticks] == :auto + rtick_labels = convert_sci_unicode(rtick_labels) end #draw angular grid @@ -889,15 +885,10 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) xi, yi = GR.wctondc(cv, sp[:framestyle] == :origin ? 0 : xor(flip, mirror) ? ymax : ymin) # @show cv dv ymin xi yi flip mirror (flip $ mirror) # ensure correct dispatch in gr_text for automatic log ticks - dv = if xaxis[:scale] in (:ln, :log10, :log2) && xaxis[:ticks] == :auto - string(dv, "\\ ") - elseif xaxis[:formatter] == :scientific && xaxis[:ticks] == :auto - # unicode × messes up superscript alignment so add space to superscript - string(replace(convert_sci_unicode(dv), "{", "{ "), "\\ ") - else - string(dv) + if xaxis[:formatter] == :scientific && xaxis[:ticks] == :auto + dv = convert_sci_unicode(dv) end - gr_text(xi, yi + (mirror ? 1 : -1) * 5e-3 * (xaxis[:tick_direction] == :out ? 1.5 : 1.0), dv) + gr_text(xi, yi + (mirror ? 1 : -1) * 5e-3 * (xaxis[:tick_direction] == :out ? 1.5 : 1.0), string(dv)) end end @@ -909,15 +900,10 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) xi, yi = GR.wctondc(sp[:framestyle] == :origin ? 0 : xor(flip, mirror) ? xmax : xmin, cv) # @show cv dv xmin xi yi # ensure correct dispatch in gr_text for automatic log ticks - dv = if yaxis[:scale] in (:ln, :log10, :log2) && yaxis[:ticks] == :auto - string(dv, "\\ ") - elseif yaxis[:formatter] == :scientific && yaxis[:ticks] == :auto - # unicode × messes up superscript alignment so add space to superscript - string(replace(convert_sci_unicode(dv), "{", "{ "), "\\ ") - else - string(dv) + if yaxis[:formatter] == :scientific && yaxis[:ticks] == :auto + dv = convert_sci_unicode(dv) end - gr_text(xi + (mirror ? 1 : -1) * 1e-2 * (yaxis[:tick_direction] == :out ? 1.5 : 1.0), yi, dv) + gr_text(xi + (mirror ? 1 : -1) * 1e-2 * (yaxis[:tick_direction] == :out ? 1.5 : 1.0), yi, string(dv)) end end diff --git a/src/utils.jl b/src/utils.jl index 3fc55a88..6b2fb689 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -1071,5 +1071,8 @@ function convert_sci_unicode(label::AbstractString) for key in keys(unicode_dict) label = replace(label, key, unicode_dict[key]) end - string(label, "}") + if contains(label, "10^{") + label = string(label, "}") + end + label end