Compare commits

..

13 Commits

Author SHA1 Message Date
Simon Christ 0762a29de3 Cap PGFPlotsX 2020-06-17 16:57:13 +02:00
Rashika Karki d6af1da35a Fix #2771: Add aliases (#2791)
* Fix #2771: Add aliases

* Added function to add aliases from vector
2020-06-17 14:37:01 +02:00
Daniel Schwabeneder bbbee44c66 Merge pull request #2793 from daschw/gr-3d
add legend line in GR for 3d paths
2020-06-17 14:25:37 +02:00
Daniel Schwabeneder 9499cef25d add legend line in GR for 3d paths 2020-06-17 11:54:53 +02:00
Simon Christ 7c8952fadf bump version [skip ci] 2020-06-17 11:19:26 +02:00
isentropic 8b2d3e926a better exopnents (#2786) 2020-06-17 11:18:03 +02:00
Fons van der Plas fb40ed1f59 Plotly fixed version (#2779)
* Fixed version for plotly.js dependency

* Fixed version for plotly.js dependency - .gitignore update
2020-06-17 11:17:37 +02:00
isentropic e88654cca5 pyplot colorbar positioning (#2772) 2020-06-17 11:17:18 +02:00
Maaz Bin Tahir Saeed a9b9b3c357 Fix #2377, #2785, #2369: Legend positioning fix for multiple plots (#2784)
* Fix 2377: Legend positioning fix for multiple vertical plots

* Fix #2785: Legend positioning for multiple horizontal plots
2020-06-17 11:16:37 +02:00
Simon Christ 99c8bfe12d bump version [skip ci] 2020-06-16 09:44:37 +02:00
Simon Christ 3eb2b783dc keep LaTeXStrings to be LaTeXStrings (#2781) 2020-06-16 09:39:07 +02:00
Daniel Schwabeneder a20b275eaf Merge pull request #2788 from jheinen/master
gr: fix polar heatmap problem
2020-06-16 09:23:43 +02:00
Josef Heinen c29694ae70 gr: fix polar heatmap problem 2020-06-15 12:53:57 +02:00
9 changed files with 67 additions and 30 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
.DS_Store
examples/.ipynb_checkpoints/*
examples/meetup/.ipynb_checkpoints/*
deps/plotly-latest.min.js
deps/plotly-*
deps/build.log
deps/deps.jl
Manifest.toml
+3 -3
View File
@@ -1,7 +1,7 @@
name = "Plots"
uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
author = ["Tom Breloff (@tbreloff)"]
version = "1.4.0"
version = "1.4.2"
[deps]
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
@@ -39,7 +39,7 @@ GeometryTypes = "0.7, 0.8"
JSON = "0.21"
Measures = "0.3"
NaNMath = "0.3"
PGFPlotsX = "1.2.0"
PGFPlotsX = "1.2.0 - 1.2.6"
PlotThemes = "2"
PlotUtils = "1"
RecipesBase = "1"
@@ -48,7 +48,7 @@ Reexport = "0.2"
Requires = "1"
Showoff = "0.3.1"
StatsBase = "0.32, 0.33"
julia = "1"
julia = "1.4"
[extras]
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
+4 -4
View File
@@ -1,12 +1,12 @@
#TODO: download https://cdn.plot.ly/plotly-latest.min.js to deps/ if it doesn't exist
#TODO: download https://cdn.plot.ly/plotly-1.54.2.min.js to deps/ if it doesn't exist
file_path = ""
if get(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL", "false") == "true"
global file_path
local_fn = joinpath(dirname(@__FILE__), "plotly-latest.min.js")
local_fn = joinpath(dirname(@__FILE__), "plotly-1.54.2.min.js")
if !isfile(local_fn)
@info("Cannot find deps/plotly-latest.min.js... downloading latest version.")
download("https://cdn.plot.ly/plotly-latest.min.js", local_fn)
@info("Cannot find deps/plotly-1.54.2.min.js... downloading latest version.")
download("https://cdn.plot.ly/plotly-1.54.2.min.js", local_fn)
isfile(local_fn) && (file_path = local_fn)
else
file_path = local_fn
+16 -2
View File
@@ -20,7 +20,14 @@ function add_non_underscore_aliases!(aliases::Dict{Symbol,Symbol})
end
end
function add_non_underscore_aliases!(aliases::Dict{Symbol,Symbol}, args::Vector{Symbol})
for arg in args
s = string(arg)
if '_' in s
aliases[Symbol(replace(s, "_" => ""))] = arg
end
end
end
# ------------------------------------------------------------
const _allAxes = [:auto, :left, :right]
@@ -502,6 +509,13 @@ end
# -----------------------------------------------------------------------------
# margin
add_aliases(:left_margin , :leftmargin )
add_aliases(:top_margin , :topmargin)
add_aliases(:bottom_margin , :bottommargin)
add_aliases(:right_margin ,:rightmargin)
# colors
add_aliases(:seriescolor, :c, :color, :colour)
add_aliases(:linecolor, :lc, :lcolor, :lcolour, :linecolour)
@@ -623,7 +637,7 @@ for arg in keys(_series_defaults)
_keyAliases[makeplural(arg)] = arg
end
add_non_underscore_aliases!(_keyAliases)
# -----------------------------------------------------------------------------
+4 -10
View File
@@ -181,16 +181,10 @@ function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing)
labels = if any(isfinite, unscaled_ticks)
formatter = axis[:formatter]
if formatter == :auto
# the default behavior is to make strings of the scaled values and then apply the labelfunc
map(labelfunc(scale, backend()), Showoff.showoff(scaled_ticks, :auto))
elseif formatter == :plain
# Leave the numbers in plain format
map(labelfunc(scale, backend()), Showoff.showoff(scaled_ticks, :plain))
elseif formatter == :scientific
Showoff.showoff(unscaled_ticks, :scientific)
elseif formatter == :latex
map(x -> string("\$", replace(convert_sci_unicode(x), '×' => "\\times"), "\$"), Showoff.showoff(unscaled_ticks, :auto))
if formatter in (:auto, :plain, :scientific, :engineering)
map(labelfunc(scale, backend()), Showoff.showoff(scaled_ticks, formatter))
elseif formatter == :latex
map(x -> string("\$", replace(convert_sci_unicode(x), '×' => "\\times"), "\$"), Showoff.showoff(unscaled_ticks, :auto))
else
# there was an override for the formatter... use that on the unscaled ticks
map(formatter, unscaled_ticks)
+8 -6
View File
@@ -590,7 +590,7 @@ function gr_legend_pos(sp::Subplot, w, h, viewport_plotarea)
xpos = viewport_plotarea[1] + 0.11
end
else
xpos = (viewport_plotarea[2]-viewport_plotarea[1])/2 - w/2 +.04
xpos = (viewport_plotarea[2]-viewport_plotarea[1])/2 - w/2 +.04 + viewport_plotarea[1]
end
if occursin("top", str)
if s == :outertop
@@ -605,7 +605,8 @@ function gr_legend_pos(sp::Subplot, w, h, viewport_plotarea)
ypos = viewport_plotarea[3] + h + 0.06
end
else
ypos = (viewport_plotarea[4]-viewport_plotarea[3])/2 + h/2
# Adding min y to shift legend pos to correct graph (#2377)
ypos = (viewport_plotarea[4]-viewport_plotarea[3])/2 + h/2 + viewport_plotarea[3]
end
(xpos,ypos)
end
@@ -1734,10 +1735,11 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas)
if series[:y][end] != ny
@warn "Right now only the maximum value of y (r) is taken into account."
end
colors = get(fillgrad, z, clims)
z_normalized = map(c -> c == invisible() ? 256/255 : PlotUtils.getinverse(fillgrad.colors, c), colors)
rgba = Int32[round(Int32, 1000 + _i * 255) for _i in z_normalized]
# colors = get(fillgrad, z, clims)
# GR.polarcellarray(0, 0, phimin, phimax, ymin, ymax, nx, ny, colors)
z_normalized = get_z_normalized.(z, zmin, zmax)
# z_normalized = map(c -> c == invisible() ? 256/255 : PlotUtils.getinverse(fillgrad.colors, c), colors)
rgba = Int32[round(Int32, 1000 + _i * 255) for _i in z_normalized]
GR.polarcellarray(0, 0, phimin, phimax, 0, ymax, nx, ny, rgba)
# Right now only the maximum value of y (r) is taken into account.
# This is certainly not perfect but nonuniform polar array is not yet supported in GR.jl
@@ -1876,7 +1878,7 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas)
st == :shape && gr_polyline(x, y)
end
if st in (:path, :straightline)
if st in (:path, :straightline, :path3d)
gr_set_transparency(lc, get_linealpha(series))
if series[:fillrange] === nothing || series[:ribbon] !== nothing
GR.polyline([xpos - 0.07, xpos - 0.01], [ypos, ypos])
+1
View File
@@ -988,6 +988,7 @@ end
function pgfx_sanitize_string(s::LaTeXString)
s = replace(s, r"\\?\#" => "\\#")
s = replace(s, r"\\?\%" => "\\%")
return LaTeXString(s)
end
end
function pgfx_sanitize_plot!(plt)
+1 -1
View File
@@ -828,7 +828,7 @@ const ijulia_initialized = Ref(false)
function plotly_html_head(plt::Plot)
local_file = ("file:///" * plotly_local_file_path)
plotly =
use_local_dependencies[] ? local_file : "https://cdn.plot.ly/plotly-latest.min.js"
use_local_dependencies[] ? local_file : "https://cdn.plot.ly/plotly-1.54.2.min.js"
include_mathjax = get(plt[:extra_plot_kwargs], :include_mathjax, "")
mathjax_file = include_mathjax != "cdn" ? ("file://" * include_mathjax) : "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML"
+29 -3
View File
@@ -182,7 +182,7 @@ function labelfunc(scale::Symbol, backend::PyPlotBackend)
elseif scale == :ln
x -> PyPlot.LaTeXStrings.latexstring("e^{$x}")
else
string
x -> PyPlot.LaTeXStrings.latexstring(convert_sci_unicode(x))
end
end
@@ -1016,8 +1016,34 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend})
# width = axes_grid1.axes_size.AxesY(ax, aspect=1.0 / 3.5)
# pad = axes_grid1.axes_size.Fraction(0.5, width) # Colorbar is spaced 0.5 of its size away from the ax
# cbax = divider.append_axes("right", size=width, pad=pad) # This approach does not work well in subplots
cbax = divider.append_axes("right", size="5%", pad="2.5%") # Reasonable value works most of the usecases
cb = fig."colorbar"(handle; cax=cbax, kw...)
colorbar_position = "right"
colorbar_pad = "2.5%"
colorbar_orientation="vertical"
if sp[:colorbar] == :left
colorbar_position = string(sp[:colorbar])
colorbar_pad = "5%"
elseif sp[:colorbar] == :top
colorbar_position = string(sp[:colorbar])
colorbar_pad = "2.5%"
colorbar_orientation="horizontal"
elseif sp[:colorbar] == :bottom
colorbar_position = string(sp[:colorbar])
colorbar_pad = "5%"
colorbar_orientation="horizontal"
end
cbax = divider.append_axes(colorbar_position, size="5%", pad=colorbar_pad) # Reasonable value works most of the usecases
cb = fig."colorbar"(handle; cax=cbax, orientation = colorbar_orientation, kw...)
if sp[:colorbar] == :left
cbax.yaxis.set_ticks_position("left")
elseif sp[:colorbar] == :top
cbax.xaxis.set_ticks_position("top")
elseif sp[:colorbar] == :bottom
cbax.xaxis.set_ticks_position("bottom")
end
end
cb."set_label"(sp[:colorbar_title],size=py_thickness_scale(plt, sp[:yaxis][:guidefontsize]),family=sp[:yaxis][:guidefontfamily], color = py_color(sp[:yaxis][:guidefontcolor]))