histogram2d puts NaN for 0 count; fix pyplot NaNs in heatmap; change default markersize to 4
This commit is contained in:
parent
068282af55
commit
a4c25321d8
@ -165,7 +165,7 @@ const _series_defaults = KW(
|
|||||||
:markershape => :none,
|
:markershape => :none,
|
||||||
:markercolor => :match,
|
:markercolor => :match,
|
||||||
:markeralpha => nothing,
|
:markeralpha => nothing,
|
||||||
:markersize => 6,
|
:markersize => 4,
|
||||||
:markerstrokestyle => :solid,
|
:markerstrokestyle => :solid,
|
||||||
:markerstrokewidth => 1,
|
:markerstrokewidth => 1,
|
||||||
:markerstrokecolor => :match,
|
:markerstrokecolor => :match,
|
||||||
|
|||||||
@ -64,7 +64,7 @@ function _initialize_backend(::PyPlotBackend)
|
|||||||
# problem: https://github.com/tbreloff/Plots.jl/issues/308
|
# problem: https://github.com/tbreloff/Plots.jl/issues/308
|
||||||
# solution: hack from @stevengj: https://github.com/stevengj/PyPlot.jl/pull/223#issuecomment-229747768
|
# solution: hack from @stevengj: https://github.com/stevengj/PyPlot.jl/pull/223#issuecomment-229747768
|
||||||
otherdisplays = splice!(Base.Multimedia.displays, 2:length(Base.Multimedia.displays))
|
otherdisplays = splice!(Base.Multimedia.displays, 2:length(Base.Multimedia.displays))
|
||||||
import PyPlot
|
import PyPlot, PyCall
|
||||||
import LaTeXStrings: latexstring
|
import LaTeXStrings: latexstring
|
||||||
append!(Base.Multimedia.displays, otherdisplays)
|
append!(Base.Multimedia.displays, otherdisplays)
|
||||||
|
|
||||||
@ -117,7 +117,9 @@ py_color(grad::ColorGradient) = py_color(grad.colors)
|
|||||||
|
|
||||||
function py_colormap(grad::ColorGradient)
|
function py_colormap(grad::ColorGradient)
|
||||||
pyvals = [(z, py_color(grad[z])) for z in grad.values]
|
pyvals = [(z, py_color(grad[z])) for z in grad.values]
|
||||||
pycolors.LinearSegmentedColormap[:from_list]("tmp", pyvals)
|
cm = pycolors.LinearSegmentedColormap[:from_list]("tmp", pyvals)
|
||||||
|
cm[:set_bad](color=(0,0,0,0.0), alpha=0.0)
|
||||||
|
cm
|
||||||
end
|
end
|
||||||
py_colormap(c) = py_colormap(cgrad())
|
py_colormap(c) = py_colormap(cgrad())
|
||||||
|
|
||||||
@ -246,6 +248,12 @@ function labelfunc(scale::Symbol, backend::PyPlotBackend)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function py_mask_nans(z)
|
||||||
|
# PyPlot.pywrap(pynp.ma[:masked_invalid](PyPlot.pywrap(z)))
|
||||||
|
PyCall.pycall(pynp.ma[:masked_invalid], Any, z)
|
||||||
|
# pynp.ma[:masked_where](pynp.isnan(z),z)
|
||||||
|
end
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
function fix_xy_lengths!(plt::Plot{PyPlotBackend}, series::Series)
|
function fix_xy_lengths!(plt::Plot{PyPlotBackend}, series::Series)
|
||||||
@ -730,12 +738,11 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series)
|
|||||||
end
|
end
|
||||||
|
|
||||||
clims = sp[:clims]
|
clims = sp[:clims]
|
||||||
if is_2tuple(clims)
|
zmin, zmax = extrema(z)
|
||||||
isfinite(clims[1]) && (extrakw[:vmin] = clims[1])
|
extrakw[:vmin] = (is_2tuple(clims) && isfinite(clims[1])) ? clims[1] : zmin
|
||||||
isfinite(clims[2]) && (extrakw[:vmax] = clims[2])
|
extrakw[:vmax] = (is_2tuple(clims) && isfinite(clims[2])) ? clims[2] : zmax
|
||||||
end
|
|
||||||
|
|
||||||
handle = ax[:pcolormesh](x, y, z;
|
handle = ax[:pcolormesh](x, y, py_mask_nans(z);
|
||||||
label = series[:label],
|
label = series[:label],
|
||||||
zorder = series[:series_plotindex],
|
zorder = series[:series_plotindex],
|
||||||
cmap = py_fillcolormap(series),
|
cmap = py_fillcolormap(series),
|
||||||
|
|||||||
@ -511,6 +511,11 @@ centers(v::AVec) = 0.5 * (v[1:end-1] + v[2:end])
|
|||||||
xedges, yedges, counts = my_hist_2d(x, y, d[:bins],
|
xedges, yedges, counts = my_hist_2d(x, y, d[:bins],
|
||||||
normed = d[:normalize],
|
normed = d[:normalize],
|
||||||
weights = d[:weights])
|
weights = d[:weights])
|
||||||
|
for (i,c) in enumerate(counts)
|
||||||
|
if c == 0
|
||||||
|
counts[i] = NaN
|
||||||
|
end
|
||||||
|
end
|
||||||
x := centers(xedges)
|
x := centers(xedges)
|
||||||
y := centers(yedges)
|
y := centers(yedges)
|
||||||
z := Surface(counts)
|
z := Surface(counts)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user