Commit 1bdf93c
committed
fix(render): align rasterized artists with get_extent (pixel-edge extent)
Images, labels, and datashader output were drawn with matplotlib's default
pixel-center imshow extent (-0.5, W-0.5, ...), placing them half a pixel off
the world coordinates used for the axis limits (get_extent), the affine box,
and matplotlib point/shape overlays. The affine's linear part amplifies the
constant 0.5 offset, so a Scale(1000) image shifted by 500 world units (#216).
Switch to the pixel-edge convention (0, W, H, 0) so each artist's data box is
the same [0, shape] box get_extent transforms — they now coincide under any
affine. Labels are drawn outside the shared _ax_show_and_transform helper via a
direct imshow(origin="lower"), so they get an explicit extent=(0, W, 0, H)
(origin-lower order) to match. This also removes the residual half-canvas-pixel
offset of datashader points relative to the matplotlib backend.
Adds non-visual regression tests asserting the rendered world box equals
get_extent for images and labels (Identity + Scale), and that the datashader
points image occupies the points' extent.1 parent 50a6606 commit 1bdf93c
3 files changed
Lines changed: 78 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
730 | 730 | | |
731 | 731 | | |
732 | 732 | | |
733 | | - | |
734 | | - | |
735 | | - | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
736 | 739 | | |
737 | 740 | | |
738 | 741 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2400 | 2400 | | |
2401 | 2401 | | |
2402 | 2402 | | |
2403 | | - | |
| 2403 | + | |
| 2404 | + | |
| 2405 | + | |
| 2406 | + | |
| 2407 | + | |
| 2408 | + | |
| 2409 | + | |
| 2410 | + | |
| 2411 | + | |
| 2412 | + | |
| 2413 | + | |
2404 | 2414 | | |
2405 | 2415 | | |
2406 | 2416 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1286 | 1286 | | |
1287 | 1287 | | |
1288 | 1288 | | |
| 1289 | + | |
| 1290 | + | |
| 1291 | + | |
| 1292 | + | |
| 1293 | + | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
| 1308 | + | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
0 commit comments