From 54e2b8bfe3c9114607542db3a39afddce409be62 Mon Sep 17 00:00:00 2001 From: jalvesz <102541118+jalvesz@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:53:50 +0000 Subject: [PATCH 1/3] Add spy for sparsity patterns of dense matrices and COO indices --- README.md | 2 +- docs/gallery/plot_spy.f90 | 70 +++++++++++++++++++++++++++++++++++++ src/fplotlib.f90 | 73 ++++++++++++++++++++++++++++++++++++++- tests/fingerprints.txt | 16 +++++---- tests/test_plots.f90 | 8 +++++ 5 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 docs/gallery/plot_spy.f90 diff --git a/README.md b/README.md index 820d451..8bff704 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ call suptitle("figure title") - `table` for a block of text below (or above) the axes - `streamplot` for the streamlines of a vector field - `add_frame` / `save_animation(file, fps=, loop=)` to write an animated GIF -- `matshow`, `eventplot` and `broken_barh` +- `spy` (sparsity pattern of a dense matrix or COO indices), `matshow`, `eventplot` and `broken_barh` - `hist2d` and `hexbin` for counting points into square or hexagonal bins - `imshow(interpolation="bilinear")` to smooth an image instead of showing it as blocks diff --git a/docs/gallery/plot_spy.f90 b/docs/gallery/plot_spy.f90 new file mode 100644 index 0000000..7947c4d --- /dev/null +++ b/docs/gallery/plot_spy.f90 @@ -0,0 +1,70 @@ +! Spy: sparsity patterns +! ====================== +! +! The nonzero structure of a matrix, as matplotlib's +! `spy `_ +! draws it: one square marker per stored entry, row 1 at the top and the +! column numbers along the top edge. +! +! :f:subr:`spy` takes either a dense matrix, whose entries above ``precision`` +! in magnitude are marked, or the COO indices of a sparse one as a +! ``(2, nnz)`` integer array of rows and columns. Indices start at 1. + +program plot_spy + use fplotlib + implicit none + + integer, parameter :: n = 30 + real(dp) :: a(n, n) + integer, allocatable :: ij(:, :) + integer :: i, k + +! %% +! A dense matrix: the tridiagonal of a 1D Laplacian, plus two corner entries +! and an anti-diagonal of tiny values that ``precision`` filters out. + + a = 0.0_dp + do i = 1, n + a(i, i) = 2.0_dp + if (i > 1) a(i, i - 1) = -1.0_dp + if (i < n) a(i, i + 1) = -1.0_dp + a(i, n + 1 - i) = a(i, n + 1 - i) + 1.0e-9_dp + end do + a(1, n) = -1.0_dp + a(n, 1) = -1.0_dp + + call figure(figsize=[10.0_dp, 5.0_dp]) + call subplot(1, 2, 1) + call spy(a, precision=1.0e-6_dp, markersize=4.0_dp) + call title("dense, precision = 1e-6") + +! %% +! A sparse matrix given only by its COO indices: a 5-point stencil on a +! 6 x 6 grid. The shape ``m``, ``n`` is passed so that empty trailing rows or +! columns still show. + + k = 0 + allocate (ij(2, 5 * 36)) + block + integer :: gx, gy, r + do gy = 1, 6 + do gx = 1, 6 + r = (gy - 1) * 6 + gx + k = k + 1; ij(:, k) = [r, r] + if (gx > 1) then; k = k + 1; ij(:, k) = [r, r - 1]; end if + if (gx < 6) then; k = k + 1; ij(:, k) = [r, r + 1]; end if + if (gy > 1) then; k = k + 1; ij(:, k) = [r, r - 6]; end if + if (gy < 6) then; k = k + 1; ij(:, k) = [r, r + 6]; end if + end do + end do + end block + + call subplot(1, 2, 2) + call spy(ij(:, 1:k), m=36, n=36, markersize=5.0_dp, color="C1") + call title("COO indices") + + call savefig("spy.svg") + + print *, "wrote spy.svg" + +end program plot_spy diff --git a/src/fplotlib.f90 b/src/fplotlib.f90 index 9fb0972..d5fd7de 100644 --- a/src/fplotlib.f90 +++ b/src/fplotlib.f90 @@ -29,7 +29,7 @@ module fplotlib public :: bar, barh, hist, fill_between, fill_betweenx, stackplot public :: errorbar, axhline, axvline, axline public :: pcolormesh, pcolor, hist2d, hexbin - public :: matshow, eventplot, broken_barh, streamplot, table + public :: spy, matshow, eventplot, broken_barh, streamplot, table public :: add_axes, secondary_xaxis, secondary_yaxis public :: add_rectangle, add_circle, add_ellipse, add_polygon public :: add_arrow, add_path @@ -197,6 +197,11 @@ module fplotlib module procedure imshow_z, imshow_rgb end interface imshow + ! Sparsity pattern of a dense matrix, or of a COO index array. + interface spy + module procedure spy_dense, spy_coo + end interface spy + ! One dataset or a whole block of them, a row to each. interface boxplot module procedure boxplot_one, boxplot_many @@ -2704,6 +2709,72 @@ subroutine imshow_rgb(z, extent, origin, aspect) end if end subroutine imshow_rgb + ! matplotlib's spy for a dense matrix: a marker at every entry whose + ! magnitude exceeds precision (default 0, i.e. every non-zero entry). + ! Indices are Fortran's, so the first row and column sit at 1. + subroutine spy_dense(a, precision, markersize, color, marker) + real(dp), intent(in) :: a(:, :) + real(dp), intent(in), optional :: precision, markersize + character(len=*), intent(in), optional :: color, marker + real(dp) :: tol + logical, allocatable :: mask(:, :) + integer, allocatable :: ij(:, :) + integer :: i, j, k + + tol = 0.0_dp + if (present(precision)) tol = abs(precision) + mask = abs(a) > tol + allocate (ij(2, count(mask))) + k = 0 + do j = 1, size(a, 2) + do i = 1, size(a, 1) + if (mask(i, j)) then + k = k + 1 + ij(:, k) = [i, j] + end if + end do + end do + call spy_coo(ij, size(a, 1), size(a, 2), markersize, color, marker) + end subroutine spy_dense + + ! Sparsity pattern from COO indices: ij(1, :) are the rows and ij(2, :) + ! the columns of the stored entries, 1-based. m and n are the matrix + ! shape; without them the largest index in each is used. + subroutine spy_coo(ij, m, n, markersize, color, marker) + integer, intent(in) :: ij(:, :) + integer, intent(in), optional :: m, n + real(dp), intent(in), optional :: markersize + character(len=*), intent(in), optional :: color, marker + integer :: nr, nc + real(dp) :: ms + character(len=:), allocatable :: mk + + if (size(ij, 1) /= 2) error stop "fplotlib: spy needs a (2, nnz) index array" + nr = 0 + nc = 0 + if (size(ij, 2) > 0) then + nr = maxval(ij(1, :)) + nc = maxval(ij(2, :)) + end if + if (present(m)) nr = m + if (present(n)) nc = n + ms = 10.0_dp + if (present(markersize)) ms = markersize + mk = "s" + if (present(marker)) mk = marker + + call ensure_fig() + if (size(ij, 2) > 0) then + call plot(real(ij(2, :), dp), real(ij(1, :), dp), marker=mk, & + linestyle="None", color=color, markersize=ms) + end if + call xlim(0.5_dp, real(nc, dp) + 0.5_dp) + call ylim(0.5_dp, real(nr, dp) + 0.5_dp) + ax(cur_i)%y_inv = .true. + ax(cur_i)%x_top = .true. + call set_aspect(1.0_dp, "box") + end subroutine spy_coo + ! matshow: an image of a matrix. The first row is at the top, the ! cells are square and the column numbers run along the top, which is ! how a matrix is written down. diff --git a/tests/fingerprints.txt b/tests/fingerprints.txt index 3350db4..1bd7d76 100644 --- a/tests/fingerprints.txt +++ b/tests/fingerprints.txt @@ -70,15 +70,17 @@ interp 640 480 00000000000000000000000000000000000000000000000000000000000000000 hist2d 640 480 4041a024a1408408b2be65f4e8f4b0b67cc8f82c0babc84d0a4645ca7e988f58d994304b3d33dd453f6d8d6b6238624271ca4f372bea702e58ba63044e5861147da1e388fb32744ed88ee843cb9b8d0814252e2df217d18c501c62262e5d5ad05f416b56220b7207a821074c2f6aba9df04383d12a242f9a9b83430147f196987de7a1a00bf1a60930384d27aac7b6df24695566e48f9d9b2d83614c228de1ab22659fd578d296507370313c70f61555802ca0470b50440ceec919ae3c78eef65bc7f5e6aefef5aab1b2ab8d18181498c5e13f856b05c04010d5ffb3dbf44e40664862ef15129c037c03286631713065b3b19704034a2ba0b1e31e8e59ee8e56d38bc2e9955e3222a66adfd2aa13d5499910dafc0656a15c85605cbdd2275e0e3ac380fd56e3a4e7db600f67944500136414f24bc8fa63e2b9d4196a4e322bfa587d62c2e7045523f87c6359f549420f1c993003086110082205844ab7e174200338bae7e7e6781af66afa8f2407a262ec71a966c006340ecd31ec6675cde9b8ac5f9aade059bce0120da2b02dfcdb4b3d1bdc07a246726217b2d9f0905c1f0c487325a60c42d53621f43d9e37790b3800c2c400085444c297ad71b432368ba26b85999e05070eca26974bfbab957b1168d2d2be79480d0ede644eec8b5ba0752503aa246d065c66c226f84a8d450ce97165589ad149a2faf54500846f3ab3bf hexbin 640 480 99b30fc0fb6c26fa6b0ac75f8750ad84afd225facaa312911eae6b8e1147bd12206262f1348f73b5f3324344e81fe043e70a0791528a781c16491874ad5264974252b65e2bb0996ad9f163d966983b88d362951b2c3b99fd19ac23ee173b96e393f1285ccf1b665691044f9cae5d2a9e066b34d07a21261bb22a09259113103596a27af462140464114d33ad11e8a2cfd49c7d0072aa2c00f65b094481536e3dcb41a46a6d4c0872a24617b1c470493fd19fcae2177fa3e236083cca6c5322db4b3281d2772ea03c5d15b6f9b214345245f0804dbf253f67d2a6ebd526f4d888c13e6d251c575b7f382008792235aa8921b9c45258d9ddf15f21dcd4ab574f298e182f9d82c67b86eebbe29e95712ffe77bd969572f30511628e61de7304024f24636db949feae604e5a7c266b4ba168a0bb22a22f00dac7d105331fa322f1dd2719d31d35c8813cdbb39a41c712f74a521cf639bbbbf10cd7c79b6cdcebd0e12c8936af783982b94d5247703532995e7b0158ed6b183df348348f4e638f505df5284f4ab34d16c3291f9cab23b5c1e59d77105e3adc14d2377cc382688cc91f0d1cfd2396476abc90d03752632f9ab06067bb1d5653154fabc718e463a94a44de07b388248af882012efdc8c3032dc88a14d2ee9613da8831ecd19ee3a6f9e66f787f1bf34dabc6274e8199c9dc08e90116a552f3024a0d3d394440f1e6099d matshow 640 480 0000000000000000c1f68b49611d1876986106d3089f6b02e98149e9b46f3298085c49f68f7eed97b10e4210dc621374fdbb9977ee00e71000000000000000000000000000000000d8c64c7df3935f7abf242648a0005daf8e9ea78807bd9d6eff4d1a76a081f49ef40077f2b384f49fdc134541f8b4f55c000000000000000000000000000000006c8a4986bed62f6d0863022214a004009500c1010059581606d404c4cde74009a16a024224a4263a8d50298c65561a650000000000000000000000000000000052335479d4708a8228000236048125042020431142020002408a002034284242412010608680800181b07cdde6fd70b00000000000000000000000000000000001aa17bd55a6165408408b842c8008020129220010040080018001231d3a900008284a44a5d489009a173264033709bf000000000000000000000000000000007ec1071f89d2708540000091ab8c100f405240520000100825c8c022a0207a0acab2bfa439931cc4431f41589f1e64a0000000000000000000000000000000001b47500a4108cef61891232a943593221840809904d4481048ce4b7f0fe405918b537d8a464b63783d83e18e91c8533d000000000000000000000000000000006a2e4ca12666f2f5e8276fccb099ad081b64144b04af8dce600ffea7b95202b34e4d9e0bf908c28fe21eaaa0783e9c740000000000000000 +spy_dense 640 480 070b551691b94f3dd058af2c1396cff796b670ab97129db4649308f79ce832988b7a46291f6ea7058c290af8ef56ae935e72fc48d082b86765ae61ad337599a5c49bc08167376fccccc40107209da90588005c700c4e17b827098d900c6b41d901452a4208db47295276f945b304fdd25293a1ea828285c3baf53bfd16dcefc17101407e64101804dc5a2e30c74e3ae22f87f52aca141c1e0000000000000000000000000000000000000000000000000000000000000000d1b326e7f4fcbf8f7ce262184e01cd1db7495b2512e113a700000000000000000000000000000000000000000000000000000000000000000000000000000000a8dcd1a316ed0287778b03054cdb512131b886bc8666833c00000000000000000000000000000000000000000000000000000000000000000000000000000000bb6a6bd70a94057d2da5868b1cb92291cb38c34b6d7e65400000000000000000c21b82c6550d0aa60e8cd3ddcb124e1900000000000000001c533293527ad8b8f1449c6d30d95b5e3370b23b73aade2c79157ebec5002952378ecba9879ce568caf8653c03deff98ba7cc37721ac02c54f456f98ed0ca7e91061cfcf4eaf535c228f2e88c0ce736a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +spy_coo 640 480 000000000000000000000000000000000465ec06debc7efd121055f6285fe6282c8ba4012a049b7009b7770101b8eaaf02009400002020000000000000000000000000000000000000400014200040008d864e267378e4fc25db74127621f3f00b835ee019a572f5ec2609428b1e249a10827c018fac3ca20000000000000000000000000000000080004000282409001a4fba7e89bcbee700000000000000009a3395d70483c498ffff51ee1d2c36161951008767273794000000000000000000000000000000000000040100081088285b1e4a587f3b8b00000000000000000000000080000000c2d783c4c2086560e8702e96a521625b000000000000000000000000000000008010000011000000315e7006ceeb4ec600000000000000000000000000000000bdff9e7e67a29e2c3a10032dc0b41410000000000000000000000000000000000000214000020034296fdb84f1b7c3c7547615404964ffdb0000000000000000337260e050081e93032a47330c51e800000000000000000000000000000000002c202200028022009e68a62c80d4b49f00000000000000000000000000000000a3e6148089d8e04e444b546488826b6000000000000000000000000000000000000000000000000058793d7de4bc834fc42d084a25d3befea24e392a9727b215ea7e950e4aa003f1d01010800c2100000000000000000000 eventplot 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73257cf3d338ba82b5ba1d1c2f1d583fb931f68bf7b6b9c555b3f93ad9bb4292d516491874ad52649751701daaa5a3c9f8ad3cf7db776fd496729cf567f2db6b4825db74127621f3f0ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cda7764185f5ae3a4835bde8a3578e7c2cfd84f44db00ae93b15b341ab4c16e85612829d37f23653dd86e700fa95b6b1459e0701520b3845f8d1b326e7f4fcbf8f85d522cf984a473cea6141ec322a8b2c19429fda9257ff2c0cbaf04fe9e66523c7c67d5b6dc4860c2b6987816f2262a819dff2fbe5950404a8dcd1a316ed0287550c77f6fae7c39f1d0397a1d804f77b6b17e358a38a05019df9d03c3fa5f8680339923f8f0c6735b8a82dcc7851ac790d3ab560d3782963bb6a6bd70a94057d529a8dcdcd842ced4f014962ee6e95bafd3e09a482ccd546cc347c5bcbff013f89b15e31c243608b79870f86b125f35ed70c520ac7017c0ef1449c6d30d95b5ed01a248c444ab0e7e8b9c871ae993ac2000000000000000000000000000000000000000000000000000000000000000000000000000000004cb261193db438d30201b01800000a416215fe4ee35fd93c81d163a5bff7c197ece1d342dc07c9cda97770045fd29a86abf30555ba2a9fcb22f5fe654c3218d46fc51c434a25072e broken_barh 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73a3d27805fa4a833db82411efb921440331f68bf7b6b9c555b3f93ad9bb4292d516491874ad5264971090d532cf35236f076fcba7022744f0f8e55dcfb707664773d1556cf8aa32ab23fab2f08a79781a4a22cfee60873198e4e13cd7e4612024a359466920cac7cd7602d92db3ed0dc3f9951315b0b243c20000000200200400f3b0bf28b1ebfc84b5095a1b3626aea80100110210100010bc831c3e55df4a01d1b326e7f4fcbf8f2a36094e0318a533705a48cbbd01a057ca52520950b9366e7513b421082a4877fc6551605a0aa87dfc9e327a5cb9751b5dd05298fc5fc82ba8dcd1a316ed0287c9ffc8d8f9b39b158f0174fd361d627c5ab98eb1be894e5b9cf5510699e06f7fced23ed2af2b8466a624c1dfe739f5b066f2783677d884d5bb6a6bd70a94057def0334f6ab4b7a7e156b3898b1d244e9e85ce835e763e8b12a63cd8933e2272f7e1040b0250ae2dc246c37ac1119616f10aadb6288b1071cf1449c6d30d95b5eaba825cbdab28af0b6e549c4b9e291d49ec8195458d4c2a3d443919fcb1c042c045d2b8b338117aa6a3a8bc6ef964428fc0207fd63247ba14cb261193db438d30201b00800000241de6024a4347b3cb65195cfa43f2c0de4a1cdcf4ee9f86e884194f737133831c970d2cf7a6713b2c1e53691fc93d134a5398796d272358e67 streamplot 640 480 8b511cf775db026cfd11d0d69991f3b2a4c17dfa68f0c353dcdea2f1a007391f2deed5f97b9652023076c7b7eab0c54562b22bf6b83790d416491874ad526497947ab6eb1494826d0dd76b26db659273c53668666d8706cd1f7ed99cb383f61317b28ded290ff913b358e4c129ea51b5141af6e4d373472f04df34b829c01bdaeb63816b52123a2b338e126c578a3b4f961ea413140907a30ea74f8cd36042602e548c435e17818b85bfb79b5c884efab52223bfdf5aa7f2b032f6788e5e4b71468f74d88fae5ce3c304f74e6570b863de63ff9330bde0ac810eb0f326a3d93646572a49dc56879f1bd0cc9a0e6bba3ff16953c1e5eef569a3379df45f9614ce49b0b18393a8cbd6c5105f7e6dfca1e2cc32924711df44aeecef58f6e3e8c135b94d507a5488f4427958f5c0ebef939b0c62408392622570a6cadd0f6c60eb25f1693d9cbd1dc89ac68f5b5957c2cdbeb9b7b86a370b2faa029b80ea77ab93be7fcca7ae41a9a1b24288a989247d3d9ba7aaf42a9a743325b743f0dc96df23f10ca6dd07162e2d8dfc78d2e51df226b059bea507431f18be86fbea273e91a7a0809150dd5b3a353a3f7272664cb8060d568a099c33e1bd35c6b728daf07be7c1efdba1ebee3180aad35cbccdb1df16d18bfea8aa31045b9bac600343c926888677cde16c33a203c8413ab29cc5004aea212b2bd526a1114fe9ac0dfc894404e5 table 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb7325451dd7b2f05dcc81e27ad5136fcc8231f68bf7b6b9c555b3f93ad9bb4292d516491874ad5264978c80f84510008c342d34f7db63eed494729cf567f2db6b4825db74127621f3f0ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd4180158cc08d4882760eae563d5ff9a200000000000000000000000000000000000000000000000000000000000000000000000000000000d1b326e7f4fcbf8f2011087149012534b7495b2712e117a700000000000000000000000000000000000000000000000000000000000000000000000000000000a8dcd1a316ed028738601033038e840031b086fc8667833c00000000000000000000000000000000000000000000000000000000000000000000000000000000bb6a6bd70a94057d4828c94ac40404a0cb38c34b6d7e654000000000000000000000000000000000000000000000000000000000000000000000000000000000f1449c6d30d95b5e001084b0200d4320ecf9c871aa997aa2000000000000000000000000000000000000000000000000000000000000000000000000000000004cb261193db438d32e2453b6b9bf03c588a3256971e8fa3208291c849e87cf5bf2b0c2972ffe5704e1f3bac0b6473fed9c02f950f79bba75879cf55178e07c3979dc22cdcc1736c2 quiverkey 640 480 4001a02401400000ed30c8ac8937599cbce4cc12afcdd34171d9d1ea2d095e1432e4ba98e28f13c1a918e9c576bc16efa31971298b53126e766d1a44a572609489acaed4b417d95b163857a33462d091c7309dfe620907556ee8311ee14aa6e9a2ec03df3a13dee0a807ecd57923db291025ad15173e57675e48fa5faf3e6fa01ced2537b00465f29d017213ce603dc9377c7ee362c55be94e5f7395bc8b1e1dada5b9d89d1402c97bbe7af52a05a8397a24a5441732b6e05b41d757bc7b671cd8d8ac0106dd83ce1ea4a07055d5eabf4ee704695d486be9ec6ffecd293421f137d911974edd04ce7b87f2b1de4f4e532e745f3be5a5dad60fc94340ab21e1bb01f717c2b8dad979223b93df2e7e548ae2f10614a25355d94b982b1ef4b348884e73e9b1206d54be543694ac4dff01e033ea3215c2f813c932e1c8fcd17c869d4c91bcc2b1ebdbd015fb3f2d36ea5f759b2dde86046214bd425810969ba52bc6f2672f28961de8081ece0d7e688fc06a38131b5f34f63ab3c2148517523e458062a9364cc17d15b850f7743dff468cece842a5349ac2c065ba7d82f7cc69ca2f3b22521e91d33c7ce05da220123d76de578b0347ee9affceaddbc0188f5ad0f30201b09900000a4159fe705165194fcf41883fd9e0eb9fbb410056ccc93d5c74e15a4aa540ead833e0a472a703b942e7f9e36ee0b32a1ce9a79eb7d569d75a4f -contour3d 640 480 000000000000000000000000000000000000000000000000e66e480f2246f18b4190746bb175b60100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057cc42b820f8db1724c33bed966da0b088080800000001310000000000000000000000000000000000000000000000000000000000000000adfb17fa87f8224332c8a104081f9fa08c2f13a4ccf2879d0e0ab157467de8e4d9a9e21d664b6b0e000000000000000000000000000000000001000000000000fdbf2e26f5f424e66cdc67c5e3d23f3ed4f751a6b94de6fb0abdc1be33048c0fda77353b9f0cd6eb00000000000000000000000000000000000000000000000012fc01176b2bb2cd0fe3940d8d0db9e38011d900ecbc9dbdbb4eeeb8b50c1ad76b90612107b90361000000000000000000000000000000000000000000000000dfea19b6a76b0a7690510614227e2c31ead4734ed55572308de7b6ac75d6a870c919b313d68a48f2000000000000000000000000000000000000000000000000191a4ae2fabaca98c8fb0bdd63545df3aeffba41ace3e794ac61e3e43e7fded70000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000009651ef5a52c32e3fe5064f8b8f63f42200000000000000000000000000000000 -quiver3d 640 480 00000000000000000000000000000000000000000000000082c1c745f94e6bedfabe0523e6b686a7a4738eabbf353f1a107222042030600200000000000000000000000000000000000000000000000000000000000000000f995680eaeca54d0d8f91770ac4eb0059fc65c98b9709630000000000000000000000000000000000000000000000000000000000000000513f5e2b94382da8d48b2e58a2510260deb0b242335e380f8280070855b88486de67de05b0ca5c0b000000000000000000000000000000000001000000000000353f0a7f516cf79f1d1d86ce63e904e8821dd4df0ee684a3543aed6aefe8c6975bfdde2ec6127ce100000000000000000000000000000000000000000000000078006a256a705ee1b1d2c156ede5dce55c741bafffe42579008bfb9f77513c48f05c0b636d0a3102000000000000000000000000000000000000000000000000c407e7851d7e6c2d5f4d445032a6b310af342c27d13bea15e87f823f6191df6db055d22a58ec03eb0000000000000000000000000000000000000248001000844ce7dae3caeffdfd479cf38d9230376b0d494a7a948fd66ab85da4fe0d7c753d0040020000000420000000000000000000000000000000000000000000000000070e5931a9d08c6f8000010121210160d6d8599fcaa4825c3c3d848adf40004800000000000000000000000000000000 -bar3d 640 480 000000000000000000000000000000000000000000000000ad0c53c26b81a4060accc693178a345c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044914befa06813daa28228e983652cd889020800001001310000000000000000000000000000000000000000000000000000000000000000a40e261286508498f4e2d0c181e699640f2d60d046033aec07d970ae54714b83bd41634cb9f6fa6d000000000000000000000000000000000001000000000000fbe8cb972a1dbe6d960ac9f32830bc439aad1f6444c94d1aa03adc861f6d3af79448781c88107527000000000000000000000000000000000000000000000000a142b4514de6c381d84db3bcdf4ea482c282eb83a8f117de9c35b61264fad976274f673a9174ce200000000000000000000000000000000000000000000000004fa2f3142502d58fa0fe86ff8495b87cd46a8580653f58a6ecca91a34cfe98d00470cb7ba51cb1f10000000000000000000000000000000000000000000000008358aaa59d2c269aaebf8c75d3409ce8a4302561475113797c1326789cddb3310000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000002a2f5a68e328b8eb020ce2498069af3300000000000000000000000000000000 -trisurf 640 480 00000000000000000000000000000000000000000000000082452191c4ce82a0397e38176ad6ddfd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ce93960f99d6b10575b5a9330ed3ff3800000000000001000000000000000000000000000000000000000000000000000000000000000007f8d82fcea4d0e920a77c20740512812236c1eee596f3e861b023d9fd4fd970499008930125425eb0000000000000000000000000000000000010000000000003dbdf912cacdb3d03e4bd9067a1b6fdd7a1fc1ce8220f7165f533e825a74141b5c296b670bdba1f3000000000000000000000000000000000000000000000000265676d5d87ad9ebd40261b39f3148c29454732661110ed67bbaae592d511e89ff822ac6e397aa7600000000000000000000000000000000000000000000000037c7eee3468bb33f97a39b2692a727a98706991ca92b19b08ae5b6bcb4d4a8518d13b213d4824872000000000000000000000000000000000000000000000000283ca8a3b0fb6b9cc9db637a37decdffc0a5f4bd12a3b693ad61e3a43e7fded7000000000000000000000000000000000000000000000000000000000000000000000000000000000010000101000028d4912e5a0fc9af2de5064f8b8d63f42200000000000000000000000000000000 +contour3d 640 480 000000000000000000000000000000000000000000000000e66e480f2246f18b4190746bb175b60100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057cc42b820f8db1724c33bed966da0b088080800000001310000000000000000000000000000000000000000000000000000000000000000adfb17fa87f822433ac8a1040c1f9fe08c2713a4ccf2879d0e0ab157467de8e4d9a9e21d664b6b0e000000000000000000000000000000000001000000000000fdbf2e26f5f424e668dc67c5e3d63f3ed4f751a6b94de6fb1abdc19e3304cc2fda77353b9f0cd6eb00000000000000000000000000000000000000000000000012fc01176b2bb2cd0fe3940d8d0db9e38011d900ecbc9dbdbb4eeeb8b50c1ad76b90612107b90361000000000000000000000000000000000000000000000000dfea19b2a76b0a7690510614267e2c31ead4734ed45572308de7b6ac35f6a870c919b313d68a48f2000000000000000000000000000000000000000000000000191a4ae2fabaca98c8fb0bdd63545df3aeffba41ace3e794ac71e3e43e7fded70000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000009651ef5a52c32e3fe5064f8b8f63f42200000000000000000000000000000000 +quiver3d 640 480 00000000000000000000000000000000000000000000000082c1c745f94e6bedfabe0523e6b686a7a4738eabbf353f1a107222042030600200000000000000000000000000000000000000000000000000000000000000000f995680eaeca54d0d8f91770ac4eb0059fc65c98b9749630000000000000000000000000000000000000000000000000000000000000000503f5e2b94382da8d48b2e58a2110260deb0b342335e380f8280070855988484de67da05a0ca1c0b000000000000000000000000000000000001000000000000353f2a7f516cf79f1c1d86ce636905e88a1dd4df0ce684a3542ae96aefe886975bfdde2ec6127ce100000000000000000000000000000000000000000000000078006a256a705ee1b1d2c156ede5dce55c741bafbfe42579008bfb9f77513c48f05c0b636d0a3102000000000000000000000000000000000000000000000000c407e7851d7e6c2d5f4d445032a6bb10af342c27d13bea15e87f823f6191df6db055d22a58ec03eb0000000000000000000000000000000000000248001000844ce7dae3caeffdfd479cf38d9230376b0d4d4a7a948fd66ab85da4fe0d7c753d0040020000000420000000000000000000000000000000000000000000000000070e5931a9d08c6f8000010121210160d6d8599fcaa4825c3c3d848adf40004800000000000000000000000000000000 +bar3d 640 480 000000000000000000000000000000000000000000000000ad0c53c26b81a4060accc693178a345c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044914befa06813daa28229e983652cd889020800001001310000000000000000000000000000000000000000000000000000000000000000a40e261286508498fce2d0c181e699640f2d60d006033aec07d9e1ae54714b93bd41634cb9f6fa6d000000000000000000000000000000000001000000000000fbe8cb972a1dbe6d960ac9f32830bc439aad1f6444c94d1aa03adc863f6d3af79448781c88107527000000000000000000000000000000000000000000000000a142b4514de6c381d84db3bcdf4ea482c282eb83a8f117de9c35b61264fad976274f673a9174ce200000000000000000000000000000000000000000000000004fa2f3142502d58fa0fe86ff8495b87cd46a8580653f58a6ecca91a34dfe98d00470cb7ba51cb1f10000000000000000000000000000000000000000000000008358aaa59d2c269aaebf8c75d3409ce8ac302561475113797c1326789cddb3310000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000002a2f5a68e328b8eb020ce2498069af3300000000000000000000000000000000 +trisurf 640 480 00000000000000000000000000000000000000000000000082452191c4ce82a0397e38176ad6ddfd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ce93960f98d6b10575b5a9330ed3ff3800000000000001000000000000000000000000000000000000000000000000000000000000000007f8d82fcea4d0e920a77c30540512812236c1eee596f3e861b033d9fd0fd970499008930125425eb0000000000000000000000000000000000010000000000003dbdf912cacdb3d03e4bd9067a1b6fdd7a1fc1ce8220f7165f533e825a74141b5c296b670bdba1f3000000000000000000000000000000000000000000000000265676d5d87ad9ebd40261b39f3148c29454732661110ed67bbaae592d511e89ff822ac6e397aa7600000000000000000000000000000000000000000000000037c7cee3468bb23f97a39b2692af27898706991ca92b1bb08ae5b2bcb4d4a8518d13b213d4824872000000000000000000000000000000000000000000000000283ca8a3b0fb6b9cc9db637a37decdffc8a5f4bd12a3b693ad61e3a43e7fded7000000000000000000000000000000000000000000000000000000000000000000000000000000000010000101000028d4912e5a0fc9af2de5064f8b8d63f42200000000000000000000000000000000 tricontourf 640 480 4041a024a1400008d3b8e6a719b1a0719b1d888b42c0c097b8d29532f0a3cba879cf09a3b0322af6996f842f32d8371a3f5132673e10644201094a0080103021f935ef561817208e3d4e32da483b322211cc4dfc71d369afc5db42156cb9f52d78dc57f69da85d997942972eb40a338d770f31913bfe24f2ad001854c4a31021a6f82f423c0cdb0a2513340af34c16364002010041b1662a1b448000117292242f57b3ff6a314b582a83ff40ec01c4fe1dd3d8466e63f0634257060080002086c7713b4d8bd6da371fa9e7517a36c848be68471ec1af5c03b708380d7041126af3afe77fcb3c53bc275b4a3525160f58d2a8f2d33e91168e1510a0a901094202fc6845c8e9a26814a4a99c0ad22497c780d92025706112a81f4058632a8826a382037d2fe18f00433a90d79b4595704056fe79904c3cb72042d7c82ae8c31d585e4803099d42c3602d7cb7d4787d5210c400938290d028184000004c8004a004a0a001c8030160a8e3a79d2e754ba8401e6b2a4d3c236c0a9cebe409dac8722401480b0b401db84ae14fd447bf6f7ef2a66da4aa77ac5b62b2b84711a5300a729a76334b40a229d2e4c2722745fb21c7463001e92ee9d06fdcd6f967f41d5b110201b00800000241fe46dc46ed1b6fafb5d1b714d08a24903e47ca50e7f528d3954a382e3845555885156d5fcf3a5d39201807a3af04e36d00179e625fda5d43 tricontour 640 480 4001a02401400000a91a53c699a0ebb2a0c33cfae1f6c9338705f002f5d195feaceed7254226db31b9e287733739c555a3793e498b46b6d416491874ad526497db47b7406e50cc7e855c99d772efb0a74d00acad497b0ee56e017d6dda4647ae5e20c65c6e8f8dc0aef28c82fb5b6d58843bdbcd45860e36576722fbc8c1180db3f267183a9a1c05d249e83148fa6a0bc2615cfa4e2a4261884590db38c86af39dcd7825761969ed311b22776281a79e7b355ff6158cdadb7614875e345300593f661b78999daa03e6f3993dd2ea44457f13dd556bd3b455d2199418efe710dfa5b645411b1ccef66322fabb1030659f8551277557a7205851c1a9e4ad8fa8f6d380544925c42be55d487c6edcfb20587ab2e8b239449d44e49fcab9c2af395cdbf0b370526e0952fdefd028c38fa63cfa020ee39da1aa51240637e571fc9de15a7b9ee6e52636388936490bba9cb5276b9b8d90b06be89ef284cbdddcb393d06ce742ccc22268f6c0e11f39310370a0333f76ce1568f52f136a63709f70f8a31b1b041accb75e6aef92dc3a8ca757595145a89a33b60b33ab78832cf0bd4746b02271e18bd25c7e8eb5b3875bac6cc09cb512f065cfd685030fb501e8594cd30201b008000002414358eafec6dafa1498f10e1c7d8a63408ab6fe42fb43bb6d7db798653a6b1bcbc4b18907b01496f0b38a3f5c29bc5f266f450c430a27072e tripcolor 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb734ec9af9f0bcfe6903afdcf924fe661413de20b7fbeb985d501223bcf070946e80000000000000000cb567e6aafc2d48d4af9a4cb8e78d34b958efdc01d02f3198177807f020c600577227f4d3085ab90edc2a236587a581996e3b6a31bba2de1000000000000000028e2b199a2fd8d3e6af96597cdf7eab5692820e22422e661ef89a43a02529e35cc9f6bd7281c9e6ed4784185afb1be9e031131294625b14500000000000000003719a7b7bb017171216ce301fbf21f642143808a020f0349100008210202d0820020840c24000a8105fd4d64c4431042cfa6b7aca85816710000000000000000a0f285b12ad4fa952d75b790d9eeb3db80030461204409082c31280043b48d66bc8421ba386108a5d2bd91707850db37e0b7d2a14707bf0b0000000000000000ea5d73b9c752d670390dad0208d4c3c7138011a0080910082010e2400230c021b6e948936e22caa8199ad47ed06613ae9f8d9568dac14e27000000000000000028cddda11f9f4668a1327618c250a529013dea722400cd4ea8dc2d4ac9bef8e05bfb090213f76ac89891e55d62aa1f763b6e703100c5f6d700000000000000000098beb3939df1123a0d81d0c822316366797cb4b4e5aae625c91be0a92afb2b41521250237d23861838e28c2a40305f8aa22fe9f11de55a0000000000000000 @@ -104,7 +106,7 @@ invert_axes 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73132b2bb30214 annotate_arrow 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73eacfa209303c0a7d2382550ad2e283a3b9e68fe7b6b9e555b3f93ad9bb4292d516491874ad526497d9018ab3abf09c9f6d3cf7cfe51bd4b6a316dde7e0993c6da1f9c394710b92a4ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd1e365be734bf30d9c8c75de94967c8d44e67752ef2b3f23eb852794794835794000000000000000000000000000000000000000000000000d1b326e7f4fcbf8f81e6876be5a89fb4c79d0f991432208b0000000000000000af66226a01a5a44d4f1e03c4e4d4db4700000000000000000020010001001000a8dcd1a316ed0287ddcff3d5bfd5c4abab9896fcedf883640000000000000000000000000000000035cb227a055d301d0000000000000000d2d26f0d075f4cecbb6a6bd70a94057d339dd5d44688a498cb38c34b6d7e65400000000000000000ca178fdeab02310d662abce037a7641600000000000000005ab9138f44416a39f1449c6d30d95b5e806e41351dc2e546e8b9c871ae993ac200000000000000004c50948095a2a1023bf4a6359cc33986d00f253bbd0ca596319a162bed793f2a4cb261193db438d30201b01900000a415ab6cdc0b4efee4855a4e8f73c02eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e transform_axes 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb732139982bdae10192bfa7100fef889aea39f68bf7b6b9c555b3f93ad9bb4292d516491874ad526497d9018ab3abf09c9fcf80dc1edf08316c36498dc3a2bc8e53500ab7b60cc170f6ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd1e365be734bf30d9f6189457a9bbc5f9565c41821fa30e20d975002dd9924e2f000000000000000000000000000000000000000000000000d1b326e7f4fcbf8f81e6876be5a89fb4a17cf498e4d44bbb000000000000000020c2f2d5d6c00361457ed7208ad857d500000000000000000000010000001000a8dcd1a316ed0287ddcff3d5bfd5c4ab3d9826ccedf7836c0000000000000000000000000000000091e33ba2226490590000000000000000be6d7b8f33f64b58bb6a6bd70a94057d339dd5d44688a498cb38c34b6d7e65400000000000000000000000000000000035089a930c82e38f00000000000000001fbb9200ebd5f3a4f1449c6d30d95b5e806e41351dc2e546e8b9c871ae993ac2000000000000000000000000000000005511bfd2e33784f52a76944ad5bdff3ad9b8151b574f194f4cb261193db438d30201b01900000a415ab6cdc0b4efee4855a4e8f73c02eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e125bf0a1a8b5df56ef6fc51c434a25072e plot_y 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb7384aa366eaf7663022b601df4b925840a31f68bf7b6b9c555b3f93ad9bb4292d516491874ad526497d9018ab3abf09c9f6d3ce7c9759b948236498dc3a2bc8e53500ab7b60cc170f6ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd1e365be734bf30d9d41b1c1bdf01cf78344bb79cc5e960656071b6d6ba9bb827000000000000000000000000000000000000000000000000d1b326e7f4fcbf8f81e6876be5a89fb4e4984a65e16b2bd8947b9b103711d54a6c06a6545693a4e9d456ac1b6c911b770000000000000000de2af6b21441026ca8dcd1a716ed0287ddcff3d5bfd5c4ab5191f571ff3acdb50000000000000000240430a260c380032d2fd9a8ea16cc4300000000000000008f7589154e4df1c8ab6a71978b941395339dd5d44688a498cb38c34b6d7e6540000000000000000000000000000000008e3022fbc5c5e3dc668d19ad73c2480d334ee06e37bf3799f1449c6d30d95b5e806e41351dc2e546e8b9c871ae993ac2000000000000000000000000000000005511bfd2e33784f546496af427bf2218815c9314883970e84cb261193db438d30201b01900000a415ab6cdc0b4efee4814f8801860ad35254fc4633c97cfa344ab2b01bf1376d76759c99100359d5357a051ec00551901e937b3a9ad26f855b5 -surface3d_extra 640 480 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d140dbbe8608bb887c5536aad31de16b000000000000000000000000000000005b07b84cbe88b248feaffa8fc297d7b400000000000000000000000000000000c487dd8658993a206861a44329ec41a86ae19b5a08b8e292a63212390d4aeb622a4caf3c3a47d9c949ba0bced8c9f439b876a3419a26622c00000000000000007c3da0af47522d2a0e4c8f4d36e879f4c04cf7c10aa9e4fc361a5b6f2b6ec7b4ab866611355abcc8e8c480578aa651bda311970c007fd678000000000000000006337bf43e3856a5dda6cc9de9644c33011ab12496315afa86c19faa9b6b95db1c7b0601d4de6f2e9b0c7610ef17661afb6c973070d9dee000000000000000005af3a0fbaac62a3bb491bb08b4cc0be0b20c7687de3abe823b156fd1f5fc467203357a477521a43aa5f89c57704181fafd48ae18add0eb0700000000000000000000000000000000d4045c298748497d000000000004000000000000000000009240ebc630c12e510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +surface3d_extra 640 480 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d140dbbe8608bb887c5536aad31de16b000000000000000000000000000000005b07b84cbe88b248feaffa8fc297d7b400000000000000000000000000000000c487dd8658993a206861a44329ec41a86ae19b5a08b8e292a63212390d4aeb622a4caf3c3a4fd9c949ba0bced8c9f439b876a3419a26622c00000000000000007c3da08f57532d2a0e4c8f4d36e879f4c04cf7c10aa9e4fc361a5b6f2b6ec7b4ab866611355abcc8e8c480578aa651bda311970c007fd678000000000000000006337bf43e3856a5dda6cc9df9644c33011ab12496314afa86c19faa9b6b95db1c7b0601d4de6f2e9b0c7610ef17661afb6c973070d9dee000000000000000005af3a0fbaac62a3ba491bb08b4cc0be0b20c7687de3abe823b156fd1f5fc467203357a477521a43aa5f89c57704181fafd48ae18add0eb0700000000000000000000000000000000d4045c298748497d000000000004000000000000000000009240ebc630c12e510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 mathtext_frac 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73c36772497c73f99c1f2a6820ab779ff1936e73d4d4880d30b3f93ad9bb4292d516491874ad526497d9018ab3abf09c9f6d3ce7c9759b948236498dc3a2bc8e53f40ab7b60c8168f4ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd1e365be734bf30d9f6189457a9bbc5f9565c41821fa30e20d975002dd9924e2f000000000000000000000000000000000000000000000000d1b326e7f4fcbf8feb9b81ea11742b22a17cf498e4d44bbb000000000000000020c2f2d5d6c00361457ed7208ad857d500000000000000000000010000001000a8dcd1a316ed02873ac054cca9a7fc2f3d9826ccedf7836c0000000000000000000000000000000091e33ba2226490590000000000000000be6d7b8f33f64b58bb6a6bd70a94057d339dd5d44688a498cb38c34b6d7e65400000000000000000000000000000000035089a930c82e38f00000000000000001fbb9200ebd5f3a4f1449c6d30d95b5e806e41351dc2e546e8b9c871ae993ac2000000000000000000000000000000005511bfd2e33784f546496af427bf2218815c9314883970e84cb261193db438d30201b01900000a415ab6cdc0b4efee4855a4e8f73c02eba7901e2fd8c6bf7351a44cb418afcab6221b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e hatch 640 480 4001a02401400000b4042e92c50c0c288bca34e47c80aac682b80d9a88536ea27ad4f06d9af8be4fc0e024b19a58a174836f0fd55e5d458c16491874ad526497359aa76d1712d54ded3abce1c36c9fd42fb464367be7d0846e73206d13036a967f6eda9765c36550b6417c5b035505141b80061009890390a359466920cac7cd79f131d7d553a94538259537c457c2734abe8564def3df6bb60a670e75f1a353b59c2cef3591c61bd9d10dd68131ce820000000000000000d1b326e7f4fcbf8f591c7bf2d6c6b9ea4b79aaf807a44cd1a449ea0dc398ae9ec3362fd36a38c198d7f5b9ffa1e44e7838b5dfa4bda48b0c982713cb86989213a8dcd1a716ed0b8759b52d4eab30382af61180155baaf2b6116800a9df9e20534a712a3021aea1aa3e2edad14941a0d4ccb7027a0724e5edb9f65db430720e8418530ac79cb3880dde01aa250c92b96682e2e9cf552746c911631efa72cb7c00ae8eb8d4a5f74c12bf5a9b542dc950cab41ba5ce17c332d0fc57057323e4aa19f1449c6d30d95b5e1d48817ade93ebee7a5dd410cba5bbdc4f35f063b1d08fecd4db33be33039d948390ec8c4ede1d6579504c639271470c577fc579665291864cb261193db438d3d89945d7dc58aed275851f514cf11eea0a6a0d849dd6a9d31914e32e3eb28652b1b9a1b010b6bed1a3cd2ab5d799c40b6bf99a8888c0a12d0e644e7b6e6f8775 colorbar_orient 640 480 4001a06421400000efcb202710050079836922d7e2c4949638d19461376e7c04fa6ee05ca51940572ca158f0fe33f1a1501251facf5f0bdf000000000000000004a93e72d8a44c9ad4b9762c6f308c56f2385e87f0388c52552523da4632ec52fdd9565c7ab53222940acf66572df6a3ec02caad3244e9640000000000000000cf80640e1fb8734cd972f8ae9662772247591a583c31c016549184b8f84a452bab11b72895ecc7757b2423f0115193a3af2ed7cd3a830e7ee0b9ad39168509e2fc3c3b252ed8918e7e8cc7443a6d74eba3007870c1854e044887111afbaa538f4c0ea168dea5a4252c16c429b204017a8ece922d676f97f00bd316477a53fde6cbd313407551a783f6eb0e8fc54c904f891b7502201c1102adcd058ca69a1292f034679e71f6ee11a445d020b1b984648174c453cd7395474a7d26c378d6c5c84f6b263336f6ff0ed7a4dde928391728f295852c01c47e12ad0ecf5ccaa306d05c0fc2d3fdc65edb68005351049031a0fd8a1d18dd9cf95b3a05f16f5b7ea1ab70866738c41a0da4911c0b0bd0bf681b2773cff11efe9bd53acfb4c054781fc3cd05a0dd4ed5e67b04342145322c1180bf33623679e0a5350000000000000000000000000000000000000000000000006f62fe2be6ebc8b900000000000000009e9f2c07c03a32e7fec3624f3c48fc5ed7310fa1145d8c870000000000000000 @@ -124,8 +126,8 @@ hist_stacked 640 480 4001a02401400000a5df4ae213507df897858416a888e6219c7b10a8a1a grid_ratios 640 480 f0cb0f2505aa1556e0b2424719b273905c7925826694e9fcee3b396677dca71659a6b8e6a905d1e025e10248d4d81d3ade0f3d71cbd5f8026a5c4874ac40e086cbc6e24f8b067151d5f22e828cfc9587e5ff0f673f048634e5db44127621f3f0ee4f4a45d04a29c2fbbc822dddc8c1c3a3864a1bb2b033f0e22557eb3f02e5cc1be735f4581370d0636516cb8c046e4bf0c63aa83e29dd0f689e34149d4de3a1b00d465b6e2f11cf7c333778a355b7bd38e4cb9ecfe49ca7222e4b2b228442896d94099a3424a96d40de77879eb2990314d5f05126254df5b37de634c9c2c8f4cb88c99ab8ea0613bf09795651aabfa9eb5d4f124d98029e3e56897e9c5ad211abf36c98be21a1766e83849f2ec9acf18000000008004000ba1b4efea39faa5d86cc859594e1a47dee22db5d2e5d464e051090e2e26fae80bb6a6bd70a94057da09c73b78c2310e774cb8df1b7d9939d7bf43f56c3b75281c7dcc808295cc128856d0f7e6f43552f545e2ea8e8a4de041cdb41eab5ec38c2bf950950717a73e8d9c30a5afd46424decb1cc61aa997ac25f76ee25d76f65c12e88efff8c076fc64b5130382686080b6b4dac13da5df6c8d0724f3ef986bf8f64a25bd14d9c6cf7872b0d68646dfd6e0575e0b168fff58c3329d352ce282a7aed19a6e4792aebbf9acb380f5cbc24f57ebab3f78904029d29e4660e72c6878e6fc51c434a25072e formatters 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73ee4852d2db790d993ed89a5ac49d409531f68bf7b6b9c555b3f93ad9bb4292d516491874ad5264978c80f84510008c346d3cf7c9659b948236498dc3a2bc8e53500ab7b60cc170f6ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd200689fbfa3c5ffce618b657a9bbc5d8565c41821fa30e20d975002dd9924e2f000000000000000000000000000000000000000000000000d1b326e7f4fcbf8fa7777b30fbde5f9ba14cf598e4d4cbbb000000000000000020c2f2d5d6c00361457ed7208ad857d500000000000000000000010000001000a8dcd1a316ed0287a0cc6f47d8ec1fe1359036ccedffc3ec0000000000000000000000000000000091e33ba2226490590000000000000000be6d7b8f33f64b58bb6a6bd70a94057dc54358841bdb3e44cb38c34be97e65400000000000000000000000000000000035089a930c82e38f00000000000000001fbb9200ebd5f3a4f1449c6d30d95b5e001084b0200d4320ecf9c871aa997aa2000000000000000000000000000000005511bfd2e33784f546496af427bf2218815c9314883970e84cb261193db438d30201b008000002415ab6cdc0b4efee489744a007c100f000cca818eff3de4099489fdd82c72a9bf1881b92d88493be59259cdb9961092c1195343b17c21bcba7 offset_text 640 480 8005006429078840af0c22d9fa9967cca0c37cfae9f0cb73e462b2193a0732426247dee5b44e16c031f68bf7b6b9c555b3f93ad9bb4292d516491874ad526497e560309bf0c38e416d3ce7c9759b948236498dc3a2bc8e53500ab7b60cc170f6ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd099e2ea83d8dfe9cf6189457a9bbc5f9565c41821fa30e20d975002dd9924e2f000000000000000000000000000000000000000000000000d1b326e7f4fcbf8fd4959c53c4011321a17cf498e4d44bbb000000000000000020c2f2d5d6c00361457ed7208ad857d500000000000000000000010000001000a8dcd1a316ed0287a2fa1c6854ab69853d9826ccedf7836c0000000000000000000000000000000091e33ba2226490590000000000000000be6d7b8f33f64b58bb6a6bd70a94057d4746145a4adcdf37cb38c34b6d7e65400000000000000000000000000000000035089a930c82e38f00000000000000001fbb9200ebd5f3a4f1449c6d30d95b5e5b7b3982af479040e8b9c871ae993ac2000000000000000000000000000000005511bfd2e33784f546496af427bf2218815c9314883970e84cb261193db438d30201b088000002413881abc6195c5594f1d01f0f46738320e76a71ca8655c702537eefab18f1c66d38b7d29faf19488504a0d203a48fe14c5ab2ffad718e738f -surface3d 640 480 0000000000000000000000000000000000000000000000004d7e3ec3a32e3bb7e398f737f276533d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033444324845c52b604477ba4966f09f888080000000001310000000000000000000000000000000000000000000000000000000000000000be0f155283f8a2d189f5291717a477a963062067ea4859aeb2b96df7918f31fd222bb0530a8435f000000000000000000000000000000000000100000000000011a3b984e6468aa4059a640f35808ed942808420b00800d8d64054814721a4d974b91442b4ddf629000000000000000000000000000000000000000000000000d3847d934809b53693f77f9faaefaf778080210000021800264ecb9a14e04874b4fe7a27a5e2f6c80000000000000000000000000000000000000000000000002eaa756ff91f83bd2b051e546b867f0c88f4aab56aece523fda72b2635a0b348c919b313d68a48f2000000000000000000000000000000000000000000000000191a4ae2fabaca98c8fb0bdd63545df32b4cd5ce7e1f2b66ac61e3e43e7fded70000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000009651ef5a52c32e3fe5064f8b8f63f42200000000000000000000000000000000 -line3d 640 480 0000000000000000000000000000000000000000000000000b0ba0e3fd3a4137e9f7b63ff9d909f70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007d40727ac0777f922047e2be1f62944188080000000001310000000000000000000000000000000000000000000000000000000000000000967d12d73dccd37799d03d407848353de36d04707837532a19756b2781a085ef07065c0e223f190a0000000000000000000000000000000000010000000000008b260bebaf548e91a4df05d76bf4862c879e8471b3cd7f2799b3eec77d6bfc4ec6433745031324ac00000000000000000000000000000000000000000000000035c929862d731526b51d21df4e57329a992413d129e740c7215d424e651eb91fd95b498e64ab11c9000000000000000000000000000000000000000000000000f5b6a5401521903ab17305a75211086aa4db34591565264d5c1ae9cc2a182c6d23ff670f557853e7000000000000000000000000000000000800024000100284d12ff330a0a9786a7f377a8339a8586da434930fdb20016a6e609753b657086508c0d4000804a440000000000000000000000000000000000000000000000000000000000000000010027c24ebc8021a187c4d709af9ca1f065af43386e52e8500000000000000000000000000000000 +surface3d 640 480 0000000000000000000000000000000000000000000000004d7e3ec3a32e3bb7e398f737f276533d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033444324845c52b604477ba4966f01f888080000000001310000000000000000000000000000000000000000000000000000000000000000be0f155283f8a2d189f5291717a477a963062067ea4859aeb2996df7918f31fd222bb0530a8435f000000000000000000000000000000000000100000000000011a3b984e6468aa4059a640f35808ed942808420b00800d8d64054814721a4d974b91442b4ddf629000000000000000000000000000000000000000000000000d3847d934809b53693f77f9faaefaf778080210000021800264ecb9a14e04874b4fe7a27a5e2f6c80000000000000000000000000000000000000000000000002eaa756ef91f83bd2b051e546b867f0c88f4aaf56aece523fda72b2635a0b348c919b313d68a48f2000000000000000000000000000000000000000000000000191a4ae2fabaca98c8fb0bdd63545df32b4cd5ce7e1f2b66ac61e3e43e7fded70000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000009651ef5a52c32e3fe5064f8b8f63f42200000000000000000000000000000000 +line3d 640 480 0000000000000000000000000000000000000000000000000b0ba0e3fd3a4137e9f7b63ff9d909f70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007d40727ae0777f922047e2be1f229c4188080000000001310000000000000000000000000000000000000000000000000000000000000000967d12d73dccd37799d03d407848353de36d04707837532a19756b2781a085ef07065c0e223f190a000000000000000000000000000000000001000000000000cb260bebaf548e91a4df05df6bf486ac878e8471bbcd7f2799b3eec77d6bfc4ec6433745031324ac00000000000000000000000000000000000000000000000035c929862d731526b51d21df4e57329a992413d129e740c7215d424e651eb91fd95b498e64ab11c9000000000000000000000000000000000000000000000000f5b6a5401521903ab17305875211086aa4db34591565264d5c1ae9cc2a186c6d23ff670f557853e7000000000000000000000000000000000800024000100284d12ff330a0a9786a7f377a8339a8586da434930fdb20016a6e609753b657086508c0d4000804a440000000000000000000000000000000000000000000000000000000000000000010027c24ebc8021a187c4d709af9ca1f065af43386e52e8500000000000000000000000000000000 anim_sine_f01 640 480 6833c312e3df098bf91952e619b2e9b2a0c37cfae9f0cb73dc0e7c06024ef504cf3b2799b520366731f68bf7b6b9c555b3f93ad9bb4292d516491874ad52649709b4ddf11a137d3a2d3cf7db67eed4805fc5f314d49d5ae325db74127621f3f0ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd44de31cd4cec725dfc8c7a3f55aeb536ab344199e85c7cb65c6c17b508088c67000000000000000000000000000000000000000000000000d1b326e7f4fcbf8fd6bd6429ec7730cae3675076562ba16d0000000000000000b10118980b479e9a4e45523c21e715cb00000000000000000020010001001000a8dcd1a316ed0287fcde1e506cfeed5a3f9632cc69ffc3ec00000000000000000000000000000000d24372f48cbb78160000000000000000657cdac51ab1791abb6a6bd70a94057d3e2a2fb963d910d9cb79c34be85e7740000000000000000000000000000000008948a63d8d8d44cab7248661624c1ef8b6f88a96496c68bef1449c6d30d95b5eca1e3ad9090f47c3ecb1c871aa993ac2000000000000000000000000000000000000000000000000e21fd9094e29da6c00000000000000004cb261193db438d3f1164b880ce875ac5ab6cdc0b4efee4855a4e8f77c00eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e anim_sine_f02 640 480 6833c312e3df098bf91952e619b2e9b2a0c37cfae9f0cb73dc0e7c06024ef504cf3b2799b520366731f68bf7b6b9c555b3f93ad9bb4292d516491874ad52649709b4ddf11a137d3a2d3cf7db67eed480dfa9c8e516fb621925db74127621f3f0ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd44de31cd4cec725dcc50e0dfc7004e1287d4351752e0fabe39fef122af090d76000000000000000000000000000000000000000000000000d1b326e7f4fcbf8fd6bd6429ec7730ca2dd5a7450bccdfce0000000000000000fd38dd8dbf5ee43d00000000000000000000000000000000d92d3b7411f4c9aba8dcd1a316ed0287fcde1e506cfeed5a31b886bc8666833c0000000000000000074cc625ea9068812971cc7b6d9ebd130000000000000000f45fdaa4a6bd78a6bb6a6bd70a94057d3e2a2fb963d910d9cb79c34be85e77400000000000000000000000000000000082cef30a8815369e8b03691d5c97d60d2e8858ef0c2ae6aff1449c6d30d95b5eca1e3ad9090f47c3ecb1c871aa993ac2000000000000000000000000000000003d43c249dcf877c417b5f7f6df442ffe00000000000000004cb261193db438d3f1164b880ce875ac5ab6cdc0b4efee4855a4e8f77c00eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e anim_sine_f03 640 480 6833c312e3df098bf91952e619b2e9b2a0c37cfae9f0cb73dc0e7c06024ef504cf3b2799b520366731f68bf7b6b9c555b3f93ad9bb4292d516491874ad52649709b4ddf11a137d3aa83de7cf7cdbe4941537af69414f940f25db74127621f3f0ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd44de31cd4cec725da1ee5c12df477e7ba611b1771e65aed7232ebac41117b9a500000000000000000000000000000000e5300f5a620ecc17d1b326e7f4fcbf8fd6bd6429ec7730cab74d5b2712e117a70000000000000000e76b6c2ad2b3eef200000000000000000000000000000000e676c20b9c7dd242a8dcd1a316ed0287fcde1e506cfeed5a31b886bc8666833c0000000000000000435d2b874299819a3006b0203a330012a34298ea5736311001306155a0d08dc8bb6a6bd70a94057d3e2a2fb963d910d9cb79c34be85e7740000000000000000062442048264024259403bff5bb2e20c6926843f396666d7a0802000000040000f1449c6d30d95b5eca1e3ad9090f47c3ecb1c871aa993ac2000000000000000000000000000000001e263444e2a606c91a86904af8e7e02500000000000000004cb261193db438d3f1164b880ce875ac5ab6cdc0b4efee4855a4e8f77c00eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e diff --git a/tests/test_plots.f90 b/tests/test_plots.f90 index ad3d619..2139553 100644 --- a/tests/test_plots.f90 +++ b/tests/test_plots.f90 @@ -837,6 +837,14 @@ program test_plots call matshow(mz) call save_all("matshow") + call figure() + call spy(reshape([1.0_dp, 0.0_dp, 0.0_dp, 2.0_dp, 0.0_dp, 3.0_dp], [2, 3])) + call save_all("spy_dense") + + call figure() + call spy(reshape([1, 1, 2, 3, 4, 2], [2, 3]), m=5, n=4) + call save_all("spy_coo") + ! 70) a row of events call clf() do i = 1, 40 From ed127d6222d970a4a0520afc0a75b5abb9debae3 Mon Sep 17 00:00:00 2001 From: jalvesz <102541118+jalvesz@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:54:26 +0000 Subject: [PATCH 2/3] Keep existing fingerprints, add only spy ones --- tests/fingerprints.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/fingerprints.txt b/tests/fingerprints.txt index 1bd7d76..6ee6130 100644 --- a/tests/fingerprints.txt +++ b/tests/fingerprints.txt @@ -77,10 +77,10 @@ broken_barh 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73a3d27805fa4a streamplot 640 480 8b511cf775db026cfd11d0d69991f3b2a4c17dfa68f0c353dcdea2f1a007391f2deed5f97b9652023076c7b7eab0c54562b22bf6b83790d416491874ad526497947ab6eb1494826d0dd76b26db659273c53668666d8706cd1f7ed99cb383f61317b28ded290ff913b358e4c129ea51b5141af6e4d373472f04df34b829c01bdaeb63816b52123a2b338e126c578a3b4f961ea413140907a30ea74f8cd36042602e548c435e17818b85bfb79b5c884efab52223bfdf5aa7f2b032f6788e5e4b71468f74d88fae5ce3c304f74e6570b863de63ff9330bde0ac810eb0f326a3d93646572a49dc56879f1bd0cc9a0e6bba3ff16953c1e5eef569a3379df45f9614ce49b0b18393a8cbd6c5105f7e6dfca1e2cc32924711df44aeecef58f6e3e8c135b94d507a5488f4427958f5c0ebef939b0c62408392622570a6cadd0f6c60eb25f1693d9cbd1dc89ac68f5b5957c2cdbeb9b7b86a370b2faa029b80ea77ab93be7fcca7ae41a9a1b24288a989247d3d9ba7aaf42a9a743325b743f0dc96df23f10ca6dd07162e2d8dfc78d2e51df226b059bea507431f18be86fbea273e91a7a0809150dd5b3a353a3f7272664cb8060d568a099c33e1bd35c6b728daf07be7c1efdba1ebee3180aad35cbccdb1df16d18bfea8aa31045b9bac600343c926888677cde16c33a203c8413ab29cc5004aea212b2bd526a1114fe9ac0dfc894404e5 table 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb7325451dd7b2f05dcc81e27ad5136fcc8231f68bf7b6b9c555b3f93ad9bb4292d516491874ad5264978c80f84510008c342d34f7db63eed494729cf567f2db6b4825db74127621f3f0ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd4180158cc08d4882760eae563d5ff9a200000000000000000000000000000000000000000000000000000000000000000000000000000000d1b326e7f4fcbf8f2011087149012534b7495b2712e117a700000000000000000000000000000000000000000000000000000000000000000000000000000000a8dcd1a316ed028738601033038e840031b086fc8667833c00000000000000000000000000000000000000000000000000000000000000000000000000000000bb6a6bd70a94057d4828c94ac40404a0cb38c34b6d7e654000000000000000000000000000000000000000000000000000000000000000000000000000000000f1449c6d30d95b5e001084b0200d4320ecf9c871aa997aa2000000000000000000000000000000000000000000000000000000000000000000000000000000004cb261193db438d32e2453b6b9bf03c588a3256971e8fa3208291c849e87cf5bf2b0c2972ffe5704e1f3bac0b6473fed9c02f950f79bba75879cf55178e07c3979dc22cdcc1736c2 quiverkey 640 480 4001a02401400000ed30c8ac8937599cbce4cc12afcdd34171d9d1ea2d095e1432e4ba98e28f13c1a918e9c576bc16efa31971298b53126e766d1a44a572609489acaed4b417d95b163857a33462d091c7309dfe620907556ee8311ee14aa6e9a2ec03df3a13dee0a807ecd57923db291025ad15173e57675e48fa5faf3e6fa01ced2537b00465f29d017213ce603dc9377c7ee362c55be94e5f7395bc8b1e1dada5b9d89d1402c97bbe7af52a05a8397a24a5441732b6e05b41d757bc7b671cd8d8ac0106dd83ce1ea4a07055d5eabf4ee704695d486be9ec6ffecd293421f137d911974edd04ce7b87f2b1de4f4e532e745f3be5a5dad60fc94340ab21e1bb01f717c2b8dad979223b93df2e7e548ae2f10614a25355d94b982b1ef4b348884e73e9b1206d54be543694ac4dff01e033ea3215c2f813c932e1c8fcd17c869d4c91bcc2b1ebdbd015fb3f2d36ea5f759b2dde86046214bd425810969ba52bc6f2672f28961de8081ece0d7e688fc06a38131b5f34f63ab3c2148517523e458062a9364cc17d15b850f7743dff468cece842a5349ac2c065ba7d82f7cc69ca2f3b22521e91d33c7ce05da220123d76de578b0347ee9affceaddbc0188f5ad0f30201b09900000a4159fe705165194fcf41883fd9e0eb9fbb410056ccc93d5c74e15a4aa540ead833e0a472a703b942e7f9e36ee0b32a1ce9a79eb7d569d75a4f -contour3d 640 480 000000000000000000000000000000000000000000000000e66e480f2246f18b4190746bb175b60100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057cc42b820f8db1724c33bed966da0b088080800000001310000000000000000000000000000000000000000000000000000000000000000adfb17fa87f822433ac8a1040c1f9fe08c2713a4ccf2879d0e0ab157467de8e4d9a9e21d664b6b0e000000000000000000000000000000000001000000000000fdbf2e26f5f424e668dc67c5e3d63f3ed4f751a6b94de6fb1abdc19e3304cc2fda77353b9f0cd6eb00000000000000000000000000000000000000000000000012fc01176b2bb2cd0fe3940d8d0db9e38011d900ecbc9dbdbb4eeeb8b50c1ad76b90612107b90361000000000000000000000000000000000000000000000000dfea19b2a76b0a7690510614267e2c31ead4734ed45572308de7b6ac35f6a870c919b313d68a48f2000000000000000000000000000000000000000000000000191a4ae2fabaca98c8fb0bdd63545df3aeffba41ace3e794ac71e3e43e7fded70000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000009651ef5a52c32e3fe5064f8b8f63f42200000000000000000000000000000000 -quiver3d 640 480 00000000000000000000000000000000000000000000000082c1c745f94e6bedfabe0523e6b686a7a4738eabbf353f1a107222042030600200000000000000000000000000000000000000000000000000000000000000000f995680eaeca54d0d8f91770ac4eb0059fc65c98b9749630000000000000000000000000000000000000000000000000000000000000000503f5e2b94382da8d48b2e58a2110260deb0b342335e380f8280070855988484de67da05a0ca1c0b000000000000000000000000000000000001000000000000353f2a7f516cf79f1c1d86ce636905e88a1dd4df0ce684a3542ae96aefe886975bfdde2ec6127ce100000000000000000000000000000000000000000000000078006a256a705ee1b1d2c156ede5dce55c741bafbfe42579008bfb9f77513c48f05c0b636d0a3102000000000000000000000000000000000000000000000000c407e7851d7e6c2d5f4d445032a6bb10af342c27d13bea15e87f823f6191df6db055d22a58ec03eb0000000000000000000000000000000000000248001000844ce7dae3caeffdfd479cf38d9230376b0d4d4a7a948fd66ab85da4fe0d7c753d0040020000000420000000000000000000000000000000000000000000000000070e5931a9d08c6f8000010121210160d6d8599fcaa4825c3c3d848adf40004800000000000000000000000000000000 -bar3d 640 480 000000000000000000000000000000000000000000000000ad0c53c26b81a4060accc693178a345c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044914befa06813daa28229e983652cd889020800001001310000000000000000000000000000000000000000000000000000000000000000a40e261286508498fce2d0c181e699640f2d60d006033aec07d9e1ae54714b93bd41634cb9f6fa6d000000000000000000000000000000000001000000000000fbe8cb972a1dbe6d960ac9f32830bc439aad1f6444c94d1aa03adc863f6d3af79448781c88107527000000000000000000000000000000000000000000000000a142b4514de6c381d84db3bcdf4ea482c282eb83a8f117de9c35b61264fad976274f673a9174ce200000000000000000000000000000000000000000000000004fa2f3142502d58fa0fe86ff8495b87cd46a8580653f58a6ecca91a34dfe98d00470cb7ba51cb1f10000000000000000000000000000000000000000000000008358aaa59d2c269aaebf8c75d3409ce8ac302561475113797c1326789cddb3310000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000002a2f5a68e328b8eb020ce2498069af3300000000000000000000000000000000 -trisurf 640 480 00000000000000000000000000000000000000000000000082452191c4ce82a0397e38176ad6ddfd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ce93960f98d6b10575b5a9330ed3ff3800000000000001000000000000000000000000000000000000000000000000000000000000000007f8d82fcea4d0e920a77c30540512812236c1eee596f3e861b033d9fd0fd970499008930125425eb0000000000000000000000000000000000010000000000003dbdf912cacdb3d03e4bd9067a1b6fdd7a1fc1ce8220f7165f533e825a74141b5c296b670bdba1f3000000000000000000000000000000000000000000000000265676d5d87ad9ebd40261b39f3148c29454732661110ed67bbaae592d511e89ff822ac6e397aa7600000000000000000000000000000000000000000000000037c7cee3468bb23f97a39b2692af27898706991ca92b1bb08ae5b2bcb4d4a8518d13b213d4824872000000000000000000000000000000000000000000000000283ca8a3b0fb6b9cc9db637a37decdffc8a5f4bd12a3b693ad61e3a43e7fded7000000000000000000000000000000000000000000000000000000000000000000000000000000000010000101000028d4912e5a0fc9af2de5064f8b8d63f42200000000000000000000000000000000 +contour3d 640 480 000000000000000000000000000000000000000000000000e66e480f2246f18b4190746bb175b60100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057cc42b820f8db1724c33bed966da0b088080800000001310000000000000000000000000000000000000000000000000000000000000000adfb17fa87f8224332c8a104081f9fa08c2f13a4ccf2879d0e0ab157467de8e4d9a9e21d664b6b0e000000000000000000000000000000000001000000000000fdbf2e26f5f424e66cdc67c5e3d23f3ed4f751a6b94de6fb0abdc1be33048c0fda77353b9f0cd6eb00000000000000000000000000000000000000000000000012fc01176b2bb2cd0fe3940d8d0db9e38011d900ecbc9dbdbb4eeeb8b50c1ad76b90612107b90361000000000000000000000000000000000000000000000000dfea19b6a76b0a7690510614227e2c31ead4734ed55572308de7b6ac75d6a870c919b313d68a48f2000000000000000000000000000000000000000000000000191a4ae2fabaca98c8fb0bdd63545df3aeffba41ace3e794ac61e3e43e7fded70000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000009651ef5a52c32e3fe5064f8b8f63f42200000000000000000000000000000000 +quiver3d 640 480 00000000000000000000000000000000000000000000000082c1c745f94e6bedfabe0523e6b686a7a4738eabbf353f1a107222042030600200000000000000000000000000000000000000000000000000000000000000000f995680eaeca54d0d8f91770ac4eb0059fc65c98b9709630000000000000000000000000000000000000000000000000000000000000000513f5e2b94382da8d48b2e58a2510260deb0b242335e380f8280070855b88486de67de05b0ca5c0b000000000000000000000000000000000001000000000000353f0a7f516cf79f1d1d86ce63e904e8821dd4df0ee684a3543aed6aefe8c6975bfdde2ec6127ce100000000000000000000000000000000000000000000000078006a256a705ee1b1d2c156ede5dce55c741bafffe42579008bfb9f77513c48f05c0b636d0a3102000000000000000000000000000000000000000000000000c407e7851d7e6c2d5f4d445032a6b310af342c27d13bea15e87f823f6191df6db055d22a58ec03eb0000000000000000000000000000000000000248001000844ce7dae3caeffdfd479cf38d9230376b0d494a7a948fd66ab85da4fe0d7c753d0040020000000420000000000000000000000000000000000000000000000000070e5931a9d08c6f8000010121210160d6d8599fcaa4825c3c3d848adf40004800000000000000000000000000000000 +bar3d 640 480 000000000000000000000000000000000000000000000000ad0c53c26b81a4060accc693178a345c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044914befa06813daa28228e983652cd889020800001001310000000000000000000000000000000000000000000000000000000000000000a40e261286508498f4e2d0c181e699640f2d60d046033aec07d970ae54714b83bd41634cb9f6fa6d000000000000000000000000000000000001000000000000fbe8cb972a1dbe6d960ac9f32830bc439aad1f6444c94d1aa03adc861f6d3af79448781c88107527000000000000000000000000000000000000000000000000a142b4514de6c381d84db3bcdf4ea482c282eb83a8f117de9c35b61264fad976274f673a9174ce200000000000000000000000000000000000000000000000004fa2f3142502d58fa0fe86ff8495b87cd46a8580653f58a6ecca91a34cfe98d00470cb7ba51cb1f10000000000000000000000000000000000000000000000008358aaa59d2c269aaebf8c75d3409ce8a4302561475113797c1326789cddb3310000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000002a2f5a68e328b8eb020ce2498069af3300000000000000000000000000000000 +trisurf 640 480 00000000000000000000000000000000000000000000000082452191c4ce82a0397e38176ad6ddfd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ce93960f99d6b10575b5a9330ed3ff3800000000000001000000000000000000000000000000000000000000000000000000000000000007f8d82fcea4d0e920a77c20740512812236c1eee596f3e861b023d9fd4fd970499008930125425eb0000000000000000000000000000000000010000000000003dbdf912cacdb3d03e4bd9067a1b6fdd7a1fc1ce8220f7165f533e825a74141b5c296b670bdba1f3000000000000000000000000000000000000000000000000265676d5d87ad9ebd40261b39f3148c29454732661110ed67bbaae592d511e89ff822ac6e397aa7600000000000000000000000000000000000000000000000037c7eee3468bb33f97a39b2692a727a98706991ca92b19b08ae5b6bcb4d4a8518d13b213d4824872000000000000000000000000000000000000000000000000283ca8a3b0fb6b9cc9db637a37decdffc0a5f4bd12a3b693ad61e3a43e7fded7000000000000000000000000000000000000000000000000000000000000000000000000000000000010000101000028d4912e5a0fc9af2de5064f8b8d63f42200000000000000000000000000000000 tricontourf 640 480 4041a024a1400008d3b8e6a719b1a0719b1d888b42c0c097b8d29532f0a3cba879cf09a3b0322af6996f842f32d8371a3f5132673e10644201094a0080103021f935ef561817208e3d4e32da483b322211cc4dfc71d369afc5db42156cb9f52d78dc57f69da85d997942972eb40a338d770f31913bfe24f2ad001854c4a31021a6f82f423c0cdb0a2513340af34c16364002010041b1662a1b448000117292242f57b3ff6a314b582a83ff40ec01c4fe1dd3d8466e63f0634257060080002086c7713b4d8bd6da371fa9e7517a36c848be68471ec1af5c03b708380d7041126af3afe77fcb3c53bc275b4a3525160f58d2a8f2d33e91168e1510a0a901094202fc6845c8e9a26814a4a99c0ad22497c780d92025706112a81f4058632a8826a382037d2fe18f00433a90d79b4595704056fe79904c3cb72042d7c82ae8c31d585e4803099d42c3602d7cb7d4787d5210c400938290d028184000004c8004a004a0a001c8030160a8e3a79d2e754ba8401e6b2a4d3c236c0a9cebe409dac8722401480b0b401db84ae14fd447bf6f7ef2a66da4aa77ac5b62b2b84711a5300a729a76334b40a229d2e4c2722745fb21c7463001e92ee9d06fdcd6f967f41d5b110201b00800000241fe46dc46ed1b6fafb5d1b714d08a24903e47ca50e7f528d3954a382e3845555885156d5fcf3a5d39201807a3af04e36d00179e625fda5d43 tricontour 640 480 4001a02401400000a91a53c699a0ebb2a0c33cfae1f6c9338705f002f5d195feaceed7254226db31b9e287733739c555a3793e498b46b6d416491874ad526497db47b7406e50cc7e855c99d772efb0a74d00acad497b0ee56e017d6dda4647ae5e20c65c6e8f8dc0aef28c82fb5b6d58843bdbcd45860e36576722fbc8c1180db3f267183a9a1c05d249e83148fa6a0bc2615cfa4e2a4261884590db38c86af39dcd7825761969ed311b22776281a79e7b355ff6158cdadb7614875e345300593f661b78999daa03e6f3993dd2ea44457f13dd556bd3b455d2199418efe710dfa5b645411b1ccef66322fabb1030659f8551277557a7205851c1a9e4ad8fa8f6d380544925c42be55d487c6edcfb20587ab2e8b239449d44e49fcab9c2af395cdbf0b370526e0952fdefd028c38fa63cfa020ee39da1aa51240637e571fc9de15a7b9ee6e52636388936490bba9cb5276b9b8d90b06be89ef284cbdddcb393d06ce742ccc22268f6c0e11f39310370a0333f76ce1568f52f136a63709f70f8a31b1b041accb75e6aef92dc3a8ca757595145a89a33b60b33ab78832cf0bd4746b02271e18bd25c7e8eb5b3875bac6cc09cb512f065cfd685030fb501e8594cd30201b008000002414358eafec6dafa1498f10e1c7d8a63408ab6fe42fb43bb6d7db798653a6b1bcbc4b18907b01496f0b38a3f5c29bc5f266f450c430a27072e tripcolor 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb734ec9af9f0bcfe6903afdcf924fe661413de20b7fbeb985d501223bcf070946e80000000000000000cb567e6aafc2d48d4af9a4cb8e78d34b958efdc01d02f3198177807f020c600577227f4d3085ab90edc2a236587a581996e3b6a31bba2de1000000000000000028e2b199a2fd8d3e6af96597cdf7eab5692820e22422e661ef89a43a02529e35cc9f6bd7281c9e6ed4784185afb1be9e031131294625b14500000000000000003719a7b7bb017171216ce301fbf21f642143808a020f0349100008210202d0820020840c24000a8105fd4d64c4431042cfa6b7aca85816710000000000000000a0f285b12ad4fa952d75b790d9eeb3db80030461204409082c31280043b48d66bc8421ba386108a5d2bd91707850db37e0b7d2a14707bf0b0000000000000000ea5d73b9c752d670390dad0208d4c3c7138011a0080910082010e2400230c021b6e948936e22caa8199ad47ed06613ae9f8d9568dac14e27000000000000000028cddda11f9f4668a1327618c250a529013dea722400cd4ea8dc2d4ac9bef8e05bfb090213f76ac89891e55d62aa1f763b6e703100c5f6d700000000000000000098beb3939df1123a0d81d0c822316366797cb4b4e5aae625c91be0a92afb2b41521250237d23861838e28c2a40305f8aa22fe9f11de55a0000000000000000 @@ -106,7 +106,7 @@ invert_axes 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73132b2bb30214 annotate_arrow 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73eacfa209303c0a7d2382550ad2e283a3b9e68fe7b6b9e555b3f93ad9bb4292d516491874ad526497d9018ab3abf09c9f6d3cf7cfe51bd4b6a316dde7e0993c6da1f9c394710b92a4ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd1e365be734bf30d9c8c75de94967c8d44e67752ef2b3f23eb852794794835794000000000000000000000000000000000000000000000000d1b326e7f4fcbf8f81e6876be5a89fb4c79d0f991432208b0000000000000000af66226a01a5a44d4f1e03c4e4d4db4700000000000000000020010001001000a8dcd1a316ed0287ddcff3d5bfd5c4abab9896fcedf883640000000000000000000000000000000035cb227a055d301d0000000000000000d2d26f0d075f4cecbb6a6bd70a94057d339dd5d44688a498cb38c34b6d7e65400000000000000000ca178fdeab02310d662abce037a7641600000000000000005ab9138f44416a39f1449c6d30d95b5e806e41351dc2e546e8b9c871ae993ac200000000000000004c50948095a2a1023bf4a6359cc33986d00f253bbd0ca596319a162bed793f2a4cb261193db438d30201b01900000a415ab6cdc0b4efee4855a4e8f73c02eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e transform_axes 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb732139982bdae10192bfa7100fef889aea39f68bf7b6b9c555b3f93ad9bb4292d516491874ad526497d9018ab3abf09c9fcf80dc1edf08316c36498dc3a2bc8e53500ab7b60cc170f6ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd1e365be734bf30d9f6189457a9bbc5f9565c41821fa30e20d975002dd9924e2f000000000000000000000000000000000000000000000000d1b326e7f4fcbf8f81e6876be5a89fb4a17cf498e4d44bbb000000000000000020c2f2d5d6c00361457ed7208ad857d500000000000000000000010000001000a8dcd1a316ed0287ddcff3d5bfd5c4ab3d9826ccedf7836c0000000000000000000000000000000091e33ba2226490590000000000000000be6d7b8f33f64b58bb6a6bd70a94057d339dd5d44688a498cb38c34b6d7e65400000000000000000000000000000000035089a930c82e38f00000000000000001fbb9200ebd5f3a4f1449c6d30d95b5e806e41351dc2e546e8b9c871ae993ac2000000000000000000000000000000005511bfd2e33784f52a76944ad5bdff3ad9b8151b574f194f4cb261193db438d30201b01900000a415ab6cdc0b4efee4855a4e8f73c02eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e125bf0a1a8b5df56ef6fc51c434a25072e plot_y 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb7384aa366eaf7663022b601df4b925840a31f68bf7b6b9c555b3f93ad9bb4292d516491874ad526497d9018ab3abf09c9f6d3ce7c9759b948236498dc3a2bc8e53500ab7b60cc170f6ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd1e365be734bf30d9d41b1c1bdf01cf78344bb79cc5e960656071b6d6ba9bb827000000000000000000000000000000000000000000000000d1b326e7f4fcbf8f81e6876be5a89fb4e4984a65e16b2bd8947b9b103711d54a6c06a6545693a4e9d456ac1b6c911b770000000000000000de2af6b21441026ca8dcd1a716ed0287ddcff3d5bfd5c4ab5191f571ff3acdb50000000000000000240430a260c380032d2fd9a8ea16cc4300000000000000008f7589154e4df1c8ab6a71978b941395339dd5d44688a498cb38c34b6d7e6540000000000000000000000000000000008e3022fbc5c5e3dc668d19ad73c2480d334ee06e37bf3799f1449c6d30d95b5e806e41351dc2e546e8b9c871ae993ac2000000000000000000000000000000005511bfd2e33784f546496af427bf2218815c9314883970e84cb261193db438d30201b01900000a415ab6cdc0b4efee4814f8801860ad35254fc4633c97cfa344ab2b01bf1376d76759c99100359d5357a051ec00551901e937b3a9ad26f855b5 -surface3d_extra 640 480 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d140dbbe8608bb887c5536aad31de16b000000000000000000000000000000005b07b84cbe88b248feaffa8fc297d7b400000000000000000000000000000000c487dd8658993a206861a44329ec41a86ae19b5a08b8e292a63212390d4aeb622a4caf3c3a4fd9c949ba0bced8c9f439b876a3419a26622c00000000000000007c3da08f57532d2a0e4c8f4d36e879f4c04cf7c10aa9e4fc361a5b6f2b6ec7b4ab866611355abcc8e8c480578aa651bda311970c007fd678000000000000000006337bf43e3856a5dda6cc9df9644c33011ab12496314afa86c19faa9b6b95db1c7b0601d4de6f2e9b0c7610ef17661afb6c973070d9dee000000000000000005af3a0fbaac62a3ba491bb08b4cc0be0b20c7687de3abe823b156fd1f5fc467203357a477521a43aa5f89c57704181fafd48ae18add0eb0700000000000000000000000000000000d4045c298748497d000000000004000000000000000000009240ebc630c12e510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +surface3d_extra 640 480 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d140dbbe8608bb887c5536aad31de16b000000000000000000000000000000005b07b84cbe88b248feaffa8fc297d7b400000000000000000000000000000000c487dd8658993a206861a44329ec41a86ae19b5a08b8e292a63212390d4aeb622a4caf3c3a47d9c949ba0bced8c9f439b876a3419a26622c00000000000000007c3da0af47522d2a0e4c8f4d36e879f4c04cf7c10aa9e4fc361a5b6f2b6ec7b4ab866611355abcc8e8c480578aa651bda311970c007fd678000000000000000006337bf43e3856a5dda6cc9de9644c33011ab12496315afa86c19faa9b6b95db1c7b0601d4de6f2e9b0c7610ef17661afb6c973070d9dee000000000000000005af3a0fbaac62a3bb491bb08b4cc0be0b20c7687de3abe823b156fd1f5fc467203357a477521a43aa5f89c57704181fafd48ae18add0eb0700000000000000000000000000000000d4045c298748497d000000000004000000000000000000009240ebc630c12e510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 mathtext_frac 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73c36772497c73f99c1f2a6820ab779ff1936e73d4d4880d30b3f93ad9bb4292d516491874ad526497d9018ab3abf09c9f6d3ce7c9759b948236498dc3a2bc8e53f40ab7b60c8168f4ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd1e365be734bf30d9f6189457a9bbc5f9565c41821fa30e20d975002dd9924e2f000000000000000000000000000000000000000000000000d1b326e7f4fcbf8feb9b81ea11742b22a17cf498e4d44bbb000000000000000020c2f2d5d6c00361457ed7208ad857d500000000000000000000010000001000a8dcd1a316ed02873ac054cca9a7fc2f3d9826ccedf7836c0000000000000000000000000000000091e33ba2226490590000000000000000be6d7b8f33f64b58bb6a6bd70a94057d339dd5d44688a498cb38c34b6d7e65400000000000000000000000000000000035089a930c82e38f00000000000000001fbb9200ebd5f3a4f1449c6d30d95b5e806e41351dc2e546e8b9c871ae993ac2000000000000000000000000000000005511bfd2e33784f546496af427bf2218815c9314883970e84cb261193db438d30201b01900000a415ab6cdc0b4efee4855a4e8f73c02eba7901e2fd8c6bf7351a44cb418afcab6221b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e hatch 640 480 4001a02401400000b4042e92c50c0c288bca34e47c80aac682b80d9a88536ea27ad4f06d9af8be4fc0e024b19a58a174836f0fd55e5d458c16491874ad526497359aa76d1712d54ded3abce1c36c9fd42fb464367be7d0846e73206d13036a967f6eda9765c36550b6417c5b035505141b80061009890390a359466920cac7cd79f131d7d553a94538259537c457c2734abe8564def3df6bb60a670e75f1a353b59c2cef3591c61bd9d10dd68131ce820000000000000000d1b326e7f4fcbf8f591c7bf2d6c6b9ea4b79aaf807a44cd1a449ea0dc398ae9ec3362fd36a38c198d7f5b9ffa1e44e7838b5dfa4bda48b0c982713cb86989213a8dcd1a716ed0b8759b52d4eab30382af61180155baaf2b6116800a9df9e20534a712a3021aea1aa3e2edad14941a0d4ccb7027a0724e5edb9f65db430720e8418530ac79cb3880dde01aa250c92b96682e2e9cf552746c911631efa72cb7c00ae8eb8d4a5f74c12bf5a9b542dc950cab41ba5ce17c332d0fc57057323e4aa19f1449c6d30d95b5e1d48817ade93ebee7a5dd410cba5bbdc4f35f063b1d08fecd4db33be33039d948390ec8c4ede1d6579504c639271470c577fc579665291864cb261193db438d3d89945d7dc58aed275851f514cf11eea0a6a0d849dd6a9d31914e32e3eb28652b1b9a1b010b6bed1a3cd2ab5d799c40b6bf99a8888c0a12d0e644e7b6e6f8775 colorbar_orient 640 480 4001a06421400000efcb202710050079836922d7e2c4949638d19461376e7c04fa6ee05ca51940572ca158f0fe33f1a1501251facf5f0bdf000000000000000004a93e72d8a44c9ad4b9762c6f308c56f2385e87f0388c52552523da4632ec52fdd9565c7ab53222940acf66572df6a3ec02caad3244e9640000000000000000cf80640e1fb8734cd972f8ae9662772247591a583c31c016549184b8f84a452bab11b72895ecc7757b2423f0115193a3af2ed7cd3a830e7ee0b9ad39168509e2fc3c3b252ed8918e7e8cc7443a6d74eba3007870c1854e044887111afbaa538f4c0ea168dea5a4252c16c429b204017a8ece922d676f97f00bd316477a53fde6cbd313407551a783f6eb0e8fc54c904f891b7502201c1102adcd058ca69a1292f034679e71f6ee11a445d020b1b984648174c453cd7395474a7d26c378d6c5c84f6b263336f6ff0ed7a4dde928391728f295852c01c47e12ad0ecf5ccaa306d05c0fc2d3fdc65edb68005351049031a0fd8a1d18dd9cf95b3a05f16f5b7ea1ab70866738c41a0da4911c0b0bd0bf681b2773cff11efe9bd53acfb4c054781fc3cd05a0dd4ed5e67b04342145322c1180bf33623679e0a5350000000000000000000000000000000000000000000000006f62fe2be6ebc8b900000000000000009e9f2c07c03a32e7fec3624f3c48fc5ed7310fa1145d8c870000000000000000 @@ -126,8 +126,8 @@ hist_stacked 640 480 4001a02401400000a5df4ae213507df897858416a888e6219c7b10a8a1a grid_ratios 640 480 f0cb0f2505aa1556e0b2424719b273905c7925826694e9fcee3b396677dca71659a6b8e6a905d1e025e10248d4d81d3ade0f3d71cbd5f8026a5c4874ac40e086cbc6e24f8b067151d5f22e828cfc9587e5ff0f673f048634e5db44127621f3f0ee4f4a45d04a29c2fbbc822dddc8c1c3a3864a1bb2b033f0e22557eb3f02e5cc1be735f4581370d0636516cb8c046e4bf0c63aa83e29dd0f689e34149d4de3a1b00d465b6e2f11cf7c333778a355b7bd38e4cb9ecfe49ca7222e4b2b228442896d94099a3424a96d40de77879eb2990314d5f05126254df5b37de634c9c2c8f4cb88c99ab8ea0613bf09795651aabfa9eb5d4f124d98029e3e56897e9c5ad211abf36c98be21a1766e83849f2ec9acf18000000008004000ba1b4efea39faa5d86cc859594e1a47dee22db5d2e5d464e051090e2e26fae80bb6a6bd70a94057da09c73b78c2310e774cb8df1b7d9939d7bf43f56c3b75281c7dcc808295cc128856d0f7e6f43552f545e2ea8e8a4de041cdb41eab5ec38c2bf950950717a73e8d9c30a5afd46424decb1cc61aa997ac25f76ee25d76f65c12e88efff8c076fc64b5130382686080b6b4dac13da5df6c8d0724f3ef986bf8f64a25bd14d9c6cf7872b0d68646dfd6e0575e0b168fff58c3329d352ce282a7aed19a6e4792aebbf9acb380f5cbc24f57ebab3f78904029d29e4660e72c6878e6fc51c434a25072e formatters 640 480 4001a02401400000ed1952e619b0e9b0a0c37cfae9f0cb73ee4852d2db790d993ed89a5ac49d409531f68bf7b6b9c555b3f93ad9bb4292d516491874ad5264978c80f84510008c346d3cf7c9659b948236498dc3a2bc8e53500ab7b60cc170f6ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd200689fbfa3c5ffce618b657a9bbc5d8565c41821fa30e20d975002dd9924e2f000000000000000000000000000000000000000000000000d1b326e7f4fcbf8fa7777b30fbde5f9ba14cf598e4d4cbbb000000000000000020c2f2d5d6c00361457ed7208ad857d500000000000000000000010000001000a8dcd1a316ed0287a0cc6f47d8ec1fe1359036ccedffc3ec0000000000000000000000000000000091e33ba2226490590000000000000000be6d7b8f33f64b58bb6a6bd70a94057dc54358841bdb3e44cb38c34be97e65400000000000000000000000000000000035089a930c82e38f00000000000000001fbb9200ebd5f3a4f1449c6d30d95b5e001084b0200d4320ecf9c871aa997aa2000000000000000000000000000000005511bfd2e33784f546496af427bf2218815c9314883970e84cb261193db438d30201b008000002415ab6cdc0b4efee489744a007c100f000cca818eff3de4099489fdd82c72a9bf1881b92d88493be59259cdb9961092c1195343b17c21bcba7 offset_text 640 480 8005006429078840af0c22d9fa9967cca0c37cfae9f0cb73e462b2193a0732426247dee5b44e16c031f68bf7b6b9c555b3f93ad9bb4292d516491874ad526497e560309bf0c38e416d3ce7c9759b948236498dc3a2bc8e53500ab7b60cc170f6ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd099e2ea83d8dfe9cf6189457a9bbc5f9565c41821fa30e20d975002dd9924e2f000000000000000000000000000000000000000000000000d1b326e7f4fcbf8fd4959c53c4011321a17cf498e4d44bbb000000000000000020c2f2d5d6c00361457ed7208ad857d500000000000000000000010000001000a8dcd1a316ed0287a2fa1c6854ab69853d9826ccedf7836c0000000000000000000000000000000091e33ba2226490590000000000000000be6d7b8f33f64b58bb6a6bd70a94057d4746145a4adcdf37cb38c34b6d7e65400000000000000000000000000000000035089a930c82e38f00000000000000001fbb9200ebd5f3a4f1449c6d30d95b5e5b7b3982af479040e8b9c871ae993ac2000000000000000000000000000000005511bfd2e33784f546496af427bf2218815c9314883970e84cb261193db438d30201b088000002413881abc6195c5594f1d01f0f46738320e76a71ca8655c702537eefab18f1c66d38b7d29faf19488504a0d203a48fe14c5ab2ffad718e738f -surface3d 640 480 0000000000000000000000000000000000000000000000004d7e3ec3a32e3bb7e398f737f276533d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033444324845c52b604477ba4966f01f888080000000001310000000000000000000000000000000000000000000000000000000000000000be0f155283f8a2d189f5291717a477a963062067ea4859aeb2996df7918f31fd222bb0530a8435f000000000000000000000000000000000000100000000000011a3b984e6468aa4059a640f35808ed942808420b00800d8d64054814721a4d974b91442b4ddf629000000000000000000000000000000000000000000000000d3847d934809b53693f77f9faaefaf778080210000021800264ecb9a14e04874b4fe7a27a5e2f6c80000000000000000000000000000000000000000000000002eaa756ef91f83bd2b051e546b867f0c88f4aaf56aece523fda72b2635a0b348c919b313d68a48f2000000000000000000000000000000000000000000000000191a4ae2fabaca98c8fb0bdd63545df32b4cd5ce7e1f2b66ac61e3e43e7fded70000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000009651ef5a52c32e3fe5064f8b8f63f42200000000000000000000000000000000 -line3d 640 480 0000000000000000000000000000000000000000000000000b0ba0e3fd3a4137e9f7b63ff9d909f70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007d40727ae0777f922047e2be1f229c4188080000000001310000000000000000000000000000000000000000000000000000000000000000967d12d73dccd37799d03d407848353de36d04707837532a19756b2781a085ef07065c0e223f190a000000000000000000000000000000000001000000000000cb260bebaf548e91a4df05df6bf486ac878e8471bbcd7f2799b3eec77d6bfc4ec6433745031324ac00000000000000000000000000000000000000000000000035c929862d731526b51d21df4e57329a992413d129e740c7215d424e651eb91fd95b498e64ab11c9000000000000000000000000000000000000000000000000f5b6a5401521903ab17305875211086aa4db34591565264d5c1ae9cc2a186c6d23ff670f557853e7000000000000000000000000000000000800024000100284d12ff330a0a9786a7f377a8339a8586da434930fdb20016a6e609753b657086508c0d4000804a440000000000000000000000000000000000000000000000000000000000000000010027c24ebc8021a187c4d709af9ca1f065af43386e52e8500000000000000000000000000000000 +surface3d 640 480 0000000000000000000000000000000000000000000000004d7e3ec3a32e3bb7e398f737f276533d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033444324845c52b604477ba4966f09f888080000000001310000000000000000000000000000000000000000000000000000000000000000be0f155283f8a2d189f5291717a477a963062067ea4859aeb2b96df7918f31fd222bb0530a8435f000000000000000000000000000000000000100000000000011a3b984e6468aa4059a640f35808ed942808420b00800d8d64054814721a4d974b91442b4ddf629000000000000000000000000000000000000000000000000d3847d934809b53693f77f9faaefaf778080210000021800264ecb9a14e04874b4fe7a27a5e2f6c80000000000000000000000000000000000000000000000002eaa756ff91f83bd2b051e546b867f0c88f4aab56aece523fda72b2635a0b348c919b313d68a48f2000000000000000000000000000000000000000000000000191a4ae2fabaca98c8fb0bdd63545df32b4cd5ce7e1f2b66ac61e3e43e7fded70000000000000000000000000000000000000000000000000000000000000000000000000000000000100001010000009651ef5a52c32e3fe5064f8b8f63f42200000000000000000000000000000000 +line3d 640 480 0000000000000000000000000000000000000000000000000b0ba0e3fd3a4137e9f7b63ff9d909f70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007d40727ac0777f922047e2be1f62944188080000000001310000000000000000000000000000000000000000000000000000000000000000967d12d73dccd37799d03d407848353de36d04707837532a19756b2781a085ef07065c0e223f190a0000000000000000000000000000000000010000000000008b260bebaf548e91a4df05d76bf4862c879e8471b3cd7f2799b3eec77d6bfc4ec6433745031324ac00000000000000000000000000000000000000000000000035c929862d731526b51d21df4e57329a992413d129e740c7215d424e651eb91fd95b498e64ab11c9000000000000000000000000000000000000000000000000f5b6a5401521903ab17305a75211086aa4db34591565264d5c1ae9cc2a182c6d23ff670f557853e7000000000000000000000000000000000800024000100284d12ff330a0a9786a7f377a8339a8586da434930fdb20016a6e609753b657086508c0d4000804a440000000000000000000000000000000000000000000000000000000000000000010027c24ebc8021a187c4d709af9ca1f065af43386e52e8500000000000000000000000000000000 anim_sine_f01 640 480 6833c312e3df098bf91952e619b2e9b2a0c37cfae9f0cb73dc0e7c06024ef504cf3b2799b520366731f68bf7b6b9c555b3f93ad9bb4292d516491874ad52649709b4ddf11a137d3a2d3cf7db67eed4805fc5f314d49d5ae325db74127621f3f0ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd44de31cd4cec725dfc8c7a3f55aeb536ab344199e85c7cb65c6c17b508088c67000000000000000000000000000000000000000000000000d1b326e7f4fcbf8fd6bd6429ec7730cae3675076562ba16d0000000000000000b10118980b479e9a4e45523c21e715cb00000000000000000020010001001000a8dcd1a316ed0287fcde1e506cfeed5a3f9632cc69ffc3ec00000000000000000000000000000000d24372f48cbb78160000000000000000657cdac51ab1791abb6a6bd70a94057d3e2a2fb963d910d9cb79c34be85e7740000000000000000000000000000000008948a63d8d8d44cab7248661624c1ef8b6f88a96496c68bef1449c6d30d95b5eca1e3ad9090f47c3ecb1c871aa993ac2000000000000000000000000000000000000000000000000e21fd9094e29da6c00000000000000004cb261193db438d3f1164b880ce875ac5ab6cdc0b4efee4855a4e8f77c00eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e anim_sine_f02 640 480 6833c312e3df098bf91952e619b2e9b2a0c37cfae9f0cb73dc0e7c06024ef504cf3b2799b520366731f68bf7b6b9c555b3f93ad9bb4292d516491874ad52649709b4ddf11a137d3a2d3cf7db67eed480dfa9c8e516fb621925db74127621f3f0ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd44de31cd4cec725dcc50e0dfc7004e1287d4351752e0fabe39fef122af090d76000000000000000000000000000000000000000000000000d1b326e7f4fcbf8fd6bd6429ec7730ca2dd5a7450bccdfce0000000000000000fd38dd8dbf5ee43d00000000000000000000000000000000d92d3b7411f4c9aba8dcd1a316ed0287fcde1e506cfeed5a31b886bc8666833c0000000000000000074cc625ea9068812971cc7b6d9ebd130000000000000000f45fdaa4a6bd78a6bb6a6bd70a94057d3e2a2fb963d910d9cb79c34be85e77400000000000000000000000000000000082cef30a8815369e8b03691d5c97d60d2e8858ef0c2ae6aff1449c6d30d95b5eca1e3ad9090f47c3ecb1c871aa993ac2000000000000000000000000000000003d43c249dcf877c417b5f7f6df442ffe00000000000000004cb261193db438d3f1164b880ce875ac5ab6cdc0b4efee4855a4e8f77c00eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e anim_sine_f03 640 480 6833c312e3df098bf91952e619b2e9b2a0c37cfae9f0cb73dc0e7c06024ef504cf3b2799b520366731f68bf7b6b9c555b3f93ad9bb4292d516491874ad52649709b4ddf11a137d3aa83de7cf7cdbe4941537af69414f940f25db74127621f3f0ab835ae019a572d578176ae5641fcee21b80061009890390a359466920cac7cd44de31cd4cec725da1ee5c12df477e7ba611b1771e65aed7232ebac41117b9a500000000000000000000000000000000e5300f5a620ecc17d1b326e7f4fcbf8fd6bd6429ec7730cab74d5b2712e117a70000000000000000e76b6c2ad2b3eef200000000000000000000000000000000e676c20b9c7dd242a8dcd1a316ed0287fcde1e506cfeed5a31b886bc8666833c0000000000000000435d2b874299819a3006b0203a330012a34298ea5736311001306155a0d08dc8bb6a6bd70a94057d3e2a2fb963d910d9cb79c34be85e7740000000000000000062442048264024259403bff5bb2e20c6926843f396666d7a0802000000040000f1449c6d30d95b5eca1e3ad9090f47c3ecb1c871aa993ac2000000000000000000000000000000001e263444e2a606c91a86904af8e7e02500000000000000004cb261193db438d3f1164b880ce875ac5ab6cdc0b4efee4855a4e8f77c00eba7901e2fd8c6bf735106456bb7b1055eb11b149c7ffa838e12dbb0a1a8a5df56cf6fc51c434a25072e From d08832c0944594a65a842a4891dcbaf2020a68ea Mon Sep 17 00:00:00 2001 From: jalvesz <102541118+jalvesz@users.noreply.github.com> Date: Wed, 4 Nov 2026 05:55:02 +0000 Subject: [PATCH 3/3] Allocate spy mask explicitly --- src/fplotlib.f90 | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fplotlib.f90 b/src/fplotlib.f90 index d5fd7de..9b02b54 100644 --- a/src/fplotlib.f90 +++ b/src/fplotlib.f90 @@ -2723,6 +2723,7 @@ subroutine spy_dense(a, precision, markersize, color, marker) tol = 0.0_dp if (present(precision)) tol = abs(precision) + allocate (mask(size(a, 1), size(a, 2))) mask = abs(a) > tol allocate (ij(2, count(mask))) k = 0