diff --git a/src/backends/gr.jl b/src/backends/gr.jl index ca31f3d3a..945915523 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1841,22 +1841,25 @@ function gr_draw_contour(series, x, y, z, clims) end function gr_draw_surface(series, x, y, z, clims) - + e_kwargs = series[:extra_kwargs] if series[:seriestype] === :surface fillalpha = get_fillalpha(series) fillcolor = get_fillcolor(series) - if length(x) == length(y) == length(z) - x, y, z = GR.gridit(x, y, z, 200, 200) + # NOTE: setting nx = 0 or ny = 0 disables GR.gridit interpolation + nx, ny = get(e_kwargs, :nx, 200), get(e_kwargs, :ny, 200) + if length(x) == length(y) == length(z) && nx > 0 && ny > 0 + x, y, z = GR.gridit(x, y, z, nx, ny) end + d_opt = get(e_kwargs, :display_option, GR.OPTION_COLORED_MESH) if (!isnothing(fillalpha) && fillalpha < 1) || alpha(first(fillcolor)) < 1 gr_set_transparency(fillcolor, fillalpha) - GR.surface(x, y, z, GR.OPTION_COLORED_MESH) + GR.surface(x, y, z, d_opt) else - GR.gr3.surface(x, y, z, GR.OPTION_COLORED_MESH) + GR.gr3.surface(x, y, z, d_opt) end - else # wireframe + else # wireframe GR.setfillcolorind(0) - GR.surface(x, y, z, GR.OPTION_FILLED_MESH) + GR.surface(x, y, z, get(e_kwargs, :display_option, GR.OPTION_FILLED_MESH)) end end