Skip to content

Commit 617b8aa

Browse files
authored
GR: Draw all gridlines before axis (v2) (#4960)
* GR: Draw all gridlines before axis Separates grid drawing from the remainder of gr_draw_axis, so that all gridlines are drawn below the axis. Previously, y-axis gridlines were drawn after the x-axis and could overlap it. Fixes issue #4202 for GR. * Added qualified PlotsBase names missing from v1 port
1 parent f32247a commit 617b8aa

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

PlotsBase/ext/GRExt.jl

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1585,26 +1585,52 @@ function gr_draw_axes(sp, vp)
15851585
x_bg, y_bg = RecipesPipeline.unzip(GR.wc3towc.(area_x, area_y, area_z))
15861586
GR.fillarea(x_bg, y_bg)
15871587

1588+
foreach(letter -> gr_draw_axis_minorgrid_3d(sp, letter, vp), (:x, :y, :z))
1589+
foreach(letter -> gr_draw_axis_grid_3d(sp, letter, vp), (:x, :y, :z))
15881590
foreach(letter -> gr_draw_axis_3d(sp, letter, vp), (:x, :y, :z))
15891591
elseif ispolar(sp)
15901592
r = gr_set_viewport_polar(vp)
15911593
# rmin, rmax = GR.adjustrange(ignorenan_minimum(r), ignorenan_maximum(r))
15921594
rmin, rmax = axis_limits(sp, :y)
15931595
gr_polaraxes(rmin, rmax, sp)
15941596
elseif sp[:framestyle] :none
1597+
foreach(letter -> gr_draw_axis_minorgrid(sp, letter, vp), (:x, :y))
1598+
foreach(letter -> gr_draw_axis_grid(sp, letter, vp), (:x, :y))
15951599
foreach(letter -> gr_draw_axis(sp, letter, vp), (:x, :y))
15961600
end
15971601
GR.settransparency(1.0)
15981602
nothing
15991603
end
16001604

1605+
function gr_draw_axis_minorgrid_3d(sp, letter, vp)
1606+
ax = PlotsBase.axis_drawing_info_3d(sp, letter)
1607+
axis = sp[get_attr_symbol(letter, :axis)]
1608+
gr_draw_minorgrid(sp, axis, ax.minorgrid_segments, gr_polyline3d)
1609+
end
1610+
1611+
function gr_draw_axis_grid_3d(sp, letter, vp)
1612+
ax = PlotsBase.axis_drawing_info_3d(sp, letter)
1613+
axis = sp[get_attr_symbol(letter, :axis)]
1614+
gr_draw_grid(sp, axis, ax.grid_segments, gr_polyline3d)
1615+
end
1616+
1617+
function gr_draw_axis_minorgrid(sp, letter, vp)
1618+
ax = PlotsBase.axis_drawing_info(sp, letter)
1619+
axis = sp[get_attr_symbol(letter, :axis)]
1620+
gr_draw_minorgrid(sp, axis, ax.minorgrid_segments)
1621+
end
1622+
1623+
function gr_draw_axis_grid(sp, letter, vp)
1624+
ax = PlotsBase.axis_drawing_info(sp, letter)
1625+
axis = sp[get_attr_symbol(letter, :axis)]
1626+
gr_draw_grid(sp, axis, ax.grid_segments)
1627+
end
1628+
16011629
function gr_draw_axis(sp, letter, vp)
16021630
ax = PlotsBase.axis_drawing_info(sp, letter)
16031631
axis = sp[get_attr_symbol(letter, :axis)]
16041632

16051633
# draw segments
1606-
gr_draw_grid(sp, axis, ax.grid_segments)
1607-
gr_draw_minorgrid(sp, axis, ax.minorgrid_segments)
16081634
gr_draw_spine(sp, axis, ax.segments)
16091635
gr_draw_border(sp, axis, ax.border_segments)
16101636
gr_draw_ticks(sp, axis, ax.tick_segments)
@@ -1620,8 +1646,6 @@ function gr_draw_axis_3d(sp, letter, vp)
16201646
axis = sp[get_attr_symbol(letter, :axis)]
16211647

16221648
# draw segments
1623-
gr_draw_grid(sp, axis, ax.grid_segments, gr_polyline3d)
1624-
gr_draw_minorgrid(sp, axis, ax.minorgrid_segments, gr_polyline3d)
16251649
gr_draw_spine(sp, axis, ax.segments, gr_polyline3d)
16261650
gr_draw_border(sp, axis, ax.border_segments, gr_polyline3d)
16271651
gr_draw_ticks(sp, axis, ax.tick_segments, gr_polyline3d)

0 commit comments

Comments
 (0)