demo + utils venv
@@ -0,0 +1,11 @@
|
||||
import os
|
||||
|
||||
|
||||
# Check that the test directories exist
|
||||
if not os.path.exists(os.path.join(
|
||||
os.path.dirname(__file__), 'baseline_images')):
|
||||
raise IOError(
|
||||
'The baseline image directory does not exist. '
|
||||
'This is most likely because the test data is not installed. '
|
||||
'You may need to install matplotlib from source to get the '
|
||||
'test data.')
|
||||
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 47 KiB |
@@ -0,0 +1,580 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="345.6pt" version="1.1" viewBox="0 0 460.8 345.6" width="460.8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="M 0 345.6
|
||||
L 460.8 345.6
|
||||
L 460.8 0
|
||||
L 0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_2">
|
||||
<path d="M 57.6 307.584
|
||||
L 414.72 307.584
|
||||
L 414.72 41.472
|
||||
L 57.6 41.472
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="pane3d_1">
|
||||
<g id="patch_3">
|
||||
<path d="M 103.645013 249.524693
|
||||
L 204.185554 184.643006
|
||||
L 204.185554 54.879632
|
||||
L 103.645013 119.761319
|
||||
" style="fill:#f2f2f2;opacity:0.5;stroke:#f2f2f2;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_2">
|
||||
<g id="patch_4">
|
||||
<path d="M 204.185554 184.643006
|
||||
L 378.326878 222.102465
|
||||
L 378.326878 92.339091
|
||||
L 204.185554 54.879632
|
||||
" style="fill:#e6e6e6;opacity:0.5;stroke:#e6e6e6;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_3">
|
||||
<g id="patch_5">
|
||||
<path d="M 103.645013 249.524693
|
||||
L 277.786338 286.984152
|
||||
L 378.326878 222.102465
|
||||
L 204.185554 184.643006
|
||||
" style="fill:#ececec;opacity:0.5;stroke:#ececec;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_1">
|
||||
<g id="line2d_1">
|
||||
<path d="M 103.645013 249.524693
|
||||
L 277.786338 286.984152
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_1">
|
||||
<path d="M 107.12784 250.273882
|
||||
L 207.66838 185.392195
|
||||
L 207.66838 55.628821
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 140.562974 257.466098
|
||||
L 241.103515 192.584411
|
||||
L 241.103515 62.821037
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 173.998109 264.658314
|
||||
L 274.538649 199.776627
|
||||
L 274.538649 70.013253
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 207.433243 271.850531
|
||||
L 307.973783 206.968844
|
||||
L 307.973783 77.205469
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 240.868377 279.042747
|
||||
L 341.408918 214.16106
|
||||
L 341.408918 84.397686
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 274.303511 286.234963
|
||||
L 374.844052 221.353276
|
||||
L 374.844052 91.589902
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="xtick_1">
|
||||
<g id="line2d_2">
|
||||
<path d="M 107.932164 249.754828
|
||||
L 105.519191 251.311989
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_1">
|
||||
<!-- 0.0 -->
|
||||
<defs>
|
||||
<path d="M 31.78125 66.40625
|
||||
Q 24.171875 66.40625 20.328125 58.90625
|
||||
Q 16.5 51.421875 16.5 36.375
|
||||
Q 16.5 21.390625 20.328125 13.890625
|
||||
Q 24.171875 6.390625 31.78125 6.390625
|
||||
Q 39.453125 6.390625 43.28125 13.890625
|
||||
Q 47.125 21.390625 47.125 36.375
|
||||
Q 47.125 51.421875 43.28125 58.90625
|
||||
Q 39.453125 66.40625 31.78125 66.40625
|
||||
M 31.78125 74.21875
|
||||
Q 44.046875 74.21875 50.515625 64.515625
|
||||
Q 56.984375 54.828125 56.984375 36.375
|
||||
Q 56.984375 17.96875 50.515625 8.265625
|
||||
Q 44.046875 -1.421875 31.78125 -1.421875
|
||||
Q 19.53125 -1.421875 13.0625 8.265625
|
||||
Q 6.59375 17.96875 6.59375 36.375
|
||||
Q 6.59375 54.828125 13.0625 64.515625
|
||||
Q 19.53125 74.21875 31.78125 74.21875
|
||||
" id="DejaVuSans-30"/>
|
||||
<path d="M 10.6875 12.40625
|
||||
L 21 12.40625
|
||||
L 21 0
|
||||
L 10.6875 0
|
||||
z
|
||||
" id="DejaVuSans-2e"/>
|
||||
</defs>
|
||||
<g transform="translate(92.052333 271.664175)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-30"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_2">
|
||||
<g id="line2d_3">
|
||||
<path d="M 141.367299 256.947045
|
||||
L 138.954326 258.504205
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_2">
|
||||
<!-- 0.2 -->
|
||||
<defs>
|
||||
<path d="M 19.1875 8.296875
|
||||
L 53.609375 8.296875
|
||||
L 53.609375 0
|
||||
L 7.328125 0
|
||||
L 7.328125 8.296875
|
||||
Q 12.9375 14.109375 22.625 23.890625
|
||||
Q 32.328125 33.6875 34.8125 36.53125
|
||||
Q 39.546875 41.84375 41.421875 45.53125
|
||||
Q 43.3125 49.21875 43.3125 52.78125
|
||||
Q 43.3125 58.59375 39.234375 62.25
|
||||
Q 35.15625 65.921875 28.609375 65.921875
|
||||
Q 23.96875 65.921875 18.8125 64.3125
|
||||
Q 13.671875 62.703125 7.8125 59.421875
|
||||
L 7.8125 69.390625
|
||||
Q 13.765625 71.78125 18.9375 73
|
||||
Q 24.125 74.21875 28.421875 74.21875
|
||||
Q 39.75 74.21875 46.484375 68.546875
|
||||
Q 53.21875 62.890625 53.21875 53.421875
|
||||
Q 53.21875 48.921875 51.53125 44.890625
|
||||
Q 49.859375 40.875 45.40625 35.40625
|
||||
Q 44.1875 33.984375 37.640625 27.21875
|
||||
Q 31.109375 20.453125 19.1875 8.296875
|
||||
" id="DejaVuSans-32"/>
|
||||
</defs>
|
||||
<g transform="translate(125.487467 278.856391)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_3">
|
||||
<g id="line2d_4">
|
||||
<path d="M 174.802433 264.139261
|
||||
L 172.38946 265.696421
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_3">
|
||||
<!-- 0.4 -->
|
||||
<defs>
|
||||
<path d="M 37.796875 64.3125
|
||||
L 12.890625 25.390625
|
||||
L 37.796875 25.390625
|
||||
z
|
||||
M 35.203125 72.90625
|
||||
L 47.609375 72.90625
|
||||
L 47.609375 25.390625
|
||||
L 58.015625 25.390625
|
||||
L 58.015625 17.1875
|
||||
L 47.609375 17.1875
|
||||
L 47.609375 0
|
||||
L 37.796875 0
|
||||
L 37.796875 17.1875
|
||||
L 4.890625 17.1875
|
||||
L 4.890625 26.703125
|
||||
z
|
||||
" id="DejaVuSans-34"/>
|
||||
</defs>
|
||||
<g transform="translate(158.922601 286.048608)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-34"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_4">
|
||||
<g id="line2d_5">
|
||||
<path d="M 208.237567 271.331477
|
||||
L 205.824594 272.888638
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_4">
|
||||
<!-- 0.6 -->
|
||||
<defs>
|
||||
<path d="M 33.015625 40.375
|
||||
Q 26.375 40.375 22.484375 35.828125
|
||||
Q 18.609375 31.296875 18.609375 23.390625
|
||||
Q 18.609375 15.53125 22.484375 10.953125
|
||||
Q 26.375 6.390625 33.015625 6.390625
|
||||
Q 39.65625 6.390625 43.53125 10.953125
|
||||
Q 47.40625 15.53125 47.40625 23.390625
|
||||
Q 47.40625 31.296875 43.53125 35.828125
|
||||
Q 39.65625 40.375 33.015625 40.375
|
||||
M 52.59375 71.296875
|
||||
L 52.59375 62.3125
|
||||
Q 48.875 64.0625 45.09375 64.984375
|
||||
Q 41.3125 65.921875 37.59375 65.921875
|
||||
Q 27.828125 65.921875 22.671875 59.328125
|
||||
Q 17.53125 52.734375 16.796875 39.40625
|
||||
Q 19.671875 43.65625 24.015625 45.921875
|
||||
Q 28.375 48.1875 33.59375 48.1875
|
||||
Q 44.578125 48.1875 50.953125 41.515625
|
||||
Q 57.328125 34.859375 57.328125 23.390625
|
||||
Q 57.328125 12.15625 50.6875 5.359375
|
||||
Q 44.046875 -1.421875 33.015625 -1.421875
|
||||
Q 20.359375 -1.421875 13.671875 8.265625
|
||||
Q 6.984375 17.96875 6.984375 36.375
|
||||
Q 6.984375 53.65625 15.1875 63.9375
|
||||
Q 23.390625 74.21875 37.203125 74.21875
|
||||
Q 40.921875 74.21875 44.703125 73.484375
|
||||
Q 48.484375 72.75 52.59375 71.296875
|
||||
" id="DejaVuSans-36"/>
|
||||
</defs>
|
||||
<g transform="translate(192.357736 293.240824)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-36"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_5">
|
||||
<g id="line2d_6">
|
||||
<path d="M 241.672701 278.523693
|
||||
L 239.259728 280.080854
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_5">
|
||||
<!-- 0.8 -->
|
||||
<defs>
|
||||
<path d="M 31.78125 34.625
|
||||
Q 24.75 34.625 20.71875 30.859375
|
||||
Q 16.703125 27.09375 16.703125 20.515625
|
||||
Q 16.703125 13.921875 20.71875 10.15625
|
||||
Q 24.75 6.390625 31.78125 6.390625
|
||||
Q 38.8125 6.390625 42.859375 10.171875
|
||||
Q 46.921875 13.96875 46.921875 20.515625
|
||||
Q 46.921875 27.09375 42.890625 30.859375
|
||||
Q 38.875 34.625 31.78125 34.625
|
||||
M 21.921875 38.8125
|
||||
Q 15.578125 40.375 12.03125 44.71875
|
||||
Q 8.5 49.078125 8.5 55.328125
|
||||
Q 8.5 64.0625 14.71875 69.140625
|
||||
Q 20.953125 74.21875 31.78125 74.21875
|
||||
Q 42.671875 74.21875 48.875 69.140625
|
||||
Q 55.078125 64.0625 55.078125 55.328125
|
||||
Q 55.078125 49.078125 51.53125 44.71875
|
||||
Q 48 40.375 41.703125 38.8125
|
||||
Q 48.828125 37.15625 52.796875 32.3125
|
||||
Q 56.78125 27.484375 56.78125 20.515625
|
||||
Q 56.78125 9.90625 50.3125 4.234375
|
||||
Q 43.84375 -1.421875 31.78125 -1.421875
|
||||
Q 19.734375 -1.421875 13.25 4.234375
|
||||
Q 6.78125 9.90625 6.78125 20.515625
|
||||
Q 6.78125 27.484375 10.78125 32.3125
|
||||
Q 14.796875 37.15625 21.921875 38.8125
|
||||
M 18.3125 54.390625
|
||||
Q 18.3125 48.734375 21.84375 45.5625
|
||||
Q 25.390625 42.390625 31.78125 42.390625
|
||||
Q 38.140625 42.390625 41.71875 45.5625
|
||||
Q 45.3125 48.734375 45.3125 54.390625
|
||||
Q 45.3125 60.0625 41.71875 63.234375
|
||||
Q 38.140625 66.40625 31.78125 66.40625
|
||||
Q 25.390625 66.40625 21.84375 63.234375
|
||||
Q 18.3125 60.0625 18.3125 54.390625
|
||||
" id="DejaVuSans-38"/>
|
||||
</defs>
|
||||
<g transform="translate(225.79287 300.43304)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-38"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_6">
|
||||
<g id="line2d_7">
|
||||
<path d="M 275.107836 285.715909
|
||||
L 272.694863 287.27307
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_6">
|
||||
<!-- 1.0 -->
|
||||
<defs>
|
||||
<path d="M 12.40625 8.296875
|
||||
L 28.515625 8.296875
|
||||
L 28.515625 63.921875
|
||||
L 10.984375 60.40625
|
||||
L 10.984375 69.390625
|
||||
L 28.421875 72.90625
|
||||
L 38.28125 72.90625
|
||||
L 38.28125 8.296875
|
||||
L 54.390625 8.296875
|
||||
L 54.390625 0
|
||||
L 12.40625 0
|
||||
z
|
||||
" id="DejaVuSans-31"/>
|
||||
</defs>
|
||||
<g transform="translate(259.228004 307.625256)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-30"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_2">
|
||||
<g id="line2d_8">
|
||||
<path d="M 378.326878 222.102465
|
||||
L 277.786338 286.984152
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_2">
|
||||
<path d="M 105.655824 118.463685
|
||||
L 105.655824 248.227059
|
||||
L 279.797149 285.686518
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 124.959608 106.006401
|
||||
L 124.959608 235.769775
|
||||
L 299.100932 273.229234
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 144.263392 93.549117
|
||||
L 144.263392 223.312491
|
||||
L 318.404716 260.771951
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 163.567176 81.091833
|
||||
L 163.567176 210.855207
|
||||
L 337.7085 248.314667
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 182.870959 68.634549
|
||||
L 182.870959 198.397923
|
||||
L 357.012284 235.857383
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 202.174743 56.177265
|
||||
L 202.174743 185.940639
|
||||
L 376.316068 223.400099
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="xtick_7">
|
||||
<g id="line2d_9">
|
||||
<path d="M 278.404018 285.386843
|
||||
L 282.58341 286.28587
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_7">
|
||||
<!-- 0.0 -->
|
||||
<g transform="translate(284.18462 305.13377)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-30"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_8">
|
||||
<g id="line2d_10">
|
||||
<path d="M 297.707802 272.929559
|
||||
L 301.887194 273.828586
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_8">
|
||||
<!-- 0.2 -->
|
||||
<g transform="translate(303.488404 292.676486)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_9">
|
||||
<g id="line2d_11">
|
||||
<path d="M 317.011586 260.472275
|
||||
L 321.190977 261.371302
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_9">
|
||||
<!-- 0.4 -->
|
||||
<g transform="translate(322.792188 280.219203)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-34"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_10">
|
||||
<g id="line2d_12">
|
||||
<path d="M 336.315369 248.014991
|
||||
L 340.494761 248.914018
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_10">
|
||||
<!-- 0.6 -->
|
||||
<g transform="translate(342.095972 267.761919)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-36"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_11">
|
||||
<g id="line2d_13">
|
||||
<path d="M 355.619153 235.557707
|
||||
L 359.798545 236.456734
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_11">
|
||||
<!-- 0.8 -->
|
||||
<g transform="translate(361.399755 255.304635)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-38"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_12">
|
||||
<g id="line2d_14">
|
||||
<path d="M 374.922937 223.100423
|
||||
L 379.102329 223.99945
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_12">
|
||||
<!-- 1.0 -->
|
||||
<g transform="translate(380.703539 242.847351)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-30"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_3">
|
||||
<g id="line2d_15">
|
||||
<path d="M 378.326878 222.102465
|
||||
L 378.326878 92.339091
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_3">
|
||||
<path d="M 378.326878 219.507198
|
||||
L 204.185554 182.047738
|
||||
L 103.645013 246.929425
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 378.326878 194.59263
|
||||
L 204.185554 157.13317
|
||||
L 103.645013 222.014857
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 378.326878 169.678062
|
||||
L 204.185554 132.218603
|
||||
L 103.645013 197.10029
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 378.326878 144.763494
|
||||
L 204.185554 107.304035
|
||||
L 103.645013 172.185722
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 378.326878 119.848926
|
||||
L 204.185554 82.389467
|
||||
L 103.645013 147.271154
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
<path d="M 378.326878 94.934359
|
||||
L 204.185554 57.474899
|
||||
L 103.645013 122.356586
|
||||
" style="fill:none;stroke:#b0b0b0;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="xtick_13">
|
||||
<g id="line2d_16">
|
||||
<path d="M 376.933748 219.207522
|
||||
L 381.11314 220.106549
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_13">
|
||||
<!-- 0.0 -->
|
||||
<g transform="translate(389.838295 225.162594)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-30"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_14">
|
||||
<g id="line2d_17">
|
||||
<path d="M 376.933748 194.292954
|
||||
L 381.11314 195.191981
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_14">
|
||||
<!-- 0.2 -->
|
||||
<g transform="translate(389.838295 200.248026)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_15">
|
||||
<g id="line2d_18">
|
||||
<path d="M 376.933748 169.378386
|
||||
L 381.11314 170.277413
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_15">
|
||||
<!-- 0.4 -->
|
||||
<g transform="translate(389.838295 175.333458)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-34"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_16">
|
||||
<g id="line2d_19">
|
||||
<path d="M 376.933748 144.463819
|
||||
L 381.11314 145.362846
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_16">
|
||||
<!-- 0.6 -->
|
||||
<g transform="translate(389.838295 150.41889)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-36"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_17">
|
||||
<g id="line2d_20">
|
||||
<path d="M 376.933748 119.549251
|
||||
L 381.11314 120.448278
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_17">
|
||||
<!-- 0.8 -->
|
||||
<g transform="translate(389.838295 125.504323)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-38"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_18">
|
||||
<g id="line2d_21">
|
||||
<path d="M 376.933748 94.634683
|
||||
L 381.11314 95.53371
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.8;"/>
|
||||
</g>
|
||||
<g id="text_18">
|
||||
<!-- 1.0 -->
|
||||
<g transform="translate(389.838295 100.589755)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
<use x="63.623047" xlink:href="#DejaVuSans-2e"/>
|
||||
<use x="95.410156" xlink:href="#DejaVuSans-30"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axes_1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 98 KiB |
@@ -0,0 +1,997 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="432pt" version="1.1" viewBox="0 0 576 432" width="576pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="M 0 432
|
||||
L 576 432
|
||||
L 576 0
|
||||
L 0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_2">
|
||||
<path d="M 72 388.8
|
||||
L 518.4 388.8
|
||||
L 518.4 43.2
|
||||
L 72 43.2
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="pane3d_1">
|
||||
<g id="patch_3">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 258.939234 227.701291
|
||||
L 256.812132 65.789882
|
||||
L 121.926546 141.921
|
||||
" style="fill:#f2f2f2;opacity:0.5;stroke:#f2f2f2;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_2">
|
||||
<g id="patch_4">
|
||||
<path d="M 258.939234 227.701291
|
||||
L 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
L 256.812132 65.789882
|
||||
" style="fill:#e6e6e6;opacity:0.5;stroke:#e6e6e6;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_3">
|
||||
<g id="patch_5">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
L 465.901687 275.072667
|
||||
L 258.939234 227.701291
|
||||
" style="fill:#ececec;opacity:0.5;stroke:#ececec;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_1">
|
||||
<g id="line2d_1">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_1">
|
||||
<path d="M 135.341407 313.489655
|
||||
L 262.91012 228.610182
|
||||
L 260.98105 66.603357
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 185.898981 326.299368
|
||||
L 311.080141 239.635758
|
||||
L 311.581097 76.476879
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 237.565599 339.390079
|
||||
L 360.229327 250.885453
|
||||
L 363.262586 86.56142
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 290.378159 352.771135
|
||||
L 410.387838 262.366172
|
||||
L 416.060561 96.86382
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 344.375213 366.452305
|
||||
L 461.587089 274.085104
|
||||
L 470.011596 107.391216
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_1">
|
||||
<g id="line2d_2">
|
||||
<path d="M 136.440324 312.758477
|
||||
L 133.139482 314.954734
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_2">
|
||||
<g id="line2d_3">
|
||||
<path d="M 186.978165 325.552244
|
||||
L 183.736553 327.79643
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_3">
|
||||
<g id="line2d_4">
|
||||
<path d="M 238.623915 338.62648
|
||||
L 235.444941 340.920181
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_4">
|
||||
<g id="line2d_5">
|
||||
<path d="M 291.414412 351.990512
|
||||
L 288.301669 354.335385
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_5">
|
||||
<g id="line2d_6">
|
||||
<path d="M 345.388141 365.654082
|
||||
L 342.345417 368.051858
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_2">
|
||||
<g id="line2d_7">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_2">
|
||||
<path d="M 124.83963 140.276819
|
||||
L 133.925947 310.61159
|
||||
L 351.454544 365.608914
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 147.806962 127.313768
|
||||
L 155.613677 296.228029
|
||||
L 371.363131 349.859733
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 170.190782 114.680059
|
||||
L 176.778102 282.191531
|
||||
L 390.769477 334.507862
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 192.013047 102.363299
|
||||
L 197.437937 268.489682
|
||||
L 409.692352 319.538453
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 213.294627 90.351708
|
||||
L 217.611014 255.110658
|
||||
L 428.1496 304.937391
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 234.055372 78.634083
|
||||
L 237.314336 242.04318
|
||||
L 446.158198 290.691243
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 254.31417 67.199763
|
||||
L 256.564121 229.276494
|
||||
L 463.734308 276.787226
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_6">
|
||||
<g id="line2d_8">
|
||||
<path d="M 349.633738 365.148563
|
||||
L 355.10024 366.530648
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_7">
|
||||
<g id="line2d_9">
|
||||
<path d="M 369.558238 349.411067
|
||||
L 374.976914 350.758059
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_8">
|
||||
<g id="line2d_10">
|
||||
<path d="M 388.980278 334.070441
|
||||
L 394.351787 335.38366
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_9">
|
||||
<g id="line2d_11">
|
||||
<path d="M 407.91863 319.11186
|
||||
L 413.243626 320.392561
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_10">
|
||||
<g id="line2d_12">
|
||||
<path d="M 426.39114 304.521228
|
||||
L 431.67027 305.770604
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_11">
|
||||
<g id="line2d_13">
|
||||
<path d="M 444.414786 290.285133
|
||||
L 449.648694 291.504319
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_12">
|
||||
<g id="line2d_14">
|
||||
<path d="M 462.005733 276.390809
|
||||
L 467.195055 277.580886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_3">
|
||||
<g id="line2d_15">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_3">
|
||||
<path d="M 466.066381 271.900274
|
||||
L 258.89869 224.615172
|
||||
L 131.001569 309.196909
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 468.068718 233.330576
|
||||
L 258.406032 187.114858
|
||||
L 128.865116 269.816616
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 470.120301 193.812297
|
||||
L 257.901772 148.731448
|
||||
L 126.674356 229.435289
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 472.222968 153.310006
|
||||
L 257.385496 109.433377
|
||||
L 124.42719 188.014268
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 474.378652 111.786488
|
||||
L 256.856768 69.187556
|
||||
L 122.121412 145.512876
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_13">
|
||||
<g id="line2d_16">
|
||||
<path d="M 464.337863 271.505747
|
||||
L 469.527014 272.690148
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_14">
|
||||
<g id="line2d_17">
|
||||
<path d="M 466.318508 232.944779
|
||||
L 471.572824 234.102983
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_15">
|
||||
<g id="line2d_18">
|
||||
<path d="M 468.347848 193.435781
|
||||
L 473.668985 194.566132
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_16">
|
||||
<g id="line2d_19">
|
||||
<path d="M 470.4277 152.943356
|
||||
L 475.817377 154.044099
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_17">
|
||||
<g id="line2d_20">
|
||||
<path d="M 472.559975 111.430323
|
||||
L 478.01998 112.499596
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axes_1">
|
||||
<g id="patch_6">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 260.499651 227.097258
|
||||
L 268.156793 228.848353
|
||||
L 268.156793 228.848353
|
||||
L 260.499651 227.097258
|
||||
L 260.499651 227.097258
|
||||
L 260.499651 227.097258
|
||||
" style="fill:#00bfbf;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_7">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 270.074909 229.287003
|
||||
L 277.76275 231.045119
|
||||
L 277.708309 223.58529
|
||||
L 270.002751 221.835072
|
||||
L 270.074909 229.287003
|
||||
L 270.074909 229.287003
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_8">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 279.688564 231.485529
|
||||
L 287.407289 233.250708
|
||||
L 287.342871 218.276467
|
||||
L 279.588343 216.527207
|
||||
L 279.688564 231.485529
|
||||
L 279.688564 231.485529
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_9">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 289.340847 233.69289
|
||||
L 297.090643 235.465174
|
||||
L 297.061569 212.921283
|
||||
L 289.257507 211.173065
|
||||
L 289.340847 233.69289
|
||||
L 289.340847 233.69289
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_10">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 299.031992 235.909137
|
||||
L 306.813047 237.68857
|
||||
L 306.865508 207.51913
|
||||
L 299.01134 205.77204
|
||||
L 299.031992 235.909137
|
||||
L 299.031992 235.909137
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_11">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 308.762234 238.134326
|
||||
L 316.574737 239.92095
|
||||
L 316.755816 202.069386
|
||||
L 308.85096 200.323511
|
||||
L 308.762234 238.134326
|
||||
L 308.762234 238.134326
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_12">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 221.567951 252.927395
|
||||
L 229.342356 254.7622
|
||||
L 229.342356 254.7622
|
||||
L 221.567951 252.927395
|
||||
L 221.567951 252.927395
|
||||
L 221.567951 252.927395
|
||||
" style="fill:#00bfbf;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_13">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 318.531811 240.368509
|
||||
L 326.375953 242.162369
|
||||
L 326.733638 196.57142
|
||||
L 318.777503 194.82685
|
||||
L 318.531811 240.368509
|
||||
L 318.531811 240.368509
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_14">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 231.289938 255.221841
|
||||
L 239.096252 257.064177
|
||||
L 238.948695 249.488986
|
||||
L 231.124117 247.654725
|
||||
L 231.289938 255.221841
|
||||
L 231.289938 255.221841
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_15">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 328.34096 242.611743
|
||||
L 336.216934 244.412883
|
||||
L 336.800141 191.024589
|
||||
L 328.792127 189.281416
|
||||
L 328.34096 242.611743
|
||||
L 328.34096 242.611743
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_16">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 241.051836 257.525707
|
||||
L 248.890254 259.37562
|
||||
L 248.640551 244.168829
|
||||
L 240.765212 242.335195
|
||||
L 241.051836 257.525707
|
||||
L 241.051836 257.525707
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_17">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 338.189924 244.864081
|
||||
L 346.097924 246.672545
|
||||
L 346.956513 185.428239
|
||||
L 338.896008 183.686557
|
||||
L 338.189924 244.864081
|
||||
L 338.189924 244.864081
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_18">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 250.853889 259.839049
|
||||
L 258.72461 261.696586
|
||||
L 258.419069 238.801101
|
||||
L 250.492374 236.968177
|
||||
L 250.853889 259.839049
|
||||
L 250.853889 259.839049
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_19">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 348.078945 247.125581
|
||||
L 356.019167 248.941413
|
||||
L 357.203963 179.781703
|
||||
L 349.090345 178.041609
|
||||
L 348.078945 247.125581
|
||||
L 348.078945 247.125581
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_20">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 260.696346 262.161927
|
||||
L 268.599571 264.027135
|
||||
L 268.285419 233.385159
|
||||
L 260.30676 231.553033
|
||||
L 260.696346 262.161927
|
||||
L 260.696346 262.161927
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_21">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 358.008267 249.396296
|
||||
L 365.980908 251.219543
|
||||
L 367.543722 174.084303
|
||||
L 359.376359 172.345897
|
||||
L 358.008267 249.396296
|
||||
L 358.008267 249.396296
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_22">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 270.579458 264.494399
|
||||
L 278.515388 266.367326
|
||||
L 278.240787 227.920352
|
||||
L 270.209548 226.089112
|
||||
L 270.579458 264.494399
|
||||
L 270.579458 264.494399
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_23">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 180.753946 280.00639
|
||||
L 188.648137 281.931054
|
||||
L 188.648137 281.931054
|
||||
L 180.753946 280.00639
|
||||
L 180.753946 280.00639
|
||||
L 180.753946 280.00639
|
||||
" style="fill:#00bfbf;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_24">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 367.978138 251.676285
|
||||
L 375.983398 253.506991
|
||||
L 377.977041 168.33535
|
||||
L 369.755292 166.598732
|
||||
L 367.978138 251.676285
|
||||
L 367.978138 251.676285
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_25">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 280.503477 266.836526
|
||||
L 288.472315 268.717219
|
||||
L 288.286385 222.406015
|
||||
L 280.201938 220.575753
|
||||
L 280.503477 266.836526
|
||||
L 280.503477 266.836526
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_26">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 190.625825 282.41323
|
||||
L 198.553201 284.345986
|
||||
L 198.303435 276.652891
|
||||
L 190.357228 274.728385
|
||||
L 190.625825 282.41323
|
||||
L 190.625825 282.41323
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_27">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 377.988807 253.965604
|
||||
L 386.026885 255.803815
|
||||
L 388.505197 162.534139
|
||||
L 380.228409 160.799415
|
||||
L 377.988807 253.965604
|
||||
L 377.988807 253.965604
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_28">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 290.468657 269.188367
|
||||
L 298.470609 271.076875
|
||||
L 298.423445 216.841472
|
||||
L 290.285152 215.012282
|
||||
L 290.468657 269.188367
|
||||
L 290.468657 269.188367
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_29">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 200.539212 284.83019
|
||||
L 208.499984 286.771088
|
||||
L 208.046785 271.326594
|
||||
L 200.047939 269.402329
|
||||
L 200.539212 284.83019
|
||||
L 200.539212 284.83019
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_30">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 388.040524 256.26431
|
||||
L 396.111623 258.110072
|
||||
L 399.12949 156.679956
|
||||
L 390.796997 154.947232
|
||||
L 388.040524 256.26431
|
||||
L 388.040524 256.26431
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_31">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 300.475254 271.549984
|
||||
L 308.510528 273.446355
|
||||
L 308.653222 211.226033
|
||||
L 300.460434 209.398011
|
||||
L 300.475254 271.549984
|
||||
L 300.475254 271.549984
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_32">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 210.49437 287.257335
|
||||
L 218.488749 289.206427
|
||||
L 217.879397 265.9515
|
||||
L 209.82728 264.027562
|
||||
L 210.49437 287.257335
|
||||
L 210.49437 287.257335
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_33">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 398.133543 258.572461
|
||||
L 406.237867 260.425821
|
||||
L 409.851241 150.772072
|
||||
L 401.462368 149.041457
|
||||
L 398.133543 258.572461
|
||||
L 398.133543 258.572461
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_34">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 310.523529 273.921436
|
||||
L 318.592331 275.82572
|
||||
L 318.976993 205.558999
|
||||
L 310.729051 203.732242
|
||||
L 310.523529 273.921436
|
||||
L 310.523529 273.921436
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_35">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 220.491563 289.694728
|
||||
L 228.519763 291.652065
|
||||
L 227.802504 260.526937
|
||||
L 219.696471 258.603413
|
||||
L 220.491563 289.694728
|
||||
L 220.491563 289.694728
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_36">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 408.268119 260.890115
|
||||
L 416.405873 262.751121
|
||||
L 420.671798 144.809743
|
||||
L 412.225858 143.081351
|
||||
L 408.268119 260.890115
|
||||
L 408.268119 260.890115
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_37">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 320.613741 276.302785
|
||||
L 328.716283 278.215033
|
||||
L 329.39606 199.839653
|
||||
L 321.092292 198.014264
|
||||
L 320.613741 276.302785
|
||||
L 320.613741 276.302785
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_38">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 230.531059 292.142435
|
||||
L 238.593294 294.10807
|
||||
L 237.817361 255.052218
|
||||
L 229.656756 253.129197
|
||||
L 230.531059 292.142435
|
||||
L 230.531059 292.142435
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_39">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 418.444508 263.217332
|
||||
L 426.6159 265.08603
|
||||
L 431.592533 138.792215
|
||||
L 423.088826 137.066159
|
||||
L 418.444508 263.217332
|
||||
L 418.444508 263.217332
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_40">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 137.917747 308.427057
|
||||
L 145.93419 310.448348
|
||||
L 145.93419 310.448348
|
||||
L 137.917747 308.427057
|
||||
L 137.917747 308.427057
|
||||
L 137.917747 308.427057
|
||||
" style="fill:#00bfbf;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_41">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 330.746155 278.694094
|
||||
L 338.882648 280.614355
|
||||
L 339.911748 194.067269
|
||||
L 331.551472 192.243351
|
||||
L 330.746155 278.694094
|
||||
L 330.746155 278.694094
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_42">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 240.613126 294.600521
|
||||
L 248.709614 296.574507
|
||||
L 247.925245 249.526644
|
||||
L 239.709404 247.60422
|
||||
L 240.613126 294.600521
|
||||
L 240.613126 294.600521
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_43">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 428.662971 265.554171
|
||||
L 436.868209 267.430609
|
||||
L 442.614843 132.718716
|
||||
L 434.052658 130.995116
|
||||
L 428.662971 265.554171
|
||||
L 428.662971 265.554171
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_44">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 147.94261 310.954757
|
||||
L 155.993592 312.984756
|
||||
L 155.631492 305.171263
|
||||
L 147.561097 303.149684
|
||||
L 147.94261 310.954757
|
||||
L 147.94261 310.954757
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_45">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 340.921034 281.095426
|
||||
L 349.091692 283.023749
|
||||
L 350.525409 188.241106
|
||||
L 342.107929 186.418765
|
||||
L 340.921034 281.095426
|
||||
L 340.921034 281.095426
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_46">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 250.738037 297.069052
|
||||
L 258.868995 299.051443
|
||||
L 258.12746 243.949504
|
||||
L 249.855704 242.02777
|
||||
L 250.738037 297.069052
|
||||
L 250.738037 297.069052
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_47">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 438.923768 267.900691
|
||||
L 447.163064 269.784918
|
||||
L 453.740153 126.588463
|
||||
L 445.118766 124.86744
|
||||
L 438.923768 267.900691
|
||||
L 438.923768 267.900691
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_48">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 158.010674 313.493349
|
||||
L 166.096418 315.532113
|
||||
L 165.419444 299.844847
|
||||
L 157.294437 297.823064
|
||||
L 158.010674 313.493349
|
||||
L 158.010674 313.493349
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_49">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 351.138646 283.506842
|
||||
L 359.343686 285.44328
|
||||
L 361.238416 182.360407
|
||||
L 352.763027 180.539753
|
||||
L 351.138646 283.506842
|
||||
L 351.138646 283.506842
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_50">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 260.906063 299.548096
|
||||
L 269.071714 301.538945
|
||||
L 268.425331 238.320072
|
||||
L 260.096971 236.399126
|
||||
L 260.906063 299.548096
|
||||
L 260.906063 299.548096
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_51">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 449.227163 270.256952
|
||||
L 457.500729 272.149016
|
||||
L 464.969913 120.400656
|
||||
L 456.288587 118.682334
|
||||
L 449.227163 270.256952
|
||||
L 449.227163 270.256952
|
||||
" style="fill:#ff0000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_52">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 168.122219 316.042905
|
||||
L 176.24295 318.090491
|
||||
L 175.299323 294.468407
|
||||
L 167.119032 292.446503
|
||||
L 168.122219 316.042905
|
||||
L 168.122219 316.042905
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_53">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 361.399262 285.928408
|
||||
L 369.6389 287.873011
|
||||
L 372.052173 176.424404
|
||||
L 363.518154 174.605549
|
||||
L 361.399262 285.928408
|
||||
L 361.399262 285.928408
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_54">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 271.117483 302.037719
|
||||
L 279.318047 304.03708
|
||||
L 278.820211 232.637609
|
||||
L 270.434545 230.717551
|
||||
L 271.117483 302.037719
|
||||
L 271.117483 302.037719
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_55">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 178.277526 318.603495
|
||||
L 186.433472 320.65996
|
||||
L 185.272431 289.041233
|
||||
L 177.036172 287.019297
|
||||
L 178.277526 318.603495
|
||||
L 178.277526 318.603495
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_56">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 371.703154 288.360187
|
||||
L 379.977609 290.313008
|
||||
L 382.968106 170.432314
|
||||
L 374.374726 168.615373
|
||||
L 371.703154 288.360187
|
||||
L 371.703154 288.360187
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_57">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 281.372573 304.537989
|
||||
L 289.608276 306.545918
|
||||
L 289.313477 226.901363
|
||||
L 280.869791 224.982296
|
||||
L 281.372573 304.537989
|
||||
L 281.372573 304.537989
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_58">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 188.476881 321.175191
|
||||
L 196.668272 323.240594
|
||||
L 195.340093 283.562605
|
||||
L 187.047171 281.540727
|
||||
L 188.476881 321.175191
|
||||
L 188.476881 321.175191
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_59">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 382.050595 290.802244
|
||||
L 390.36009 292.763334
|
||||
L 393.987672 164.383336
|
||||
L 385.334186 162.568428
|
||||
L 382.050595 290.802244
|
||||
L 382.050595 290.802244
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_60">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 291.671614 307.048975
|
||||
L 299.942683 309.065526
|
||||
L 299.906532 221.110566
|
||||
L 291.4041 219.192595
|
||||
L 291.671614 307.048975
|
||||
L 291.671614 307.048975
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_61">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 198.720571 323.758066
|
||||
L 206.947638 325.832464
|
||||
L 205.503661 278.031787
|
||||
L 197.153367 276.010059
|
||||
L 198.720571 323.758066
|
||||
L 198.720571 323.758066
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_62">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 392.441863 293.254645
|
||||
L 400.786619 295.224057
|
||||
L 405.112352 158.276658
|
||||
L 396.398001 156.463904
|
||||
L 392.441863 293.254645
|
||||
L 392.441863 293.254645
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_63">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 302.014891 309.570746
|
||||
L 310.321553 311.595975
|
||||
L 310.600806 215.264437
|
||||
L 302.038888 213.34767
|
||||
L 302.014891 309.570746
|
||||
L 302.014891 309.570746
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_64">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 209.008885 326.352193
|
||||
L 217.271862 328.435645
|
||||
L 215.764511 272.44803
|
||||
L 207.356125 270.426547
|
||||
L 209.008885 326.352193
|
||||
L 209.008885 326.352193
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_65">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 402.877236 295.717454
|
||||
L 411.257479 297.695241
|
||||
L 416.343657 152.11145
|
||||
L 407.567671 150.300974
|
||||
L 402.877236 295.717454
|
||||
L 402.877236 295.717454
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_66">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 312.402687 312.103372
|
||||
L 320.745173 314.137334
|
||||
L 321.397758 209.362177
|
||||
L 312.775601 207.446727
|
||||
L 312.402687 312.103372
|
||||
L 312.402687 312.103372
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_67">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 219.342116 328.957645
|
||||
L 227.641238 331.050212
|
||||
L 226.124048 266.810569
|
||||
L 217.656835 264.78943
|
||||
L 219.342116 328.957645
|
||||
L 219.342116 328.957645
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_68">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 413.356996 298.190739
|
||||
L 421.772953 300.176955
|
||||
L 427.683129 145.886866
|
||||
L 418.844721 144.078796
|
||||
L 413.356996 298.190739
|
||||
L 413.356996 298.190739
|
||||
" style="fill:#008000;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_69">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 322.835293 314.646921
|
||||
L 331.213834 316.689675
|
||||
L 332.298873 203.402977
|
||||
L 323.615711 201.488957
|
||||
L 322.835293 314.646921
|
||||
L 322.835293 314.646921
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_70">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 229.720558 331.574498
|
||||
L 238.056064 333.676237
|
||||
L 236.5837 261.118627
|
||||
L 228.056915 259.097933
|
||||
L 229.720558 331.574498
|
||||
L 229.720558 331.574498
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_71">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 333.312997 317.201467
|
||||
L 341.727828 319.253068
|
||||
L 343.305665 197.386006
|
||||
L 334.560718 195.473534
|
||||
L 333.312997 317.201467
|
||||
L 333.312997 317.201467
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_72">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 240.144509 334.202824
|
||||
L 248.516638 336.313798
|
||||
L 247.144928 255.37141
|
||||
L 238.55781 253.351264
|
||||
L 240.144509 334.202824
|
||||
L 240.144509 334.202824
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_73">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 343.836093 319.767079
|
||||
L 352.287451 321.827586
|
||||
L 354.41968 191.310421
|
||||
L 345.612153 189.399619
|
||||
L 343.836093 319.767079
|
||||
L 343.836093 319.767079
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_74">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 250.614269 336.842701
|
||||
L 259.023263 338.962971
|
||||
L 257.809217 249.568109
|
||||
L 249.160992 247.548618
|
||||
L 250.614269 336.842701
|
||||
L 250.614269 336.842701
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_75">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 354.404877 322.34383
|
||||
L 362.893 324.4133
|
||||
L 365.64249 185.175362
|
||||
L 356.771575 183.266353
|
||||
L 354.404877 322.34383
|
||||
L 354.404877 322.34383
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_76">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 261.13014 339.494205
|
||||
L 269.576243 341.623831
|
||||
L 268.578084 243.707899
|
||||
L 259.867964 241.689173
|
||||
L 261.13014 339.494205
|
||||
L 261.13014 339.494205
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_77">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 365.019647 324.931793
|
||||
L 373.544775 327.010285
|
||||
L 376.975703 178.979951
|
||||
L 368.040576 177.072862
|
||||
L 365.019647 324.931793
|
||||
L 365.019647 324.931793
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_78">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 271.692429 342.157413
|
||||
L 280.175886 344.296458
|
||||
L 279.453075 237.789938
|
||||
L 270.680256 235.77209
|
||||
L 271.692429 342.157413
|
||||
L 271.692429 342.157413
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_79">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 375.680703 327.531041
|
||||
L 384.243079 329.618615
|
||||
L 388.420955 172.723292
|
||||
L 379.420776 170.818256
|
||||
L 375.680703 327.531041
|
||||
L 375.680703 327.531041
|
||||
" style="fill:#0000ff;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_80">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 282.301441 344.832402
|
||||
L 290.822502 346.980928
|
||||
L 290.435766 231.813369
|
||||
L 281.599432 229.796515
|
||||
L 282.301441 344.832402
|
||||
L 282.301441 344.832402
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_81">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 292.95749 347.51925
|
||||
L 301.516405 349.677321
|
||||
L 301.527764 225.777317
|
||||
L 292.627082 223.761576
|
||||
L 292.95749 347.51925
|
||||
L 292.95749 347.51925
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_82">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 303.660887 350.218037
|
||||
L 312.257909 352.385717
|
||||
L 312.730711 219.680888
|
||||
L 303.764833 217.666385
|
||||
L 303.660887 350.218037
|
||||
L 303.660887 350.218037
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_83">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 314.41195 352.928843
|
||||
L 323.047333 355.106195
|
||||
L 324.046278 213.523174
|
||||
L 315.01434 211.510034
|
||||
L 314.41195 352.928843
|
||||
L 314.41195 352.928843
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_84">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 325.210997 355.651748
|
||||
L 333.884999 357.838837
|
||||
L 335.476173 207.303245
|
||||
L 326.377295 205.291599
|
||||
L 325.210997 355.651748
|
||||
L 325.210997 355.651748
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
<g id="patch_85">
|
||||
<path clip-path="url(#p21179d0b58)" d="M 336.05835 358.386832
|
||||
L 344.771232 360.583725
|
||||
L 347.022138 201.020153
|
||||
L 337.855423 199.010134
|
||||
L 336.05835 358.386832
|
||||
L 336.05835 358.386832
|
||||
" style="fill:#bfbf00;opacity:0.8;stroke:#000000;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="p21179d0b58">
|
||||
<rect height="345.6" width="446.4" x="72.0" y="43.2"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 81 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 39 KiB |
@@ -0,0 +1,424 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="432pt" version="1.1" viewBox="0 0 576 432" width="576pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="M 0 432
|
||||
L 576 432
|
||||
L 576 0
|
||||
L 0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_2">
|
||||
<path d="M 72 388.8
|
||||
L 518.4 388.8
|
||||
L 518.4 43.2
|
||||
L 72 43.2
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="pane3d_1">
|
||||
<g id="patch_3">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 258.939234 227.701291
|
||||
L 256.812132 65.789882
|
||||
L 121.926546 141.921
|
||||
" style="fill:#f2f2f2;opacity:0.5;stroke:#f2f2f2;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_2">
|
||||
<g id="patch_4">
|
||||
<path d="M 258.939234 227.701291
|
||||
L 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
L 256.812132 65.789882
|
||||
" style="fill:#e6e6e6;opacity:0.5;stroke:#e6e6e6;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_3">
|
||||
<g id="patch_5">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
L 465.901687 275.072667
|
||||
L 258.939234 227.701291
|
||||
" style="fill:#ececec;opacity:0.5;stroke:#ececec;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_1">
|
||||
<g id="line2d_1">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_1">
|
||||
<path d="M 135.341407 313.489655
|
||||
L 262.91012 228.610182
|
||||
L 260.98105 66.603357
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 160.483807 319.859956
|
||||
L 286.874573 234.095375
|
||||
L 286.148026 71.514157
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 185.898981 326.299368
|
||||
L 311.080141 239.635758
|
||||
L 311.581097 76.476879
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 211.591391 332.809024
|
||||
L 335.530482 245.232165
|
||||
L 337.284506 81.492351
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 237.565599 339.390079
|
||||
L 360.229327 250.885453
|
||||
L 363.262586 86.56142
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 263.826267 346.043713
|
||||
L 385.180483 256.596492
|
||||
L 389.519764 91.684949
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 290.378159 352.771135
|
||||
L 410.387838 262.366172
|
||||
L 416.060561 96.86382
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 317.226148 359.573579
|
||||
L 435.855357 268.1954
|
||||
L 442.889598 102.098935
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 344.375213 366.452305
|
||||
L 461.587089 274.085104
|
||||
L 470.011596 107.391216
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_1">
|
||||
<g id="line2d_2">
|
||||
<path d="M 136.440324 312.758477
|
||||
L 133.139482 314.954734
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_2">
|
||||
<g id="line2d_3">
|
||||
<path d="M 161.572996 319.120869
|
||||
L 158.301354 321.340896
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_3">
|
||||
<g id="line2d_4">
|
||||
<path d="M 186.978165 325.552244
|
||||
L 183.736553 327.79643
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_4">
|
||||
<g id="line2d_5">
|
||||
<path d="M 212.660287 332.05373
|
||||
L 209.449556 334.322471
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_5">
|
||||
<g id="line2d_6">
|
||||
<path d="M 238.623915 338.62648
|
||||
L 235.444941 340.920181
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_6">
|
||||
<g id="line2d_7">
|
||||
<path d="M 264.873705 345.271673
|
||||
L 261.727385 347.590748
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_7">
|
||||
<g id="line2d_8">
|
||||
<path d="M 291.414412 351.990512
|
||||
L 288.301669 354.335385
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_8">
|
||||
<g id="line2d_9">
|
||||
<path d="M 318.2509 358.784229
|
||||
L 315.17268 361.155332
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_9">
|
||||
<g id="line2d_10">
|
||||
<path d="M 345.388141 365.654082
|
||||
L 342.345417 368.051858
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_2">
|
||||
<g id="line2d_11">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_2">
|
||||
<path d="M 124.83963 140.276819
|
||||
L 133.925947 310.61159
|
||||
L 351.454544 365.608914
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 142.120716 130.523157
|
||||
L 150.241556 299.790884
|
||||
L 366.433824 353.759184
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 159.070412 120.956535
|
||||
L 166.260112 289.167187
|
||||
L 381.127889 342.135079
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 175.698161 111.571626
|
||||
L 181.989655 278.735167
|
||||
L 395.544809 330.730218
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 192.013047 102.363299
|
||||
L 197.437937 268.489682
|
||||
L 409.692352 319.538453
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 208.023819 93.326618
|
||||
L 212.612435 258.425775
|
||||
L 423.577998 308.55387
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 223.738902 84.456828
|
||||
L 227.520363 248.53866
|
||||
L 437.208951 297.770766
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 239.166411 75.749348
|
||||
L 242.168684 238.823719
|
||||
L 450.592157 287.18365
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 254.31417 67.199763
|
||||
L 256.564121 229.276494
|
||||
L 463.734308 276.787226
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_10">
|
||||
<g id="line2d_12">
|
||||
<path d="M 349.633738 365.148563
|
||||
L 355.10024 366.530648
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_11">
|
||||
<g id="line2d_13">
|
||||
<path d="M 364.624972 353.307638
|
||||
L 370.055544 354.663277
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_12">
|
||||
<g id="line2d_14">
|
||||
<path d="M 379.33087 341.692089
|
||||
L 384.725881 343.022034
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_13">
|
||||
<g id="line2d_15">
|
||||
<path d="M 393.7595 330.295542
|
||||
L 399.119319 331.600517
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_14">
|
||||
<g id="line2d_16">
|
||||
<path d="M 407.91863 319.11186
|
||||
L 413.243626 320.392561
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_15">
|
||||
<g id="line2d_17">
|
||||
<path d="M 421.815742 308.135135
|
||||
L 427.106278 309.392234
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_16">
|
||||
<g id="line2d_18">
|
||||
<path d="M 435.458042 297.359676
|
||||
L 440.714481 298.593818
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_17">
|
||||
<g id="line2d_19">
|
||||
<path d="M 448.852474 286.779996
|
||||
L 454.075176 287.991806
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_18">
|
||||
<g id="line2d_20">
|
||||
<path d="M 462.005733 276.390809
|
||||
L 467.195055 277.580886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_3">
|
||||
<g id="line2d_21">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_3">
|
||||
<path d="M 466.066381 271.900274
|
||||
L 258.89869 224.615172
|
||||
L 131.001569 309.196909
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 468.068718 233.330576
|
||||
L 258.406032 187.114858
|
||||
L 128.865116 269.816616
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 470.120301 193.812297
|
||||
L 257.901772 148.731448
|
||||
L 126.674356 229.435289
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 472.222968 153.310006
|
||||
L 257.385496 109.433377
|
||||
L 124.42719 188.014268
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 474.378652 111.786488
|
||||
L 256.856768 69.187556
|
||||
L 122.121412 145.512876
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_19">
|
||||
<g id="line2d_22">
|
||||
<path d="M 464.337863 271.505747
|
||||
L 469.527014 272.690148
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_20">
|
||||
<g id="line2d_23">
|
||||
<path d="M 466.318508 232.944779
|
||||
L 471.572824 234.102983
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_21">
|
||||
<g id="line2d_24">
|
||||
<path d="M 468.347848 193.435781
|
||||
L 473.668985 194.566132
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_22">
|
||||
<g id="line2d_25">
|
||||
<path d="M 470.4277 152.943356
|
||||
L 475.817377 154.044099
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_23">
|
||||
<g id="line2d_26">
|
||||
<path d="M 472.559975 111.430323
|
||||
L 478.01998 112.499596
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axes_1">
|
||||
<g id="Poly3DCollection_1">
|
||||
<path clip-path="url(#pcca6d018d3)" d="M 146.614877 231.721406
|
||||
L 159.531667 234.760121
|
||||
L 172.520089 237.815687
|
||||
L 185.580739 240.888245
|
||||
L 206.9384 238.637304
|
||||
L 211.921148 247.084907
|
||||
L 225.202136 250.209301
|
||||
L 238.55781 253.351264
|
||||
L 251.988802 256.510946
|
||||
L 273.510159 254.196155
|
||||
L 279.079303 262.88407
|
||||
L 292.740111 266.097818
|
||||
L 306.478837 269.329895
|
||||
L 320.29615 272.580461
|
||||
L 341.981907 270.199062
|
||||
L 349.694458 264.604042
|
||||
L 357.331505 259.063798
|
||||
L 364.89415 253.577527
|
||||
L 358.716192 245.031573
|
||||
L 379.800541 242.763785
|
||||
L 387.146389 237.434788
|
||||
L 394.42204 232.156715
|
||||
L 401.628495 226.92884
|
||||
L 395.32285 218.782963
|
||||
L 415.83773 216.620845
|
||||
L 422.842419 211.539339
|
||||
L 429.781733 206.50526
|
||||
L 436.656583 201.517946
|
||||
L 430.241548 193.744696
|
||||
L 417.085468 190.927682
|
||||
L 403.999065 188.125588
|
||||
L 390.981787 185.338295
|
||||
L 371.012017 187.377288
|
||||
L 365.152429 179.807647
|
||||
L 352.339273 177.064061
|
||||
L 339.593091 174.334816
|
||||
L 326.91336 171.619799
|
||||
L 307.081871 173.605938
|
||||
L 301.751182 166.232009
|
||||
L 289.267714 163.559017
|
||||
L 276.848656 160.899816
|
||||
L 264.49351 158.254301
|
||||
L 244.799849 160.189615
|
||||
L 237.331514 164.797835
|
||||
L 229.795882 169.44758
|
||||
L 222.19204 174.139414
|
||||
L 226.991762 181.627026
|
||||
L 206.775985 183.651651
|
||||
L 198.961861 188.473236
|
||||
L 191.075701 193.339269
|
||||
L 183.116505 198.250368
|
||||
L 187.74066 206.090024
|
||||
L 166.974908 208.21029
|
||||
L 158.79041 213.260408
|
||||
L 150.528683 218.358178
|
||||
L 142.188629 223.50428
|
||||
L 146.614877 231.721406
|
||||
z
|
||||
M 226.125278 214.832541
|
||||
L 246.901313 212.686108
|
||||
L 252.064316 220.740441
|
||||
L 231.143354 222.919043
|
||||
z
|
||||
M 291.508349 229.724251
|
||||
L 312.438258 227.518392
|
||||
L 318.168271 235.79634
|
||||
L 297.091411 238.035719
|
||||
z
|
||||
M 264.806923 189.974015
|
||||
L 285.031614 187.924978
|
||||
L 290.353193 195.612876
|
||||
L 269.991265 197.69191
|
||||
z
|
||||
M 329.187688 204.184864
|
||||
L 349.557251 202.080425
|
||||
L 355.427242 209.976754
|
||||
L 334.918599 212.112419
|
||||
z
|
||||
" style="fill:#dddcdc;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="pcca6d018d3">
|
||||
<rect height="345.6" width="446.4" x="72.0" y="43.2"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 59 KiB |
@@ -0,0 +1,479 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="432pt" version="1.1" viewBox="0 0 576 432" width="576pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="M 0 432
|
||||
L 576 432
|
||||
L 576 0
|
||||
L 0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_2">
|
||||
<path d="M 72 388.8
|
||||
L 518.4 388.8
|
||||
L 518.4 43.2
|
||||
L 72 43.2
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="pane3d_1">
|
||||
<g id="patch_3">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 258.939234 227.701291
|
||||
L 256.812132 65.789882
|
||||
L 121.926546 141.921
|
||||
" style="fill:#f2f2f2;opacity:0.5;stroke:#f2f2f2;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_2">
|
||||
<g id="patch_4">
|
||||
<path d="M 258.939234 227.701291
|
||||
L 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
L 256.812132 65.789882
|
||||
" style="fill:#e6e6e6;opacity:0.5;stroke:#e6e6e6;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_3">
|
||||
<g id="patch_5">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
L 465.901687 275.072667
|
||||
L 258.939234 227.701291
|
||||
" style="fill:#ececec;opacity:0.5;stroke:#ececec;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_1">
|
||||
<g id="line2d_1">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_1">
|
||||
<path d="M 135.341407 313.489655
|
||||
L 262.91012 228.610182
|
||||
L 260.98105 66.603357
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 168.925005 321.998692
|
||||
L 294.916126 235.935996
|
||||
L 294.595943 73.162588
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 202.996171 330.631263
|
||||
L 327.352943 243.360419
|
||||
L 328.6864 79.814614
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 237.565599 339.390079
|
||||
L 360.229327 250.885453
|
||||
L 363.262586 86.56142
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 272.644301 348.277928
|
||||
L 393.554274 258.513158
|
||||
L 398.334956 93.405046
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 308.243613 357.297684
|
||||
L 427.337028 266.245651
|
||||
L 433.914269 100.347591
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 344.375213 366.452305
|
||||
L 461.587089 274.085104
|
||||
L 470.011596 107.391216
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_1">
|
||||
<g id="line2d_2">
|
||||
<path d="M 136.440324 312.758477
|
||||
L 133.139482 314.954734
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_2">
|
||||
<g id="line2d_3">
|
||||
<path d="M 170.01089 321.25694
|
||||
L 166.749164 323.484977
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_3">
|
||||
<g id="line2d_4">
|
||||
<path d="M 204.068528 329.878707
|
||||
L 200.847407 332.139218
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_4">
|
||||
<g id="line2d_5">
|
||||
<path d="M 238.623915 338.62648
|
||||
L 235.444941 340.920181
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_5">
|
||||
<g id="line2d_6">
|
||||
<path d="M 273.688045 347.503043
|
||||
L 270.552814 349.830669
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_6">
|
||||
<g id="line2d_7">
|
||||
<path d="M 309.272234 356.51126
|
||||
L 306.1824 358.87357
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_7">
|
||||
<g id="line2d_8">
|
||||
<path d="M 345.388141 365.654082
|
||||
L 342.345417 368.051858
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_2">
|
||||
<g id="line2d_9">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_2">
|
||||
<path d="M 124.83963 140.276819
|
||||
L 133.925947 310.61159
|
||||
L 351.454544 365.608914
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 140.217137 131.597561
|
||||
L 148.44353 300.983356
|
||||
L 364.783694 355.064559
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 155.331963 123.066563
|
||||
L 162.725688 291.511259
|
||||
L 377.886771 344.699046
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 170.190782 114.680059
|
||||
L 176.778102 282.191531
|
||||
L 390.769477 334.507862
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 184.800044 106.434408
|
||||
L 190.606273 273.020523
|
||||
L 403.437326 324.486646
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 199.165982 98.326092
|
||||
L 204.215524 263.994706
|
||||
L 415.895649 314.631182
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 213.294627 90.351708
|
||||
L 217.611014 255.110658
|
||||
L 428.1496 304.937391
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 227.191809 82.507964
|
||||
L 230.79774 246.365064
|
||||
L 440.204168 295.401326
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 240.86317 74.791676
|
||||
L 243.780544 237.754714
|
||||
L 452.06418 286.01917
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 254.31417 67.199763
|
||||
L 256.564121 229.276494
|
||||
L 463.734308 276.787226
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_8">
|
||||
<g id="line2d_10">
|
||||
<path d="M 349.633738 365.148563
|
||||
L 355.10024 366.530648
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_9">
|
||||
<g id="line2d_11">
|
||||
<path d="M 362.973521 354.612048
|
||||
L 368.408066 355.970588
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_10">
|
||||
<g id="line2d_12">
|
||||
<path d="M 376.087133 344.254176
|
||||
L 381.490015 345.589767
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_11">
|
||||
<g id="line2d_13">
|
||||
<path d="M 388.980278 334.070441
|
||||
L 394.351787 335.38366
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_12">
|
||||
<g id="line2d_14">
|
||||
<path d="M 401.658469 324.056489
|
||||
L 406.998897 325.347894
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_13">
|
||||
<g id="line2d_15">
|
||||
<path d="M 414.127038 314.208109
|
||||
L 419.436673 315.478239
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_14">
|
||||
<g id="line2d_16">
|
||||
<path d="M 426.39114 304.521228
|
||||
L 431.67027 305.770604
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_15">
|
||||
<g id="line2d_17">
|
||||
<path d="M 438.455763 294.991906
|
||||
L 443.704674 296.221032
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_16">
|
||||
<g id="line2d_18">
|
||||
<path d="M 450.325737 285.61633
|
||||
L 455.544713 286.825695
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_17">
|
||||
<g id="line2d_19">
|
||||
<path d="M 462.005733 276.390809
|
||||
L 467.195055 277.580886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_3">
|
||||
<g id="line2d_20">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_3">
|
||||
<path d="M 466.066381 271.900274
|
||||
L 258.89869 224.615172
|
||||
L 131.001569 309.196909
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 467.061506 252.73185
|
||||
L 258.653786 205.973486
|
||||
L 129.940004 289.629551
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 468.068718 233.330576
|
||||
L 258.406032 187.114858
|
||||
L 128.865116 269.816616
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 469.088241 213.692183
|
||||
L 258.155377 168.035478
|
||||
L 127.776653 249.753452
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 470.120301 193.812297
|
||||
L 257.901772 148.731448
|
||||
L 126.674356 229.435289
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 471.16513 173.686436
|
||||
L 257.645162 129.198777
|
||||
L 125.557959 208.857234
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 472.222968 153.310006
|
||||
L 257.385496 109.433377
|
||||
L 124.42719 188.014268
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 473.294058 132.6783
|
||||
L 257.122716 89.431065
|
||||
L 123.28177 166.901243
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 474.378652 111.786488
|
||||
L 256.856768 69.187556
|
||||
L 122.121412 145.512876
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_18">
|
||||
<g id="line2d_21">
|
||||
<path d="M 464.337863 271.505747
|
||||
L 469.527014 272.690148
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_19">
|
||||
<g id="line2d_22">
|
||||
<path d="M 465.322209 252.341622
|
||||
L 470.543739 253.513124
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_20">
|
||||
<g id="line2d_23">
|
||||
<path d="M 466.318508 232.944779
|
||||
L 471.572824 234.102983
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_21">
|
||||
<g id="line2d_24">
|
||||
<path d="M 467.326979 213.310956
|
||||
L 472.614495 214.455446
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_22">
|
||||
<g id="line2d_25">
|
||||
<path d="M 468.347848 193.435781
|
||||
L 473.668985 194.566132
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_23">
|
||||
<g id="line2d_26">
|
||||
<path d="M 469.381343 173.314777
|
||||
L 474.736531 174.43055
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_24">
|
||||
<g id="line2d_27">
|
||||
<path d="M 470.4277 152.943356
|
||||
L 475.817377 154.044099
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_25">
|
||||
<g id="line2d_28">
|
||||
<path d="M 471.487162 132.316812
|
||||
L 476.911775 133.40206
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_26">
|
||||
<g id="line2d_29">
|
||||
<path d="M 472.559975 111.430323
|
||||
L 478.01998 112.499596
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axes_1">
|
||||
<g id="line2d_30">
|
||||
<path clip-path="url(#p47a4741ada)" d="M 358.008267 249.396296
|
||||
L 374.473482 255.287414
|
||||
L 385.204896 263.156503
|
||||
L 389.782754 272.354677
|
||||
L 388.149984 282.164018
|
||||
L 380.635403 291.835913
|
||||
L 367.952315 300.639085
|
||||
L 351.162935 307.913929
|
||||
L 331.604056 313.126742
|
||||
L 310.777359 315.915538
|
||||
L 290.216467 316.119289
|
||||
L 271.349408 313.785027
|
||||
L 255.377108 309.151518
|
||||
L 243.185022 302.612954
|
||||
L 235.297325 294.669669
|
||||
L 231.874059 285.87435
|
||||
L 232.744053 276.781437
|
||||
L 237.462184 267.905144
|
||||
L 245.378817 259.688714
|
||||
L 255.711222 252.485092
|
||||
L 267.609997 246.547546
|
||||
L 280.21683 242.02806
|
||||
L 292.712505 238.98131
|
||||
L 304.355657 237.372442
|
||||
L 314.513396 237.087461
|
||||
L 322.684826 237.945574
|
||||
L 328.517978 239.713191
|
||||
L 331.820005 242.119466
|
||||
L 332.559995 244.873134
|
||||
L 330.86354 247.680215
|
||||
L 326.998445 250.261762
|
||||
L 321.351661 252.370542
|
||||
L 314.398514 253.805334
|
||||
L 306.666423 254.421586
|
||||
L 298.696206 254.137441
|
||||
L 291.004529 252.934683
|
||||
L 284.050953 250.854738
|
||||
L 278.212304 247.990498
|
||||
L 273.765992 244.475162
|
||||
L 270.882655 240.469504
|
||||
L 269.627317 236.148951
|
||||
L 269.967465 231.691628
|
||||
L 271.785972 227.268149
|
||||
L 274.896793 223.033595
|
||||
L 279.061595 219.121721
|
||||
L 284.005919 215.641221
|
||||
L 289.434011 212.673688
|
||||
L 295.04189 210.272862
|
||||
L 300.528651 208.464745
|
||||
L 305.606267 207.248273
|
||||
L 310.00833 206.596294
|
||||
L 313.498211 206.456746
|
||||
L 315.877054 206.75407
|
||||
L 316.991867 207.390967
|
||||
L 316.743741 208.250741
|
||||
L 315.095894 209.200492
|
||||
L 312.080947 210.09544
|
||||
L 307.806483 210.784607
|
||||
L 302.457728 211.117916
|
||||
L 296.296078 210.954602
|
||||
L 289.652351 210.172554
|
||||
L 282.913958 208.677941
|
||||
L 276.50589 206.414262
|
||||
L 270.866153 203.36982
|
||||
L 266.417182 199.582649
|
||||
L 263.535474 195.142094
|
||||
L 262.522141 190.186602
|
||||
L 263.577078 184.897701
|
||||
L 266.779084 179.490563
|
||||
L 272.07352 174.201914
|
||||
L 279.268237 169.276248
|
||||
L 288.037662 164.951286
|
||||
L 297.934345 161.443552
|
||||
L 308.407016 158.934667
|
||||
L 318.824249 157.558766
|
||||
L 328.50315 157.391278
|
||||
L 336.742897 158.439288
|
||||
L 342.863229 160.633841
|
||||
L 346.247962 163.824811
|
||||
L 346.393075 167.779398
|
||||
L 342.957725 172.185649
|
||||
L 335.814731 176.662658
|
||||
L 325.094903 180.778928
|
||||
L 311.217535 184.079656
|
||||
L 294.898362 186.122333
|
||||
L 277.12716 186.51807
|
||||
L 259.110658 184.974053
|
||||
L 242.182317 181.330945
|
||||
L 227.687687 175.588811
|
||||
L 216.860247 167.916547
|
||||
L 210.705713 158.642704
|
||||
L 209.911289 148.229241
|
||||
L 214.790749 137.232893
|
||||
L 225.268303 126.260641
|
||||
L 240.896674 115.925708
|
||||
L 260.899743 106.808926
|
||||
L 284.228494 99.427952
|
||||
L 309.62045 94.214443
|
||||
L 335.656335 91.497472
|
||||
L 360.812012 91.490539
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="p47a4741ada">
|
||||
<rect height="345.6" width="446.4" x="72" y="43.2"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 280 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 51 KiB |
@@ -0,0 +1,311 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="432pt" version="1.1" viewBox="0 0 576 432" width="576pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="M 0 432
|
||||
L 576 432
|
||||
L 576 0
|
||||
L 0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_2">
|
||||
<path d="M 72 388.8
|
||||
L 518.4 388.8
|
||||
L 518.4 43.2
|
||||
L 72 43.2
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="pane3d_1">
|
||||
<g id="patch_3">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 258.939234 227.701291
|
||||
L 256.812132 65.789882
|
||||
L 121.926546 141.921
|
||||
" style="fill:#f2f2f2;opacity:0.5;stroke:#f2f2f2;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_2">
|
||||
<g id="patch_4">
|
||||
<path d="M 258.939234 227.701291
|
||||
L 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
L 256.812132 65.789882
|
||||
" style="fill:#e6e6e6;opacity:0.5;stroke:#e6e6e6;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_3">
|
||||
<g id="patch_5">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
L 465.901687 275.072667
|
||||
L 258.939234 227.701291
|
||||
" style="fill:#ececec;opacity:0.5;stroke:#ececec;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_1">
|
||||
<g id="line2d_1">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_1">
|
||||
<path d="M 135.341407 313.489655
|
||||
L 262.91012 228.610182
|
||||
L 260.98105 66.603357
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 175.699895 323.715238
|
||||
L 301.368748 237.412929
|
||||
L 301.375668 74.485507
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 216.763541 334.119486
|
||||
L 340.45025 246.358245
|
||||
L 342.458008 82.50185
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 258.55099 344.707123
|
||||
L 380.169882 255.449622
|
||||
L 384.245785 90.655845
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 301.081547 355.48304
|
||||
L 420.543401 264.690666
|
||||
L 426.757325 98.951066
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 344.375213 366.452305
|
||||
L 461.587089 274.085104
|
||||
L 470.011596 107.391216
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_1">
|
||||
<g id="line2d_2">
|
||||
<path d="M 136.440324 312.758477
|
||||
L 133.139482 314.954734
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_2">
|
||||
<g id="line2d_3">
|
||||
<path d="M 176.783114 322.971344
|
||||
L 173.529389 325.205819
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_3">
|
||||
<g id="line2d_4">
|
||||
<path d="M 217.830344 333.362542
|
||||
L 214.625895 335.636242
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_4">
|
||||
<g id="line2d_5">
|
||||
<path d="M 259.600627 343.936782
|
||||
L 256.447704 346.250748
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_5">
|
||||
<g id="line2d_6">
|
||||
<path d="M 302.113237 354.698943
|
||||
L 299.014189 357.054256
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_6">
|
||||
<g id="line2d_7">
|
||||
<path d="M 345.388141 365.654082
|
||||
L 342.345417 368.051858
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_2">
|
||||
<g id="line2d_8">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_2">
|
||||
<path d="M 124.83963 140.276819
|
||||
L 133.925947 310.61159
|
||||
L 351.454544 365.608914
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 152.329688 124.761085
|
||||
L 159.887815 293.39337
|
||||
L 375.283965 346.75806
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 178.985882 109.715994
|
||||
L 185.101569 276.671308
|
||||
L 398.395625 328.47501
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 204.845585 95.120453
|
||||
L 209.599088 260.424262
|
||||
L 420.82147 310.734489
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 229.94397 80.95461
|
||||
L 233.410462 244.632276
|
||||
L 442.591583 293.512702
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 254.31417 67.199763
|
||||
L 256.564121 229.276494
|
||||
L 463.734308 276.787226
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_7">
|
||||
<g id="line2d_9">
|
||||
<path d="M 349.633738 365.148563
|
||||
L 355.10024 366.530648
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_8">
|
||||
<g id="line2d_10">
|
||||
<path d="M 373.482228 346.311677
|
||||
L 378.891419 347.651812
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_9">
|
||||
<g id="line2d_11">
|
||||
<path d="M 396.612642 328.041968
|
||||
L 401.965468 329.342034
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_10">
|
||||
<g id="line2d_12">
|
||||
<path d="M 419.056931 310.3142
|
||||
L 424.35433 311.575967
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_11">
|
||||
<g id="line2d_13">
|
||||
<path d="M 440.845178 293.104611
|
||||
L 446.08808 294.329747
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_12">
|
||||
<g id="line2d_14">
|
||||
<path d="M 462.005733 276.390809
|
||||
L 467.195055 277.580886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_3">
|
||||
<g id="line2d_15">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_3">
|
||||
<path d="M 466.066381 271.900274
|
||||
L 258.89869 224.615172
|
||||
L 131.001569 309.196909
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 467.664368 241.119299
|
||||
L 258.505479 194.684584
|
||||
L 129.296686 277.771554
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 469.293643 209.735667
|
||||
L 258.104894 164.192771
|
||||
L 127.557309 245.710375
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 470.955131 177.731505
|
||||
L 257.696727 133.123797
|
||||
L 125.782379 212.993876
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 472.6498 145.088225
|
||||
L 257.28076 101.46112
|
||||
L 123.970796 179.601758
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 474.378652 111.786488
|
||||
L 256.856768 69.187556
|
||||
L 122.121412 145.512876
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_13">
|
||||
<g id="line2d_16">
|
||||
<path d="M 464.337863 271.505747
|
||||
L 469.527014 272.690148
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_14">
|
||||
<g id="line2d_17">
|
||||
<path d="M 465.91854 240.731713
|
||||
L 471.159693 241.895285
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_15">
|
||||
<g id="line2d_18">
|
||||
<path d="M 467.530154 209.35537
|
||||
L 472.82436 210.497067
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_16">
|
||||
<g id="line2d_19">
|
||||
<path d="M 469.173622 177.358863
|
||||
L 474.521965 178.477587
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_17">
|
||||
<g id="line2d_20">
|
||||
<path d="M 470.849899 144.72362
|
||||
L 476.253496 145.818222
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_18">
|
||||
<g id="line2d_21">
|
||||
<path d="M 472.559975 111.430323
|
||||
L 478.01998 112.499596
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axes_1">
|
||||
<g id="Poly3DCollection_1">
|
||||
<defs>
|
||||
<path d="M 258.530268 -360.58077
|
||||
L 467.563587 -319.561013
|
||||
L 459.573423 -159.376984
|
||||
" id="m1394a5d166" style="stroke:#000000;stroke-width:3;"/>
|
||||
</defs>
|
||||
<g clip-path="url(#p826a730be7)">
|
||||
<use style="fill:#ff8080;fill-opacity:0.5;stroke:#000000;stroke-width:3;" x="0" xlink:href="#m1394a5d166" y="432"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Poly3DCollection_2">
|
||||
<defs>
|
||||
<path d="M 129.404241 -287.184409
|
||||
L 258.530268 -360.58077
|
||||
L 137.917747 -123.572943
|
||||
z
|
||||
" id="m4d49e4906d" style="stroke:#000000;stroke-width:3;"/>
|
||||
</defs>
|
||||
<g clip-path="url(#p826a730be7)">
|
||||
<use style="fill:#8080ff;fill-opacity:0.5;stroke:#000000;stroke-width:3;" x="0" xlink:href="#m4d49e4906d" y="432"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="p826a730be7">
|
||||
<rect height="345.6" width="446.4" x="72" y="43.2"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 37 KiB |
@@ -0,0 +1,284 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="432pt" version="1.1" viewBox="0 0 576 432" width="576pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="M 0 432
|
||||
L 576 432
|
||||
L 576 0
|
||||
L 0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_2">
|
||||
<path d="M 72 388.8
|
||||
L 518.4 388.8
|
||||
L 518.4 43.2
|
||||
L 72 43.2
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="pane3d_1">
|
||||
<g id="patch_3">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 258.939234 227.701291
|
||||
L 256.812132 65.789882
|
||||
L 121.926546 141.921
|
||||
" style="fill:#f2f2f2;opacity:0.5;stroke:#f2f2f2;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_2">
|
||||
<g id="patch_4">
|
||||
<path d="M 258.939234 227.701291
|
||||
L 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
L 256.812132 65.789882
|
||||
" style="fill:#e6e6e6;opacity:0.5;stroke:#e6e6e6;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_3">
|
||||
<g id="patch_5">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
L 465.901687 275.072667
|
||||
L 258.939234 227.701291
|
||||
" style="fill:#ececec;opacity:0.5;stroke:#ececec;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_1">
|
||||
<g id="line2d_1">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_1">
|
||||
<path d="M 135.341407 313.489655
|
||||
L 262.91012 228.610182
|
||||
L 260.98105 66.603357
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 175.699895 323.715238
|
||||
L 301.368748 237.412929
|
||||
L 301.375668 74.485507
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 216.763541 334.119486
|
||||
L 340.45025 246.358245
|
||||
L 342.458008 82.50185
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 258.55099 344.707123
|
||||
L 380.169882 255.449622
|
||||
L 384.245785 90.655845
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 301.081547 355.48304
|
||||
L 420.543401 264.690666
|
||||
L 426.757325 98.951066
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 344.375213 366.452305
|
||||
L 461.587089 274.085104
|
||||
L 470.011596 107.391216
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_1">
|
||||
<g id="line2d_2">
|
||||
<path d="M 136.440324 312.758477
|
||||
L 133.139482 314.954734
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_2">
|
||||
<g id="line2d_3">
|
||||
<path d="M 176.783114 322.971344
|
||||
L 173.529389 325.205819
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_3">
|
||||
<g id="line2d_4">
|
||||
<path d="M 217.830344 333.362542
|
||||
L 214.625895 335.636242
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_4">
|
||||
<g id="line2d_5">
|
||||
<path d="M 259.600627 343.936782
|
||||
L 256.447704 346.250748
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_5">
|
||||
<g id="line2d_6">
|
||||
<path d="M 302.113237 354.698943
|
||||
L 299.014189 357.054256
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_6">
|
||||
<g id="line2d_7">
|
||||
<path d="M 345.388141 365.654082
|
||||
L 342.345417 368.051858
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_2">
|
||||
<g id="line2d_8">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_2">
|
||||
<path d="M 124.83963 140.276819
|
||||
L 133.925947 310.61159
|
||||
L 351.454544 365.608914
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 152.329688 124.761085
|
||||
L 159.887815 293.39337
|
||||
L 375.283965 346.75806
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 178.985882 109.715994
|
||||
L 185.101569 276.671308
|
||||
L 398.395625 328.47501
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 204.845585 95.120453
|
||||
L 209.599088 260.424262
|
||||
L 420.82147 310.734489
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 229.94397 80.95461
|
||||
L 233.410462 244.632276
|
||||
L 442.591583 293.512702
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 254.31417 67.199763
|
||||
L 256.564121 229.276494
|
||||
L 463.734308 276.787226
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_7">
|
||||
<g id="line2d_9">
|
||||
<path d="M 349.633738 365.148563
|
||||
L 355.10024 366.530648
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_8">
|
||||
<g id="line2d_10">
|
||||
<path d="M 373.482228 346.311677
|
||||
L 378.891419 347.651812
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_9">
|
||||
<g id="line2d_11">
|
||||
<path d="M 396.612642 328.041968
|
||||
L 401.965468 329.342034
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_10">
|
||||
<g id="line2d_12">
|
||||
<path d="M 419.056931 310.3142
|
||||
L 424.35433 311.575967
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_11">
|
||||
<g id="line2d_13">
|
||||
<path d="M 440.845178 293.104611
|
||||
L 446.08808 294.329747
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_12">
|
||||
<g id="line2d_14">
|
||||
<path d="M 462.005733 276.390809
|
||||
L 467.195055 277.580886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_3">
|
||||
<g id="line2d_15">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_3">
|
||||
<path d="M 466.066381 271.900274
|
||||
L 258.89869 224.615172
|
||||
L 131.001569 309.196909
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 467.664368 241.119299
|
||||
L 258.505479 194.684584
|
||||
L 129.296686 277.771554
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 469.293643 209.735667
|
||||
L 258.104894 164.192771
|
||||
L 127.557309 245.710375
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 470.955131 177.731505
|
||||
L 257.696727 133.123797
|
||||
L 125.782379 212.993876
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 472.6498 145.088225
|
||||
L 257.28076 101.46112
|
||||
L 123.970796 179.601758
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 474.378652 111.786488
|
||||
L 256.856768 69.187556
|
||||
L 122.121412 145.512876
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_13">
|
||||
<g id="line2d_16">
|
||||
<path d="M 464.337863 271.505747
|
||||
L 469.527014 272.690148
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_14">
|
||||
<g id="line2d_17">
|
||||
<path d="M 465.91854 240.731713
|
||||
L 471.159693 241.895285
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_15">
|
||||
<g id="line2d_18">
|
||||
<path d="M 467.530154 209.35537
|
||||
L 472.82436 210.497067
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_16">
|
||||
<g id="line2d_19">
|
||||
<path d="M 469.173622 177.358863
|
||||
L 474.521965 178.477587
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_17">
|
||||
<g id="line2d_20">
|
||||
<path d="M 470.849899 144.72362
|
||||
L 476.253496 145.818222
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_18">
|
||||
<g id="line2d_21">
|
||||
<path d="M 472.559975 111.430323
|
||||
L 478.01998 112.499596
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axes_1">
|
||||
<g id="Line3DCollection_4"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 42 KiB |
@@ -0,0 +1,385 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="432pt" version="1.1" viewBox="0 0 576 432" width="576pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="M 0 432
|
||||
L 576 432
|
||||
L 576 0
|
||||
L 0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_2">
|
||||
<path d="M 72 388.8
|
||||
L 518.4 388.8
|
||||
L 518.4 43.2
|
||||
L 72 43.2
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="pane3d_1">
|
||||
<g id="patch_3">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 258.939234 227.701291
|
||||
L 256.812132 65.789882
|
||||
L 121.926546 141.921
|
||||
" style="fill:#f2f2f2;opacity:0.5;stroke:#f2f2f2;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_2">
|
||||
<g id="patch_4">
|
||||
<path d="M 258.939234 227.701291
|
||||
L 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
L 256.812132 65.789882
|
||||
" style="fill:#e6e6e6;opacity:0.5;stroke:#e6e6e6;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="pane3d_3">
|
||||
<g id="patch_5">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
L 465.901687 275.072667
|
||||
L 258.939234 227.701291
|
||||
" style="fill:#ececec;opacity:0.5;stroke:#ececec;stroke-linejoin:miter;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_1">
|
||||
<g id="line2d_1">
|
||||
<path d="M 131.177218 312.43458
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_1">
|
||||
<path d="M 135.341407 313.489655
|
||||
L 262.91012 228.610182
|
||||
L 260.98105 66.603357
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 175.699895 323.715238
|
||||
L 301.368748 237.412929
|
||||
L 301.375668 74.485507
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 216.763541 334.119486
|
||||
L 340.45025 246.358245
|
||||
L 342.458008 82.50185
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 258.55099 344.707123
|
||||
L 380.169882 255.449622
|
||||
L 384.245785 90.655845
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 301.081547 355.48304
|
||||
L 420.543401 264.690666
|
||||
L 426.757325 98.951066
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 344.375213 366.452305
|
||||
L 461.587089 274.085104
|
||||
L 470.011596 107.391216
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_1">
|
||||
<g id="line2d_2">
|
||||
<path d="M 136.440324 312.758477
|
||||
L 133.139482 314.954734
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_2">
|
||||
<g id="line2d_3">
|
||||
<path d="M 176.783114 322.971344
|
||||
L 173.529389 325.205819
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_3">
|
||||
<g id="line2d_4">
|
||||
<path d="M 217.830344 333.362542
|
||||
L 214.625895 335.636242
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_4">
|
||||
<g id="line2d_5">
|
||||
<path d="M 259.600627 343.936782
|
||||
L 256.447704 346.250748
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_5">
|
||||
<g id="line2d_6">
|
||||
<path d="M 302.113237 354.698943
|
||||
L 299.014189 357.054256
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_6">
|
||||
<g id="line2d_7">
|
||||
<path d="M 345.388141 365.654082
|
||||
L 342.345417 368.051858
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_2">
|
||||
<g id="line2d_8">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 348.929684 367.606266
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_2">
|
||||
<path d="M 124.83963 140.276819
|
||||
L 133.925947 310.61159
|
||||
L 351.454544 365.608914
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 152.329688 124.761085
|
||||
L 159.887815 293.39337
|
||||
L 375.283965 346.75806
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 178.985882 109.715994
|
||||
L 185.101569 276.671308
|
||||
L 398.395625 328.47501
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 204.845585 95.120453
|
||||
L 209.599088 260.424262
|
||||
L 420.82147 310.734489
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 229.94397 80.95461
|
||||
L 233.410462 244.632276
|
||||
L 442.591583 293.512702
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 254.31417 67.199763
|
||||
L 256.564121 229.276494
|
||||
L 463.734308 276.787226
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_7">
|
||||
<g id="line2d_9">
|
||||
<path d="M 349.633738 365.148563
|
||||
L 355.10024 366.530648
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_8">
|
||||
<g id="line2d_10">
|
||||
<path d="M 373.482228 346.311677
|
||||
L 378.891419 347.651812
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_9">
|
||||
<g id="line2d_11">
|
||||
<path d="M 396.612642 328.041968
|
||||
L 401.965468 329.342034
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_10">
|
||||
<g id="line2d_12">
|
||||
<path d="M 419.056931 310.3142
|
||||
L 424.35433 311.575967
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_11">
|
||||
<g id="line2d_13">
|
||||
<path d="M 440.845178 293.104611
|
||||
L 446.08808 294.329747
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_12">
|
||||
<g id="line2d_14">
|
||||
<path d="M 462.005733 276.390809
|
||||
L 467.195055 277.580886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axis3d_3">
|
||||
<g id="line2d_15">
|
||||
<path d="M 465.901687 275.072667
|
||||
L 474.560748 108.278886
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-width:0.75;"/>
|
||||
</g>
|
||||
<g id="Line3DCollection_3">
|
||||
<path d="M 466.066381 271.900274
|
||||
L 258.89869 224.615172
|
||||
L 131.001569 309.196909
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 467.664368 241.119299
|
||||
L 258.505479 194.684584
|
||||
L 129.296686 277.771554
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 469.293643 209.735667
|
||||
L 258.104894 164.192771
|
||||
L 127.557309 245.710375
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 470.955131 177.731505
|
||||
L 257.696727 133.123797
|
||||
L 125.782379 212.993876
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 472.6498 145.088225
|
||||
L 257.28076 101.46112
|
||||
L 123.970796 179.601758
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
<path d="M 474.378652 111.786488
|
||||
L 256.856768 69.187556
|
||||
L 122.121412 145.512876
|
||||
" style="fill:none;stroke:#e6e6e6;"/>
|
||||
</g>
|
||||
<g id="xtick_13">
|
||||
<g id="line2d_16">
|
||||
<path d="M 464.337863 271.505747
|
||||
L 469.527014 272.690148
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_14">
|
||||
<g id="line2d_17">
|
||||
<path d="M 465.91854 240.731713
|
||||
L 471.159693 241.895285
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_15">
|
||||
<g id="line2d_18">
|
||||
<path d="M 467.530154 209.35537
|
||||
L 472.82436 210.497067
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_16">
|
||||
<g id="line2d_19">
|
||||
<path d="M 469.173622 177.358863
|
||||
L 474.521965 178.477587
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_17">
|
||||
<g id="line2d_20">
|
||||
<path d="M 470.849899 144.72362
|
||||
L 476.253496 145.818222
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="xtick_18">
|
||||
<g id="line2d_21">
|
||||
<path d="M 472.559975 111.430323
|
||||
L 478.01998 112.499596
|
||||
" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="axes_1">
|
||||
<g id="Path3DCollection_1">
|
||||
<defs>
|
||||
<path d="M 0 2.236068
|
||||
C 0.593012 2.236068 1.161816 2.000462 1.581139 1.581139
|
||||
C 2.000462 1.161816 2.236068 0.593012 2.236068 0
|
||||
C 2.236068 -0.593012 2.000462 -1.161816 1.581139 -1.581139
|
||||
C 1.161816 -2.000462 0.593012 -2.236068 0 -2.236068
|
||||
C -0.593012 -2.236068 -1.161816 -2.000462 -1.581139 -1.581139
|
||||
C -2.000462 -1.161816 -2.236068 -0.593012 -2.236068 0
|
||||
C -2.236068 0.593012 -2.000462 1.161816 -1.581139 1.581139
|
||||
C -1.161816 2.000462 -0.593012 2.236068 0 2.236068
|
||||
z
|
||||
" id="C0_0_83d296332c"/>
|
||||
</defs>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;fill-opacity:0.3;stroke:#000000;stroke-opacity:0.3;" x="202.886915404" xlink:href="#C0_0_83d296332c" y="269.800202283"/>
|
||||
</g>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;fill-opacity:0.377324436644;stroke:#000000;stroke-opacity:0.377324436644;" x="215.93755177" xlink:href="#C0_0_83d296332c" y="262.041059838"/>
|
||||
</g>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;fill-opacity:0.454761630131;stroke:#000000;stroke-opacity:0.454761630131;" x="229.007218971" xlink:href="#C0_0_83d296332c" y="254.270602776"/>
|
||||
</g>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;fill-opacity:0.532311827277;stroke:#000000;stroke-opacity:0.532311827277;" x="242.095958663" xlink:href="#C0_0_83d296332c" y="246.48880633"/>
|
||||
</g>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;fill-opacity:0.609975275623;stroke:#000000;stroke-opacity:0.609975275623;" x="255.203812625" xlink:href="#C0_0_83d296332c" y="238.69564566"/>
|
||||
</g>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;fill-opacity:0.68775222343;stroke:#000000;stroke-opacity:0.68775222343;" x="268.33082276" xlink:href="#C0_0_83d296332c" y="230.891095854"/>
|
||||
</g>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;fill-opacity:0.765642919688;stroke:#000000;stroke-opacity:0.765642919688;" x="281.47703109" xlink:href="#C0_0_83d296332c" y="223.075131929"/>
|
||||
</g>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;fill-opacity:0.843647614114;stroke:#000000;stroke-opacity:0.843647614114;" x="294.642479763" xlink:href="#C0_0_83d296332c" y="215.247728824"/>
|
||||
</g>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;fill-opacity:0.921766557157;stroke:#000000;stroke-opacity:0.921766557157;" x="307.827211048" xlink:href="#C0_0_83d296332c" y="207.40886141"/>
|
||||
</g>
|
||||
<g clip-path="url(#p9fde8b4859)">
|
||||
<use style="fill:#ff0000;stroke:#000000;" x="321.03126734" xlink:href="#C0_0_83d296332c" y="199.558504482"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Path3DCollection_2">
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 334.254691 189.460565
|
||||
L 332.018623 193.932701
|
||||
L 336.490759 193.932701
|
||||
z
|
||||
" style="fill:#0000ff;fill-opacity:0.3;stroke:#000000;stroke-opacity:0.3;"/>
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 347.497525 181.587153
|
||||
L 345.261457 186.059289
|
||||
L 349.733593 186.059289
|
||||
z
|
||||
" style="fill:#0000ff;fill-opacity:0.377321109432;stroke:#000000;stroke-opacity:0.377321109432;"/>
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 360.759812 173.702175
|
||||
L 358.523744 178.174311
|
||||
L 362.99588 178.174311
|
||||
z
|
||||
" style="fill:#0000ff;fill-opacity:0.454755798984;stroke:#000000;stroke-opacity:0.454755798984;"/>
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 374.041595 165.805607
|
||||
L 371.805527 170.277743
|
||||
L 376.277663 170.277743
|
||||
z
|
||||
" style="fill:#0000ff;fill-opacity:0.532304319104;stroke:#000000;stroke-opacity:0.532304319104;"/>
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 387.342916 157.897422
|
||||
L 385.106848 162.369558
|
||||
L 389.578984 162.369558
|
||||
z
|
||||
" style="fill:#0000ff;fill-opacity:0.609966920976;stroke:#000000;stroke-opacity:0.609966920976;"/>
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 400.66382 149.977594
|
||||
L 398.427752 154.44973
|
||||
L 402.899888 154.44973
|
||||
z
|
||||
" style="fill:#0000ff;fill-opacity:0.687743856524;stroke:#000000;stroke-opacity:0.687743856524;"/>
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 414.004349 142.046099
|
||||
L 411.768281 146.518235
|
||||
L 416.240417 146.518235
|
||||
z
|
||||
" style="fill:#0000ff;fill-opacity:0.765635378415;stroke:#000000;stroke-opacity:0.765635378415;"/>
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 427.364546 134.102909
|
||||
L 425.128478 138.575045
|
||||
L 429.600614 138.575045
|
||||
z
|
||||
" style="fill:#0000ff;fill-opacity:0.84364174006;stroke:#000000;stroke-opacity:0.84364174006;"/>
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 440.744456 126.148
|
||||
L 438.508388 130.620136
|
||||
L 442.980524 130.620136
|
||||
z
|
||||
" style="fill:#0000ff;fill-opacity:0.921763195619;stroke:#000000;stroke-opacity:0.921763195619;"/>
|
||||
<path clip-path="url(#p9fde8b4859)" d="M 454.144122 118.181346
|
||||
L 451.908054 122.653482
|
||||
L 456.38019 122.653482
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#000000;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="p9fde8b4859">
|
||||
<rect height="345.6" width="446.4" x="72.0" y="43.2"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 264 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 175 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 133 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 82 KiB |
@@ -0,0 +1,3 @@
|
||||
from matplotlib.testing.conftest import (mpl_test_settings,
|
||||
mpl_image_comparison_parameters,
|
||||
pytest_configure, pytest_unconfigure)
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
from matplotlib.testing.decorators import image_comparison
|
||||
from mpl_toolkits.axes_grid1 import ImageGrid
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['imagegrid_cbar_mode'],
|
||||
extensions=['png'],
|
||||
remove_text=True,
|
||||
style='mpl20')
|
||||
def test_imagegrid_cbar_mode_edge():
|
||||
X, Y = np.meshgrid(np.linspace(0, 6, 30), np.linspace(0, 6, 30))
|
||||
arr = np.sin(X) * np.cos(Y) + 1j*(np.sin(3*Y) * np.cos(Y/2.))
|
||||
|
||||
fig = plt.figure(figsize=(18, 9))
|
||||
|
||||
positions = (241, 242, 243, 244, 245, 246, 247, 248)
|
||||
directions = ['row']*4 + ['column']*4
|
||||
cbar_locations = ['left', 'right', 'top', 'bottom']*2
|
||||
|
||||
for position, direction, location in zip(positions,
|
||||
directions,
|
||||
cbar_locations):
|
||||
grid = ImageGrid(fig, position,
|
||||
nrows_ncols=(2, 2),
|
||||
direction=direction,
|
||||
cbar_location=location,
|
||||
cbar_size='20%',
|
||||
cbar_mode='edge')
|
||||
ax1, ax2, ax3, ax4, = grid
|
||||
|
||||
im1 = ax1.imshow(arr.real, cmap='nipy_spectral')
|
||||
im2 = ax2.imshow(arr.imag, cmap='hot')
|
||||
im3 = ax3.imshow(np.abs(arr), cmap='jet')
|
||||
im4 = ax4.imshow(np.arctan2(arr.imag, arr.real), cmap='hsv')
|
||||
|
||||
# Some of these colorbars will be overridden by later ones,
|
||||
# depending on the direction and cbar_location
|
||||
ax1.cax.colorbar(im1)
|
||||
ax2.cax.colorbar(im2)
|
||||
ax3.cax.colorbar(im3)
|
||||
ax4.cax.colorbar(im4)
|
||||
@@ -0,0 +1,424 @@
|
||||
import matplotlib
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.testing.decorators import image_comparison
|
||||
|
||||
from mpl_toolkits.axes_grid1 import host_subplot
|
||||
from mpl_toolkits.axes_grid1 import make_axes_locatable
|
||||
from mpl_toolkits.axes_grid1 import AxesGrid
|
||||
from mpl_toolkits.axes_grid1 import ImageGrid
|
||||
from mpl_toolkits.axes_grid1.inset_locator import (
|
||||
zoomed_inset_axes,
|
||||
mark_inset,
|
||||
inset_axes,
|
||||
BboxConnectorPatch
|
||||
)
|
||||
from mpl_toolkits.axes_grid1.anchored_artists import (
|
||||
AnchoredSizeBar,
|
||||
AnchoredDirectionArrows)
|
||||
|
||||
from matplotlib.colors import LogNorm
|
||||
from matplotlib.transforms import Bbox, TransformedBbox, \
|
||||
blended_transform_factory
|
||||
from itertools import product
|
||||
|
||||
import pytest
|
||||
import platform
|
||||
|
||||
import numpy as np
|
||||
from numpy.testing import assert_array_equal, assert_array_almost_equal
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['divider_append_axes'])
|
||||
def test_divider_append_axes():
|
||||
|
||||
# the random data
|
||||
np.random.seed(0)
|
||||
x = np.random.randn(1000)
|
||||
y = np.random.randn(1000)
|
||||
|
||||
fig, axScatter = plt.subplots()
|
||||
|
||||
# the scatter plot:
|
||||
axScatter.scatter(x, y)
|
||||
|
||||
# create new axes on the right and on the top of the current axes
|
||||
# The first argument of the new_vertical(new_horizontal) method is
|
||||
# the height (width) of the axes to be created in inches.
|
||||
divider = make_axes_locatable(axScatter)
|
||||
axHistbot = divider.append_axes("bottom", 1.2, pad=0.1, sharex=axScatter)
|
||||
axHistright = divider.append_axes("right", 1.2, pad=0.1, sharey=axScatter)
|
||||
axHistleft = divider.append_axes("left", 1.2, pad=0.1, sharey=axScatter)
|
||||
axHisttop = divider.append_axes("top", 1.2, pad=0.1, sharex=axScatter)
|
||||
|
||||
# now determine nice limits by hand:
|
||||
binwidth = 0.25
|
||||
xymax = max(np.max(np.abs(x)), np.max(np.abs(y)))
|
||||
lim = (int(xymax/binwidth) + 1) * binwidth
|
||||
|
||||
bins = np.arange(-lim, lim + binwidth, binwidth)
|
||||
axHisttop.hist(x, bins=bins)
|
||||
axHistbot.hist(x, bins=bins)
|
||||
axHistleft.hist(y, bins=bins, orientation='horizontal')
|
||||
axHistright.hist(y, bins=bins, orientation='horizontal')
|
||||
|
||||
axHistbot.invert_yaxis()
|
||||
axHistleft.invert_xaxis()
|
||||
|
||||
axHisttop.xaxis.set_ticklabels(())
|
||||
axHistbot.xaxis.set_ticklabels(())
|
||||
axHistleft.yaxis.set_ticklabels(())
|
||||
axHistright.yaxis.set_ticklabels(())
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['twin_axes_empty_and_removed'],
|
||||
extensions=["png"], tol=1)
|
||||
def test_twin_axes_empty_and_removed():
|
||||
# Purely cosmetic font changes (avoid overlap)
|
||||
matplotlib.rcParams.update({"font.size": 8})
|
||||
matplotlib.rcParams.update({"xtick.labelsize": 8})
|
||||
matplotlib.rcParams.update({"ytick.labelsize": 8})
|
||||
generators = [ "twinx", "twiny", "twin" ]
|
||||
modifiers = [ "", "host invisible", "twin removed", "twin invisible",
|
||||
"twin removed\nhost invisible" ]
|
||||
# Unmodified host subplot at the beginning for reference
|
||||
h = host_subplot(len(modifiers)+1, len(generators), 2)
|
||||
h.text(0.5, 0.5, "host_subplot", horizontalalignment="center",
|
||||
verticalalignment="center")
|
||||
# Host subplots with various modifications (twin*, visibility) applied
|
||||
for i, (mod, gen) in enumerate(product(modifiers, generators),
|
||||
len(generators)+1):
|
||||
h = host_subplot(len(modifiers)+1, len(generators), i)
|
||||
t = getattr(h, gen)()
|
||||
if "twin invisible" in mod:
|
||||
t.axis[:].set_visible(False)
|
||||
if "twin removed" in mod:
|
||||
t.remove()
|
||||
if "host invisible" in mod:
|
||||
h.axis[:].set_visible(False)
|
||||
h.text(0.5, 0.5, gen + ("\n" + mod if mod else ""),
|
||||
horizontalalignment="center", verticalalignment="center")
|
||||
plt.subplots_adjust(wspace=0.5, hspace=1)
|
||||
|
||||
|
||||
def test_axesgrid_colorbar_log_smoketest():
|
||||
fig = plt.figure()
|
||||
grid = AxesGrid(fig, 111, # modified to be only subplot
|
||||
nrows_ncols=(1, 1),
|
||||
label_mode="L",
|
||||
cbar_location="top",
|
||||
cbar_mode="single",
|
||||
)
|
||||
|
||||
Z = 10000 * np.random.rand(10, 10)
|
||||
im = grid[0].imshow(Z, interpolation="nearest", norm=LogNorm())
|
||||
|
||||
grid.cbar_axes[0].colorbar(im)
|
||||
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['inset_locator'], style='default', extensions=['png'],
|
||||
remove_text=True)
|
||||
def test_inset_locator():
|
||||
def get_demo_image():
|
||||
from matplotlib.cbook import get_sample_data
|
||||
import numpy as np
|
||||
f = get_sample_data("axes_grid/bivariate_normal.npy", asfileobj=False)
|
||||
z = np.load(f)
|
||||
# z is a numpy array of 15x15
|
||||
return z, (-3, 4, -4, 3)
|
||||
|
||||
fig, ax = plt.subplots(figsize=[5, 4])
|
||||
|
||||
# prepare the demo image
|
||||
Z, extent = get_demo_image()
|
||||
Z2 = np.zeros([150, 150], dtype="d")
|
||||
ny, nx = Z.shape
|
||||
Z2[30:30 + ny, 30:30 + nx] = Z
|
||||
|
||||
# extent = [-3, 4, -4, 3]
|
||||
ax.imshow(Z2, extent=extent, interpolation="nearest",
|
||||
origin="lower")
|
||||
|
||||
axins = zoomed_inset_axes(ax, zoom=6, loc='upper right')
|
||||
axins.imshow(Z2, extent=extent, interpolation="nearest",
|
||||
origin="lower")
|
||||
axins.yaxis.get_major_locator().set_params(nbins=7)
|
||||
axins.xaxis.get_major_locator().set_params(nbins=7)
|
||||
# sub region of the original image
|
||||
x1, x2, y1, y2 = -1.5, -0.9, -2.5, -1.9
|
||||
axins.set_xlim(x1, x2)
|
||||
axins.set_ylim(y1, y2)
|
||||
|
||||
plt.xticks(visible=False)
|
||||
plt.yticks(visible=False)
|
||||
|
||||
# draw a bbox of the region of the inset axes in the parent axes and
|
||||
# connecting lines between the bbox and the inset axes area
|
||||
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")
|
||||
|
||||
asb = AnchoredSizeBar(ax.transData,
|
||||
0.5,
|
||||
'0.5',
|
||||
loc='lower center',
|
||||
pad=0.1, borderpad=0.5, sep=5,
|
||||
frameon=False)
|
||||
ax.add_artist(asb)
|
||||
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['inset_axes'], style='default', extensions=['png'],
|
||||
remove_text=True)
|
||||
def test_inset_axes():
|
||||
def get_demo_image():
|
||||
from matplotlib.cbook import get_sample_data
|
||||
import numpy as np
|
||||
f = get_sample_data("axes_grid/bivariate_normal.npy", asfileobj=False)
|
||||
z = np.load(f)
|
||||
# z is a numpy array of 15x15
|
||||
return z, (-3, 4, -4, 3)
|
||||
|
||||
fig, ax = plt.subplots(figsize=[5, 4])
|
||||
|
||||
# prepare the demo image
|
||||
Z, extent = get_demo_image()
|
||||
Z2 = np.zeros([150, 150], dtype="d")
|
||||
ny, nx = Z.shape
|
||||
Z2[30:30 + ny, 30:30 + nx] = Z
|
||||
|
||||
# extent = [-3, 4, -4, 3]
|
||||
ax.imshow(Z2, extent=extent, interpolation="nearest",
|
||||
origin="lower")
|
||||
|
||||
# creating our inset axes with a bbox_transform parameter
|
||||
axins = inset_axes(ax, width=1., height=1., bbox_to_anchor=(1, 1),
|
||||
bbox_transform=ax.transAxes)
|
||||
|
||||
axins.imshow(Z2, extent=extent, interpolation="nearest",
|
||||
origin="lower")
|
||||
axins.yaxis.get_major_locator().set_params(nbins=7)
|
||||
axins.xaxis.get_major_locator().set_params(nbins=7)
|
||||
# sub region of the original image
|
||||
x1, x2, y1, y2 = -1.5, -0.9, -2.5, -1.9
|
||||
axins.set_xlim(x1, x2)
|
||||
axins.set_ylim(y1, y2)
|
||||
|
||||
plt.xticks(visible=False)
|
||||
plt.yticks(visible=False)
|
||||
|
||||
# draw a bbox of the region of the inset axes in the parent axes and
|
||||
# connecting lines between the bbox and the inset axes area
|
||||
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")
|
||||
|
||||
asb = AnchoredSizeBar(ax.transData,
|
||||
0.5,
|
||||
'0.5',
|
||||
loc='lower center',
|
||||
pad=0.1, borderpad=0.5, sep=5,
|
||||
frameon=False)
|
||||
ax.add_artist(asb)
|
||||
|
||||
|
||||
def test_inset_axes_complete():
|
||||
dpi = 100
|
||||
figsize = (6, 5)
|
||||
fig, ax = plt.subplots(figsize=figsize, dpi=dpi)
|
||||
fig.subplots_adjust(.1, .1, .9, .9)
|
||||
|
||||
ins = inset_axes(ax, width=2., height=2., borderpad=0)
|
||||
fig.canvas.draw()
|
||||
assert_array_almost_equal(
|
||||
ins.get_position().extents,
|
||||
np.array(((0.9*figsize[0]-2.)/figsize[0],
|
||||
(0.9*figsize[1]-2.)/figsize[1], 0.9, 0.9)))
|
||||
|
||||
ins = inset_axes(ax, width="40%", height="30%", borderpad=0)
|
||||
fig.canvas.draw()
|
||||
assert_array_almost_equal(
|
||||
ins.get_position().extents,
|
||||
np.array((.9-.8*.4, .9-.8*.3, 0.9, 0.9)))
|
||||
|
||||
ins = inset_axes(ax, width=1., height=1.2, bbox_to_anchor=(200, 100),
|
||||
loc=3, borderpad=0)
|
||||
fig.canvas.draw()
|
||||
assert_array_almost_equal(
|
||||
ins.get_position().extents,
|
||||
np.array((200./dpi/figsize[0], 100./dpi/figsize[1],
|
||||
(200./dpi+1)/figsize[0], (100./dpi+1.2)/figsize[1])))
|
||||
|
||||
ins1 = inset_axes(ax, width="35%", height="60%", loc=3, borderpad=1)
|
||||
ins2 = inset_axes(ax, width="100%", height="100%",
|
||||
bbox_to_anchor=(0, 0, .35, .60),
|
||||
bbox_transform=ax.transAxes, loc=3, borderpad=1)
|
||||
fig.canvas.draw()
|
||||
assert_array_equal(ins1.get_position().extents,
|
||||
ins2.get_position().extents)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
ins = inset_axes(ax, width="40%", height="30%",
|
||||
bbox_to_anchor=(0.4, 0.5))
|
||||
|
||||
with pytest.warns(UserWarning):
|
||||
ins = inset_axes(ax, width="40%", height="30%",
|
||||
bbox_transform=ax.transAxes)
|
||||
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['fill_facecolor'], extensions=['png'],
|
||||
remove_text=True, style='mpl20')
|
||||
def test_fill_facecolor():
|
||||
fig, ax = plt.subplots(1, 5)
|
||||
fig.set_size_inches(5, 5)
|
||||
for i in range(1, 4):
|
||||
ax[i].yaxis.set_visible(False)
|
||||
ax[4].yaxis.tick_right()
|
||||
bbox = Bbox.from_extents(0, 0.4, 1, 0.6)
|
||||
|
||||
# fill with blue by setting 'fc' field
|
||||
bbox1 = TransformedBbox(bbox, ax[0].transData)
|
||||
bbox2 = TransformedBbox(bbox, ax[1].transData)
|
||||
# set color to BboxConnectorPatch
|
||||
p = BboxConnectorPatch(
|
||||
bbox1, bbox2, loc1a=1, loc2a=2, loc1b=4, loc2b=3,
|
||||
ec="r", fc="b")
|
||||
p.set_clip_on(False)
|
||||
ax[0].add_patch(p)
|
||||
# set color to marked area
|
||||
axins = zoomed_inset_axes(ax[0], 1, loc='upper right')
|
||||
axins.set_xlim(0, 0.2)
|
||||
axins.set_ylim(0, 0.2)
|
||||
plt.gca().axes.get_xaxis().set_ticks([])
|
||||
plt.gca().axes.get_yaxis().set_ticks([])
|
||||
mark_inset(ax[0], axins, loc1=2, loc2=4, fc="b", ec="0.5")
|
||||
|
||||
# fill with yellow by setting 'facecolor' field
|
||||
bbox3 = TransformedBbox(bbox, ax[1].transData)
|
||||
bbox4 = TransformedBbox(bbox, ax[2].transData)
|
||||
# set color to BboxConnectorPatch
|
||||
p = BboxConnectorPatch(
|
||||
bbox3, bbox4, loc1a=1, loc2a=2, loc1b=4, loc2b=3,
|
||||
ec="r", facecolor="y")
|
||||
p.set_clip_on(False)
|
||||
ax[1].add_patch(p)
|
||||
# set color to marked area
|
||||
axins = zoomed_inset_axes(ax[1], 1, loc='upper right')
|
||||
axins.set_xlim(0, 0.2)
|
||||
axins.set_ylim(0, 0.2)
|
||||
plt.gca().axes.get_xaxis().set_ticks([])
|
||||
plt.gca().axes.get_yaxis().set_ticks([])
|
||||
mark_inset(ax[1], axins, loc1=2, loc2=4, facecolor="y", ec="0.5")
|
||||
|
||||
# fill with green by setting 'color' field
|
||||
bbox5 = TransformedBbox(bbox, ax[2].transData)
|
||||
bbox6 = TransformedBbox(bbox, ax[3].transData)
|
||||
# set color to BboxConnectorPatch
|
||||
p = BboxConnectorPatch(
|
||||
bbox5, bbox6, loc1a=1, loc2a=2, loc1b=4, loc2b=3,
|
||||
ec="r", color="g")
|
||||
p.set_clip_on(False)
|
||||
ax[2].add_patch(p)
|
||||
# set color to marked area
|
||||
axins = zoomed_inset_axes(ax[2], 1, loc='upper right')
|
||||
axins.set_xlim(0, 0.2)
|
||||
axins.set_ylim(0, 0.2)
|
||||
plt.gca().axes.get_xaxis().set_ticks([])
|
||||
plt.gca().axes.get_yaxis().set_ticks([])
|
||||
mark_inset(ax[2], axins, loc1=2, loc2=4, color="g", ec="0.5")
|
||||
|
||||
# fill with green but color won't show if set fill to False
|
||||
bbox7 = TransformedBbox(bbox, ax[3].transData)
|
||||
bbox8 = TransformedBbox(bbox, ax[4].transData)
|
||||
# BboxConnectorPatch won't show green
|
||||
p = BboxConnectorPatch(
|
||||
bbox7, bbox8, loc1a=1, loc2a=2, loc1b=4, loc2b=3,
|
||||
ec="r", fc="g", fill=False)
|
||||
p.set_clip_on(False)
|
||||
ax[3].add_patch(p)
|
||||
# marked area won't show green
|
||||
axins = zoomed_inset_axes(ax[3], 1, loc='upper right')
|
||||
axins.set_xlim(0, 0.2)
|
||||
axins.set_ylim(0, 0.2)
|
||||
axins.get_xaxis().set_ticks([])
|
||||
axins.get_yaxis().set_ticks([])
|
||||
mark_inset(ax[3], axins, loc1=2, loc2=4, fc="g", ec="0.5", fill=False)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['zoomed_axes',
|
||||
'inverted_zoomed_axes'],
|
||||
extensions=['png'])
|
||||
def test_zooming_with_inverted_axes():
|
||||
fig, ax = plt.subplots()
|
||||
ax.plot([1, 2, 3], [1, 2, 3])
|
||||
ax.axis([1, 3, 1, 3])
|
||||
inset_ax = zoomed_inset_axes(ax, zoom=2.5, loc='lower right')
|
||||
inset_ax.axis([1.1, 1.4, 1.1, 1.4])
|
||||
|
||||
fig, ax = plt.subplots()
|
||||
ax.plot([1, 2, 3], [1, 2, 3])
|
||||
ax.axis([3, 1, 3, 1])
|
||||
inset_ax = zoomed_inset_axes(ax, zoom=2.5, loc='lower right')
|
||||
inset_ax.axis([1.4, 1.1, 1.4, 1.1])
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['anchored_direction_arrows'],
|
||||
tol={'aarch64': 0.02}.get(platform.machine(), 0.0),
|
||||
extensions=['png'])
|
||||
def test_anchored_direction_arrows():
|
||||
fig, ax = plt.subplots()
|
||||
ax.imshow(np.zeros((10, 10)))
|
||||
|
||||
simple_arrow = AnchoredDirectionArrows(ax.transAxes, 'X', 'Y')
|
||||
ax.add_artist(simple_arrow)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['anchored_direction_arrows_many_args'],
|
||||
extensions=['png'])
|
||||
def test_anchored_direction_arrows_many_args():
|
||||
fig, ax = plt.subplots()
|
||||
ax.imshow(np.ones((10, 10)))
|
||||
|
||||
direction_arrows = AnchoredDirectionArrows(
|
||||
ax.transAxes, 'A', 'B', loc='upper right', color='red',
|
||||
aspect_ratio=-0.5, pad=0.6, borderpad=2, frameon=True, alpha=0.7,
|
||||
sep_x=-0.06, sep_y=-0.08, back_length=0.1, head_width=9,
|
||||
head_length=10, tail_width=5)
|
||||
ax.add_artist(direction_arrows)
|
||||
|
||||
|
||||
def test_axes_locatable_position():
|
||||
fig, ax = plt.subplots()
|
||||
divider = make_axes_locatable(ax)
|
||||
cax = divider.append_axes('right', size='5%', pad='2%')
|
||||
fig.canvas.draw()
|
||||
assert np.isclose(cax.get_position(original=False).width,
|
||||
0.03621495327102808)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['image_grid'], extensions=['png'],
|
||||
remove_text=True, style='mpl20',
|
||||
savefig_kwarg={'bbox_inches': 'tight'})
|
||||
def test_image_grid():
|
||||
# test that image grid works with bbox_inches=tight.
|
||||
im = np.arange(100)
|
||||
im.shape = 10, 10
|
||||
|
||||
fig = plt.figure(1, (4., 4.))
|
||||
grid = ImageGrid(fig, 111, nrows_ncols=(2, 2), axes_pad=0.1)
|
||||
|
||||
for i in range(4):
|
||||
grid[i].imshow(im)
|
||||
grid[i].set_title('test {0}{0}'.format(i))
|
||||
|
||||
|
||||
def test_gettightbbox():
|
||||
|
||||
fig, ax = plt.subplots(figsize=(8, 6))
|
||||
|
||||
l, = ax.plot([1, 2, 3], [0, 1, 0])
|
||||
|
||||
ax_zoom = zoomed_inset_axes(ax, 4)
|
||||
ax_zoom.plot([1, 2, 3], [0, 1, 0])
|
||||
|
||||
mark_inset(ax, ax_zoom, loc1=1, loc2=3, fc="none", ec='0.3')
|
||||
bbox = fig.get_tightbbox(fig.canvas.get_renderer())
|
||||
np.testing.assert_array_almost_equal(bbox.extents,
|
||||
[-18.022743, -14.118056, 7.332813, 5.4625])
|
||||
@@ -0,0 +1,142 @@
|
||||
import re
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
from mpl_toolkits.axisartist.angle_helper import (
|
||||
FormatterDMS, FormatterHMS, select_step, select_step24, select_step360)
|
||||
|
||||
|
||||
_MS_RE = (
|
||||
r'''\$ # Mathtext
|
||||
(
|
||||
# The sign sometimes appears on a 0 when a fraction is shown.
|
||||
# Check later that there's only one.
|
||||
(?P<degree_sign>-)?
|
||||
(?P<degree>[0-9.]+) # Degrees value
|
||||
{degree} # Degree symbol (to be replaced by format.)
|
||||
)?
|
||||
(
|
||||
(?(degree)\\,) # Separator if degrees are also visible.
|
||||
(?P<minute_sign>-)?
|
||||
(?P<minute>[0-9.]+) # Minutes value
|
||||
{minute} # Minute symbol (to be replaced by format.)
|
||||
)?
|
||||
(
|
||||
(?(minute)\\,) # Separator if minutes are also visible.
|
||||
(?P<second_sign>-)?
|
||||
(?P<second>[0-9.]+) # Seconds value
|
||||
{second} # Second symbol (to be replaced by format.)
|
||||
)?
|
||||
\$ # Mathtext
|
||||
'''
|
||||
)
|
||||
DMS_RE = re.compile(_MS_RE.format(degree=re.escape(FormatterDMS.deg_mark),
|
||||
minute=re.escape(FormatterDMS.min_mark),
|
||||
second=re.escape(FormatterDMS.sec_mark)),
|
||||
re.VERBOSE)
|
||||
HMS_RE = re.compile(_MS_RE.format(degree=re.escape(FormatterHMS.deg_mark),
|
||||
minute=re.escape(FormatterHMS.min_mark),
|
||||
second=re.escape(FormatterHMS.sec_mark)),
|
||||
re.VERBOSE)
|
||||
|
||||
|
||||
def dms2float(degrees, minutes=0, seconds=0):
|
||||
return degrees + minutes / 60.0 + seconds / 3600.0
|
||||
|
||||
|
||||
@pytest.mark.parametrize('args, kwargs, expected_levels, expected_factor', [
|
||||
((-180, 180, 10), {'hour': False}, np.arange(-180, 181, 30), 1.0),
|
||||
((-12, 12, 10), {'hour': True}, np.arange(-12, 13, 2), 1.0)
|
||||
])
|
||||
def test_select_step(args, kwargs, expected_levels, expected_factor):
|
||||
levels, n, factor = select_step(*args, **kwargs)
|
||||
|
||||
assert n == len(levels)
|
||||
np.testing.assert_array_equal(levels, expected_levels)
|
||||
assert factor == expected_factor
|
||||
|
||||
|
||||
@pytest.mark.parametrize('args, kwargs, expected_levels, expected_factor', [
|
||||
((-180, 180, 10), {}, np.arange(-180, 181, 30), 1.0),
|
||||
((-12, 12, 10), {}, np.arange(-750, 751, 150), 60.0)
|
||||
])
|
||||
def test_select_step24(args, kwargs, expected_levels, expected_factor):
|
||||
levels, n, factor = select_step24(*args, **kwargs)
|
||||
|
||||
assert n == len(levels)
|
||||
np.testing.assert_array_equal(levels, expected_levels)
|
||||
assert factor == expected_factor
|
||||
|
||||
|
||||
@pytest.mark.parametrize('args, kwargs, expected_levels, expected_factor', [
|
||||
((dms2float(20, 21.2), dms2float(21, 33.3), 5), {},
|
||||
np.arange(1215, 1306, 15), 60.0),
|
||||
((dms2float(20.5, seconds=21.2), dms2float(20.5, seconds=33.3), 5), {},
|
||||
np.arange(73820, 73835, 2), 3600.0),
|
||||
((dms2float(20, 21.2), dms2float(20, 53.3), 5), {},
|
||||
np.arange(1220, 1256, 5), 60.0),
|
||||
((21.2, 33.3, 5), {},
|
||||
np.arange(20, 35, 2), 1.0),
|
||||
((dms2float(20, 21.2), dms2float(21, 33.3), 5), {},
|
||||
np.arange(1215, 1306, 15), 60.0),
|
||||
((dms2float(20.5, seconds=21.2), dms2float(20.5, seconds=33.3), 5), {},
|
||||
np.arange(73820, 73835, 2), 3600.0),
|
||||
((dms2float(20.5, seconds=21.2), dms2float(20.5, seconds=21.4), 5), {},
|
||||
np.arange(7382120, 7382141, 5), 360000.0),
|
||||
# test threshold factor
|
||||
((dms2float(20.5, seconds=11.2), dms2float(20.5, seconds=53.3), 5),
|
||||
{'threshold_factor': 60}, np.arange(12301, 12310), 600.0),
|
||||
((dms2float(20.5, seconds=11.2), dms2float(20.5, seconds=53.3), 5),
|
||||
{'threshold_factor': 1}, np.arange(20502, 20517, 2), 1000.0),
|
||||
])
|
||||
def test_select_step360(args, kwargs, expected_levels, expected_factor):
|
||||
levels, n, factor = select_step360(*args, **kwargs)
|
||||
|
||||
assert n == len(levels)
|
||||
np.testing.assert_array_equal(levels, expected_levels)
|
||||
assert factor == expected_factor
|
||||
|
||||
|
||||
@pytest.mark.parametrize('Formatter, regex',
|
||||
[(FormatterDMS, DMS_RE),
|
||||
(FormatterHMS, HMS_RE)],
|
||||
ids=['Degree/Minute/Second', 'Hour/Minute/Second'])
|
||||
@pytest.mark.parametrize('direction, factor, values', [
|
||||
("left", 60, [0, -30, -60]),
|
||||
("left", 600, [12301, 12302, 12303]),
|
||||
("left", 3600, [0, -30, -60]),
|
||||
("left", 36000, [738210, 738215, 738220]),
|
||||
("left", 360000, [7382120, 7382125, 7382130]),
|
||||
("left", 1., [45, 46, 47]),
|
||||
("left", 10., [452, 453, 454]),
|
||||
])
|
||||
def test_formatters(Formatter, regex, direction, factor, values):
|
||||
fmt = Formatter()
|
||||
result = fmt(direction, factor, values)
|
||||
|
||||
prev_degree = prev_minute = prev_second = None
|
||||
for tick, value in zip(result, values):
|
||||
m = regex.match(tick)
|
||||
assert m is not None, '"%s" is not an expected tick format.' % (tick, )
|
||||
|
||||
sign = sum(m.group(sign + '_sign') is not None
|
||||
for sign in ('degree', 'minute', 'second'))
|
||||
assert sign <= 1, \
|
||||
'Only one element of tick "%s" may have a sign.' % (tick, )
|
||||
sign = 1 if sign == 0 else -1
|
||||
|
||||
degree = float(m.group('degree') or prev_degree or 0)
|
||||
minute = float(m.group('minute') or prev_minute or 0)
|
||||
second = float(m.group('second') or prev_second or 0)
|
||||
if Formatter == FormatterHMS:
|
||||
# 360 degrees as plot range -> 24 hours as labelled range
|
||||
expected_value = pytest.approx((value // 15) / factor)
|
||||
else:
|
||||
expected_value = pytest.approx(value / factor)
|
||||
assert sign * dms2float(degree, minute, second) == expected_value, \
|
||||
'"%s" does not match expected tick value.' % (tick, )
|
||||
|
||||
prev_degree = degree
|
||||
prev_minute = minute
|
||||
prev_second = second
|
||||
@@ -0,0 +1,94 @@
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.testing.decorators import image_comparison
|
||||
|
||||
from mpl_toolkits.axisartist import AxisArtistHelperRectlinear
|
||||
from mpl_toolkits.axisartist.axis_artist import (AxisArtist, AxisLabel,
|
||||
LabelBase, Ticks, TickLabels)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['axis_artist_ticks'],
|
||||
extensions=['png'], style='default')
|
||||
def test_ticks():
|
||||
fig, ax = plt.subplots()
|
||||
|
||||
ax.xaxis.set_visible(False)
|
||||
ax.yaxis.set_visible(False)
|
||||
|
||||
locs_angles = [((i / 10, 0.0), i * 30) for i in range(-1, 12)]
|
||||
|
||||
ticks_in = Ticks(ticksize=10, axis=ax.xaxis)
|
||||
ticks_in.set_locs_angles(locs_angles)
|
||||
ax.add_artist(ticks_in)
|
||||
|
||||
ticks_out = Ticks(ticksize=10, tick_out=True, color='C3', axis=ax.xaxis)
|
||||
ticks_out.set_locs_angles(locs_angles)
|
||||
ax.add_artist(ticks_out)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['axis_artist_labelbase'],
|
||||
extensions=['png'], style='default')
|
||||
def test_labelbase():
|
||||
fig, ax = plt.subplots()
|
||||
|
||||
ax.plot([0.5], [0.5], "o")
|
||||
|
||||
label = LabelBase(0.5, 0.5, "Test")
|
||||
label._set_ref_angle(-90)
|
||||
label._set_offset_radius(offset_radius=50)
|
||||
label.set_rotation(-90)
|
||||
label.set(ha="center", va="top")
|
||||
ax.add_artist(label)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['axis_artist_ticklabels'],
|
||||
extensions=['png'], style='default')
|
||||
def test_ticklabels():
|
||||
fig, ax = plt.subplots()
|
||||
|
||||
ax.xaxis.set_visible(False)
|
||||
ax.yaxis.set_visible(False)
|
||||
|
||||
ax.plot([0.2, 0.4], [0.5, 0.5], "o")
|
||||
|
||||
ticks = Ticks(ticksize=10, axis=ax.xaxis)
|
||||
ax.add_artist(ticks)
|
||||
locs_angles_labels = [((0.2, 0.5), -90, "0.2"),
|
||||
((0.4, 0.5), -120, "0.4")]
|
||||
tick_locs_angles = [(xy, a + 180) for xy, a, l in locs_angles_labels]
|
||||
ticks.set_locs_angles(tick_locs_angles)
|
||||
|
||||
ticklabels = TickLabels(axis_direction="left")
|
||||
ticklabels._locs_angles_labels = locs_angles_labels
|
||||
ticklabels.set_pad(10)
|
||||
ax.add_artist(ticklabels)
|
||||
|
||||
ax.plot([0.5], [0.5], "s")
|
||||
axislabel = AxisLabel(0.5, 0.5, "Test")
|
||||
axislabel._set_offset_radius(20)
|
||||
axislabel._set_ref_angle(0)
|
||||
axislabel.set_axis_direction("bottom")
|
||||
ax.add_artist(axislabel)
|
||||
|
||||
ax.set_xlim(0, 1)
|
||||
ax.set_ylim(0, 1)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['axis_artist'],
|
||||
extensions=['png'], style='default')
|
||||
def test_axis_artist():
|
||||
fig, ax = plt.subplots()
|
||||
|
||||
ax.xaxis.set_visible(False)
|
||||
ax.yaxis.set_visible(False)
|
||||
|
||||
for loc in ('left', 'right', 'bottom'):
|
||||
_helper = AxisArtistHelperRectlinear.Fixed(ax, loc=loc)
|
||||
axisline = AxisArtist(ax, _helper, offset=None, axis_direction=loc)
|
||||
ax.add_artist(axisline)
|
||||
|
||||
# Settings for bottom AxisArtist.
|
||||
axisline.set_label("TTT")
|
||||
axisline.major_ticks.set_tick_out(False)
|
||||
axisline.label.set_pad(5)
|
||||
|
||||
ax.set_ylabel("Test")
|
||||
@@ -0,0 +1,89 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.testing.decorators import image_comparison
|
||||
from matplotlib.transforms import IdentityTransform
|
||||
|
||||
from mpl_toolkits.axisartist.axislines import SubplotZero, Subplot
|
||||
from mpl_toolkits.axisartist import SubplotHost, ParasiteAxesAuxTrans
|
||||
|
||||
from mpl_toolkits.axisartist import Axes
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['SubplotZero'],
|
||||
extensions=['png'], style='default')
|
||||
def test_SubplotZero():
|
||||
fig = plt.figure()
|
||||
|
||||
ax = SubplotZero(fig, 1, 1, 1)
|
||||
fig.add_subplot(ax)
|
||||
|
||||
ax.axis["xzero"].set_visible(True)
|
||||
ax.axis["xzero"].label.set_text("Axis Zero")
|
||||
|
||||
for n in ["top", "right"]:
|
||||
ax.axis[n].set_visible(False)
|
||||
|
||||
xx = np.arange(0, 2 * np.pi, 0.01)
|
||||
ax.plot(xx, np.sin(xx))
|
||||
ax.set_ylabel("Test")
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['Subplot'],
|
||||
extensions=['png'], style='default')
|
||||
def test_Subplot():
|
||||
fig = plt.figure()
|
||||
|
||||
ax = Subplot(fig, 1, 1, 1)
|
||||
fig.add_subplot(ax)
|
||||
|
||||
xx = np.arange(0, 2 * np.pi, 0.01)
|
||||
ax.plot(xx, np.sin(xx))
|
||||
ax.set_ylabel("Test")
|
||||
|
||||
ax.axis["top"].major_ticks.set_tick_out(True)
|
||||
ax.axis["bottom"].major_ticks.set_tick_out(True)
|
||||
|
||||
ax.axis["bottom"].set_label("Tk0")
|
||||
|
||||
|
||||
def test_Axes():
|
||||
fig = plt.figure()
|
||||
ax = Axes(fig, [0.15, 0.1, 0.65, 0.8])
|
||||
fig.add_axes(ax)
|
||||
ax.plot([1, 2, 3], [0, 1, 2])
|
||||
|
||||
ax.set_xscale('log')
|
||||
|
||||
plt.show()
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['ParasiteAxesAuxTrans_meshplot'],
|
||||
extensions=['png'], remove_text=True, style='default',
|
||||
tol=0.075)
|
||||
def test_ParasiteAxesAuxTrans():
|
||||
|
||||
data = np.ones((6, 6))
|
||||
data[2, 2] = 2
|
||||
data[0, :] = 0
|
||||
data[-2, :] = 0
|
||||
data[:, 0] = 0
|
||||
data[:, -2] = 0
|
||||
x = np.arange(6)
|
||||
y = np.arange(6)
|
||||
xx, yy = np.meshgrid(x, y)
|
||||
|
||||
funcnames = ['pcolor', 'pcolormesh', 'contourf']
|
||||
|
||||
fig = plt.figure()
|
||||
for i, name in enumerate(funcnames):
|
||||
|
||||
ax1 = SubplotHost(fig, 1, 3, i+1)
|
||||
fig.add_subplot(ax1)
|
||||
|
||||
ax2 = ParasiteAxesAuxTrans(ax1, IdentityTransform())
|
||||
ax1.parasites.append(ax2)
|
||||
getattr(ax2, name)(xx, yy, data)
|
||||
ax1.set_xlim((0, 5))
|
||||
ax1.set_ylim((0, 5))
|
||||
|
||||
ax2.contour(xx, yy, data, colors='k')
|
||||
@@ -0,0 +1,33 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.testing.decorators import image_comparison
|
||||
from matplotlib.transforms import Bbox
|
||||
|
||||
from mpl_toolkits.axisartist.clip_path import clip_line_to_rect
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['clip_path'],
|
||||
extensions=['png'], style='default')
|
||||
def test_clip_path():
|
||||
x = np.array([-3, -2, -1, 0., 1, 2, 3, 2, 1, 0, -1, -2, -3, 5])
|
||||
y = np.arange(len(x))
|
||||
|
||||
fig, ax = plt.subplots()
|
||||
ax.plot(x, y, lw=1)
|
||||
|
||||
bbox = Bbox.from_extents(-2, 3, 2, 12.5)
|
||||
rect = plt.Rectangle(bbox.p0, bbox.width, bbox.height,
|
||||
facecolor='none', edgecolor='k', ls='--')
|
||||
ax.add_patch(rect)
|
||||
|
||||
clipped_lines, ticks = clip_line_to_rect(x, y, bbox)
|
||||
for lx, ly in clipped_lines:
|
||||
ax.plot(lx, ly, lw=1, color='C1')
|
||||
for px, py in zip(lx, ly):
|
||||
assert bbox.contains(px, py)
|
||||
|
||||
ccc = iter(['C3o', 'C2x', 'C3o', 'C2x'])
|
||||
for ttt in ticks:
|
||||
cc = next(ccc)
|
||||
for (xx, yy), aa in ttt:
|
||||
ax.plot([xx], [yy], cc)
|
||||
@@ -0,0 +1,123 @@
|
||||
import numpy as np
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.projections as mprojections
|
||||
import matplotlib.transforms as mtransforms
|
||||
from matplotlib.testing.decorators import image_comparison
|
||||
from mpl_toolkits.axisartist.axislines import Subplot
|
||||
from mpl_toolkits.axisartist.floating_axes import (
|
||||
FloatingSubplot,
|
||||
GridHelperCurveLinear)
|
||||
from mpl_toolkits.axisartist.grid_finder import FixedLocator
|
||||
from mpl_toolkits.axisartist import angle_helper
|
||||
|
||||
|
||||
def test_subplot():
|
||||
fig = plt.figure(figsize=(5, 5))
|
||||
fig.clf()
|
||||
|
||||
ax = Subplot(fig, 111)
|
||||
fig.add_subplot(ax)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['curvelinear3'],
|
||||
extensions=['png'], style='default', tol=0.01)
|
||||
def test_curvelinear3():
|
||||
fig = plt.figure(figsize=(5, 5))
|
||||
fig.clf()
|
||||
|
||||
tr = (mtransforms.Affine2D().scale(np.pi / 180, 1) +
|
||||
mprojections.PolarAxes.PolarTransform())
|
||||
|
||||
grid_locator1 = angle_helper.LocatorDMS(15)
|
||||
tick_formatter1 = angle_helper.FormatterDMS()
|
||||
|
||||
grid_locator2 = FixedLocator([2, 4, 6, 8, 10])
|
||||
|
||||
grid_helper = GridHelperCurveLinear(tr,
|
||||
extremes=(0, 360, 10, 3),
|
||||
grid_locator1=grid_locator1,
|
||||
grid_locator2=grid_locator2,
|
||||
tick_formatter1=tick_formatter1,
|
||||
tick_formatter2=None)
|
||||
|
||||
ax1 = FloatingSubplot(fig, 111, grid_helper=grid_helper)
|
||||
fig.add_subplot(ax1)
|
||||
|
||||
r_scale = 10
|
||||
tr2 = mtransforms.Affine2D().scale(1, 1 / r_scale) + tr
|
||||
grid_locator2 = FixedLocator([30, 60, 90])
|
||||
grid_helper2 = GridHelperCurveLinear(tr2,
|
||||
extremes=(0, 360,
|
||||
10 * r_scale, 3 * r_scale),
|
||||
grid_locator2=grid_locator2)
|
||||
|
||||
ax1.axis["right"] = axis = grid_helper2.new_fixed_axis("right", axes=ax1)
|
||||
|
||||
ax1.axis["left"].label.set_text("Test 1")
|
||||
ax1.axis["right"].label.set_text("Test 2")
|
||||
|
||||
for an in ["left", "right"]:
|
||||
ax1.axis[an].set_visible(False)
|
||||
|
||||
axis = grid_helper.new_floating_axis(1, 7, axes=ax1,
|
||||
axis_direction="bottom")
|
||||
ax1.axis["z"] = axis
|
||||
axis.toggle(all=True, label=True)
|
||||
axis.label.set_text("z = ?")
|
||||
axis.label.set_visible(True)
|
||||
axis.line.set_color("0.5")
|
||||
|
||||
ax2 = ax1.get_aux_axes(tr)
|
||||
|
||||
xx, yy = [67, 90, 75, 30], [2, 5, 8, 4]
|
||||
ax2.scatter(xx, yy)
|
||||
l, = ax2.plot(xx, yy, "k-")
|
||||
l.set_clip_path(ax1.patch)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['curvelinear4'],
|
||||
extensions=['png'], style='default', tol=0.015)
|
||||
def test_curvelinear4():
|
||||
fig = plt.figure(figsize=(5, 5))
|
||||
fig.clf()
|
||||
|
||||
tr = (mtransforms.Affine2D().scale(np.pi / 180, 1) +
|
||||
mprojections.PolarAxes.PolarTransform())
|
||||
|
||||
grid_locator1 = angle_helper.LocatorDMS(5)
|
||||
tick_formatter1 = angle_helper.FormatterDMS()
|
||||
|
||||
grid_locator2 = FixedLocator([2, 4, 6, 8, 10])
|
||||
|
||||
grid_helper = GridHelperCurveLinear(tr,
|
||||
extremes=(120, 30, 10, 0),
|
||||
grid_locator1=grid_locator1,
|
||||
grid_locator2=grid_locator2,
|
||||
tick_formatter1=tick_formatter1,
|
||||
tick_formatter2=None)
|
||||
|
||||
ax1 = FloatingSubplot(fig, 111, grid_helper=grid_helper)
|
||||
fig.add_subplot(ax1)
|
||||
|
||||
ax1.axis["left"].label.set_text("Test 1")
|
||||
ax1.axis["right"].label.set_text("Test 2")
|
||||
|
||||
for an in ["top"]:
|
||||
ax1.axis[an].set_visible(False)
|
||||
|
||||
axis = grid_helper.new_floating_axis(1, 70, axes=ax1,
|
||||
axis_direction="bottom")
|
||||
ax1.axis["z"] = axis
|
||||
axis.toggle(all=True, label=True)
|
||||
axis.label.set_axis_direction("top")
|
||||
axis.label.set_text("z = ?")
|
||||
axis.label.set_visible(True)
|
||||
axis.line.set_color("0.5")
|
||||
|
||||
ax2 = ax1.get_aux_axes(tr)
|
||||
|
||||
xx, yy = [67, 90, 75, 30], [2, 5, 8, 4]
|
||||
ax2.scatter(xx, yy)
|
||||
l, = ax2.plot(xx, yy, "k-")
|
||||
l.set_clip_path(ax1.patch)
|
||||
@@ -0,0 +1,13 @@
|
||||
from mpl_toolkits.axisartist.grid_finder import (
|
||||
FormatterPrettyPrint,
|
||||
MaxNLocator)
|
||||
|
||||
|
||||
def test_pretty_print_format():
|
||||
locator = MaxNLocator()
|
||||
locs, nloc, factor = locator(0, 100)
|
||||
|
||||
fmt = FormatterPrettyPrint()
|
||||
|
||||
assert fmt("left", None, locs) == \
|
||||
[r'$\mathdefault{%d}$' % (l, ) for l in locs]
|
||||
@@ -0,0 +1,214 @@
|
||||
import numpy as np
|
||||
import platform
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.path import Path
|
||||
from matplotlib.projections import PolarAxes
|
||||
from matplotlib.transforms import Affine2D, Transform
|
||||
from matplotlib.testing.decorators import image_comparison
|
||||
|
||||
from mpl_toolkits.axes_grid1.parasite_axes import ParasiteAxesAuxTrans
|
||||
from mpl_toolkits.axisartist import SubplotHost
|
||||
from mpl_toolkits.axes_grid1.parasite_axes import host_subplot_class_factory
|
||||
from mpl_toolkits.axisartist import angle_helper
|
||||
from mpl_toolkits.axisartist.axislines import Axes
|
||||
from mpl_toolkits.axisartist.grid_helper_curvelinear import \
|
||||
GridHelperCurveLinear
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['custom_transform'],
|
||||
extensions=['png'], style='default', tol=0.03)
|
||||
def test_custom_transform():
|
||||
class MyTransform(Transform):
|
||||
input_dims = 2
|
||||
output_dims = 2
|
||||
is_separable = False
|
||||
|
||||
def __init__(self, resolution):
|
||||
"""
|
||||
Resolution is the number of steps to interpolate between each input
|
||||
line segment to approximate its path in transformed space.
|
||||
"""
|
||||
Transform.__init__(self)
|
||||
self._resolution = resolution
|
||||
|
||||
def transform(self, ll):
|
||||
x, y = ll.T
|
||||
return np.column_stack([x, y - x])
|
||||
|
||||
transform_non_affine = transform
|
||||
|
||||
def transform_path(self, path):
|
||||
vertices = path.vertices
|
||||
ipath = path.interpolated(self._resolution)
|
||||
return Path(self.transform(ipath.vertices), ipath.codes)
|
||||
|
||||
transform_path_non_affine = transform_path
|
||||
|
||||
def inverted(self):
|
||||
return MyTransformInv(self._resolution)
|
||||
|
||||
class MyTransformInv(Transform):
|
||||
input_dims = 2
|
||||
output_dims = 2
|
||||
is_separable = False
|
||||
|
||||
def __init__(self, resolution):
|
||||
Transform.__init__(self)
|
||||
self._resolution = resolution
|
||||
|
||||
def transform(self, ll):
|
||||
x, y = ll.T
|
||||
return np.column_stack([x, y + x])
|
||||
|
||||
def inverted(self):
|
||||
return MyTransform(self._resolution)
|
||||
|
||||
fig = plt.figure()
|
||||
|
||||
SubplotHost = host_subplot_class_factory(Axes)
|
||||
|
||||
tr = MyTransform(1)
|
||||
grid_helper = GridHelperCurveLinear(tr)
|
||||
ax1 = SubplotHost(fig, 1, 1, 1, grid_helper=grid_helper)
|
||||
fig.add_subplot(ax1)
|
||||
|
||||
ax2 = ParasiteAxesAuxTrans(ax1, tr, "equal")
|
||||
ax1.parasites.append(ax2)
|
||||
ax2.plot([3, 6], [5.0, 10.])
|
||||
|
||||
ax1.set_aspect(1.)
|
||||
ax1.set_xlim(0, 10)
|
||||
ax1.set_ylim(0, 10)
|
||||
|
||||
ax1.grid(True)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['polar_box'],
|
||||
tol={'aarch64': 0.04}.get(platform.machine(), 0.03),
|
||||
extensions=['png'], style='default')
|
||||
def test_polar_box():
|
||||
fig = plt.figure(figsize=(5, 5))
|
||||
|
||||
# PolarAxes.PolarTransform takes radian. However, we want our coordinate
|
||||
# system in degree
|
||||
tr = Affine2D().scale(np.pi / 180., 1.) + PolarAxes.PolarTransform()
|
||||
|
||||
# polar projection, which involves cycle, and also has limits in
|
||||
# its coordinates, needs a special method to find the extremes
|
||||
# (min, max of the coordinate within the view).
|
||||
extreme_finder = angle_helper.ExtremeFinderCycle(20, 20,
|
||||
lon_cycle=360,
|
||||
lat_cycle=None,
|
||||
lon_minmax=None,
|
||||
lat_minmax=(0, np.inf))
|
||||
|
||||
grid_locator1 = angle_helper.LocatorDMS(12)
|
||||
tick_formatter1 = angle_helper.FormatterDMS()
|
||||
|
||||
grid_helper = GridHelperCurveLinear(tr,
|
||||
extreme_finder=extreme_finder,
|
||||
grid_locator1=grid_locator1,
|
||||
tick_formatter1=tick_formatter1)
|
||||
|
||||
ax1 = SubplotHost(fig, 1, 1, 1, grid_helper=grid_helper)
|
||||
|
||||
ax1.axis["right"].major_ticklabels.set_visible(True)
|
||||
ax1.axis["top"].major_ticklabels.set_visible(True)
|
||||
|
||||
# let right axis shows ticklabels for 1st coordinate (angle)
|
||||
ax1.axis["right"].get_helper().nth_coord_ticks = 0
|
||||
# let bottom axis shows ticklabels for 2nd coordinate (radius)
|
||||
ax1.axis["bottom"].get_helper().nth_coord_ticks = 1
|
||||
|
||||
fig.add_subplot(ax1)
|
||||
|
||||
ax1.axis["lat"] = axis = grid_helper.new_floating_axis(0, 45, axes=ax1)
|
||||
axis.label.set_text("Test")
|
||||
axis.label.set_visible(True)
|
||||
axis.get_helper()._extremes = 2, 12
|
||||
|
||||
ax1.axis["lon"] = axis = grid_helper.new_floating_axis(1, 6, axes=ax1)
|
||||
axis.label.set_text("Test 2")
|
||||
axis.get_helper()._extremes = -180, 90
|
||||
|
||||
# A parasite axes with given transform
|
||||
ax2 = ParasiteAxesAuxTrans(ax1, tr, "equal")
|
||||
assert ax2.transData == tr + ax1.transData
|
||||
# Anything you draw in ax2 will match the ticks and grids of ax1.
|
||||
ax1.parasites.append(ax2)
|
||||
ax2.plot(np.linspace(0, 30, 50), np.linspace(10, 10, 50))
|
||||
|
||||
ax1.set_aspect(1.)
|
||||
ax1.set_xlim(-5, 12)
|
||||
ax1.set_ylim(-5, 10)
|
||||
|
||||
ax1.grid(True)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['axis_direction'],
|
||||
extensions=['png'], style='default', tol=0.03)
|
||||
def test_axis_direction():
|
||||
fig = plt.figure(figsize=(5, 5))
|
||||
|
||||
# PolarAxes.PolarTransform takes radian. However, we want our coordinate
|
||||
# system in degree
|
||||
tr = Affine2D().scale(np.pi / 180., 1.) + PolarAxes.PolarTransform()
|
||||
|
||||
# polar projection, which involves cycle, and also has limits in
|
||||
# its coordinates, needs a special method to find the extremes
|
||||
# (min, max of the coordinate within the view).
|
||||
|
||||
# 20, 20 : number of sampling points along x, y direction
|
||||
extreme_finder = angle_helper.ExtremeFinderCycle(20, 20,
|
||||
lon_cycle=360,
|
||||
lat_cycle=None,
|
||||
lon_minmax=None,
|
||||
lat_minmax=(0, np.inf),
|
||||
)
|
||||
|
||||
grid_locator1 = angle_helper.LocatorDMS(12)
|
||||
tick_formatter1 = angle_helper.FormatterDMS()
|
||||
|
||||
grid_helper = GridHelperCurveLinear(tr,
|
||||
extreme_finder=extreme_finder,
|
||||
grid_locator1=grid_locator1,
|
||||
tick_formatter1=tick_formatter1)
|
||||
|
||||
ax1 = SubplotHost(fig, 1, 1, 1, grid_helper=grid_helper)
|
||||
|
||||
for axis in ax1.axis.values():
|
||||
axis.set_visible(False)
|
||||
|
||||
fig.add_subplot(ax1)
|
||||
|
||||
ax1.axis["lat1"] = axis = grid_helper.new_floating_axis(
|
||||
0, 130,
|
||||
axes=ax1, axis_direction="left")
|
||||
axis.label.set_text("Test")
|
||||
axis.label.set_visible(True)
|
||||
axis.get_helper()._extremes = 0.001, 10
|
||||
|
||||
ax1.axis["lat2"] = axis = grid_helper.new_floating_axis(
|
||||
0, 50,
|
||||
axes=ax1, axis_direction="right")
|
||||
axis.label.set_text("Test")
|
||||
axis.label.set_visible(True)
|
||||
axis.get_helper()._extremes = 0.001, 10
|
||||
|
||||
ax1.axis["lon"] = axis = grid_helper.new_floating_axis(
|
||||
1, 10,
|
||||
axes=ax1, axis_direction="bottom")
|
||||
axis.label.set_text("Test 2")
|
||||
axis.get_helper()._extremes = 50, 130
|
||||
axis.major_ticklabels.set_axis_direction("top")
|
||||
axis.label.set_axis_direction("top")
|
||||
|
||||
grid_helper.grid_finder.grid_locator1.den = 5
|
||||
grid_helper.grid_finder.grid_locator2._nbins = 5
|
||||
|
||||
ax1.set_aspect(1.)
|
||||
ax1.set_xlim(-8, 8)
|
||||
ax1.set_ylim(-4, 12)
|
||||
|
||||
ax1.grid(True)
|
||||
@@ -0,0 +1,814 @@
|
||||
import pytest
|
||||
|
||||
from mpl_toolkits.mplot3d import Axes3D, axes3d, proj3d, art3d
|
||||
from matplotlib import cm
|
||||
from matplotlib.testing.decorators import image_comparison, check_figures_equal
|
||||
from matplotlib.collections import LineCollection
|
||||
from matplotlib.patches import Circle
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['bar3d'], remove_text=True)
|
||||
def test_bar3d():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]):
|
||||
xs = np.arange(20)
|
||||
ys = np.arange(20)
|
||||
cs = [c] * len(xs)
|
||||
cs[0] = 'c'
|
||||
ax.bar(xs, ys, zs=z, zdir='y', align='edge', color=cs, alpha=0.8)
|
||||
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['bar3d_shaded'],
|
||||
remove_text=True,
|
||||
extensions=['png']
|
||||
)
|
||||
def test_bar3d_shaded():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
x = np.arange(4)
|
||||
y = np.arange(5)
|
||||
x2d, y2d = np.meshgrid(x, y)
|
||||
x2d, y2d = x2d.ravel(), y2d.ravel()
|
||||
z = x2d + y2d
|
||||
ax.bar3d(x2d, y2d, x2d * 0, 1, 1, z, shade=True)
|
||||
fig.canvas.draw()
|
||||
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['bar3d_notshaded'],
|
||||
remove_text=True,
|
||||
extensions=['png']
|
||||
)
|
||||
def test_bar3d_notshaded():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
x = np.arange(4)
|
||||
y = np.arange(5)
|
||||
x2d, y2d = np.meshgrid(x, y)
|
||||
x2d, y2d = x2d.ravel(), y2d.ravel()
|
||||
z = x2d + y2d
|
||||
ax.bar3d(x2d, y2d, x2d * 0, 1, 1, z, shade=False)
|
||||
fig.canvas.draw()
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['contour3d'],
|
||||
remove_text=True, style='mpl20')
|
||||
def test_contour3d():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
X, Y, Z = axes3d.get_test_data(0.05)
|
||||
cset = ax.contour(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
|
||||
cset = ax.contour(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
|
||||
cset = ax.contour(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)
|
||||
ax.set_xlim(-40, 40)
|
||||
ax.set_ylim(-40, 40)
|
||||
ax.set_zlim(-100, 100)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['contourf3d'], remove_text=True)
|
||||
def test_contourf3d():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
X, Y, Z = axes3d.get_test_data(0.05)
|
||||
cset = ax.contourf(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
|
||||
cset = ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
|
||||
cset = ax.contourf(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)
|
||||
ax.set_xlim(-40, 40)
|
||||
ax.set_ylim(-40, 40)
|
||||
ax.set_zlim(-100, 100)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['contourf3d_fill'], remove_text=True)
|
||||
def test_contourf3d_fill():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
X, Y = np.meshgrid(np.arange(-2, 2, 0.25), np.arange(-2, 2, 0.25))
|
||||
Z = X.clip(0, 0)
|
||||
# This produces holes in the z=0 surface that causes rendering errors if
|
||||
# the Poly3DCollection is not aware of path code information (issue #4784)
|
||||
Z[::5, ::5] = 0.1
|
||||
cset = ax.contourf(X, Y, Z, offset=0, levels=[-0.1, 0], cmap=cm.coolwarm)
|
||||
ax.set_xlim(-2, 2)
|
||||
ax.set_ylim(-2, 2)
|
||||
ax.set_zlim(-1, 1)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['tricontour'], remove_text=True,
|
||||
style='mpl20', extensions=['png'])
|
||||
def test_tricontour():
|
||||
fig = plt.figure()
|
||||
|
||||
np.random.seed(19680801)
|
||||
x = np.random.rand(1000) - 0.5
|
||||
y = np.random.rand(1000) - 0.5
|
||||
z = -(x**2 + y**2)
|
||||
|
||||
ax = fig.add_subplot(1, 2, 1, projection='3d')
|
||||
ax.tricontour(x, y, z)
|
||||
ax = fig.add_subplot(1, 2, 2, projection='3d')
|
||||
ax.tricontourf(x, y, z)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['lines3d'], remove_text=True)
|
||||
def test_lines3d():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
|
||||
z = np.linspace(-2, 2, 100)
|
||||
r = z ** 2 + 1
|
||||
x = r * np.sin(theta)
|
||||
y = r * np.cos(theta)
|
||||
ax.plot(x, y, z)
|
||||
|
||||
|
||||
# Reason for flakiness of SVG test is still unknown.
|
||||
@image_comparison(baseline_images=['mixedsubplot'], remove_text=True,
|
||||
extensions=['png', 'pdf',
|
||||
pytest.mark.xfail('svg', strict=False)])
|
||||
def test_mixedsubplots():
|
||||
def f(t):
|
||||
s1 = np.cos(2*np.pi*t)
|
||||
e1 = np.exp(-t)
|
||||
return np.multiply(s1, e1)
|
||||
|
||||
t1 = np.arange(0.0, 5.0, 0.1)
|
||||
t2 = np.arange(0.0, 5.0, 0.02)
|
||||
|
||||
fig = plt.figure(figsize=plt.figaspect(2.))
|
||||
ax = fig.add_subplot(2, 1, 1)
|
||||
l = ax.plot(t1, f(t1), 'bo',
|
||||
t2, f(t2), 'k--', markerfacecolor='green')
|
||||
ax.grid(True)
|
||||
|
||||
ax = fig.add_subplot(2, 1, 2, projection='3d')
|
||||
X, Y = np.meshgrid(np.arange(-5, 5, 0.25), np.arange(-5, 5, 0.25))
|
||||
R = np.sqrt(X ** 2 + Y ** 2)
|
||||
Z = np.sin(R)
|
||||
|
||||
surf = ax.plot_surface(X, Y, Z, rcount=40, ccount=40,
|
||||
linewidth=0, antialiased=False)
|
||||
|
||||
ax.set_zlim3d(-1, 1)
|
||||
|
||||
|
||||
@check_figures_equal(extensions=['png'])
|
||||
def test_tight_layout_text(fig_test, fig_ref):
|
||||
# text is currently ignored in tight layout. So the order of text() and
|
||||
# tight_layout() calls should not influence the result.
|
||||
ax1 = fig_test.gca(projection='3d')
|
||||
ax1.text(.5, .5, .5, s='some string')
|
||||
fig_test.tight_layout()
|
||||
|
||||
ax2 = fig_ref.gca(projection='3d')
|
||||
fig_ref.tight_layout()
|
||||
ax2.text(.5, .5, .5, s='some string')
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['scatter3d'], remove_text=True)
|
||||
def test_scatter3d():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
ax.scatter(np.arange(10), np.arange(10), np.arange(10),
|
||||
c='r', marker='o')
|
||||
ax.scatter(np.arange(10, 20), np.arange(10, 20), np.arange(10, 20),
|
||||
c='b', marker='^')
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['scatter3d_color'], remove_text=True,
|
||||
extensions=['png'])
|
||||
def test_scatter3d_color():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
ax.scatter(np.arange(10), np.arange(10), np.arange(10),
|
||||
color='r', marker='o')
|
||||
ax.scatter(np.arange(10, 20), np.arange(10, 20), np.arange(10, 20),
|
||||
color='b', marker='s')
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['plot_3d_from_2d'], remove_text=True,
|
||||
extensions=['png'])
|
||||
def test_plot_3d_from_2d():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
xs = np.arange(0, 5)
|
||||
ys = np.arange(5, 10)
|
||||
ax.plot(xs, ys, zs=0, zdir='x')
|
||||
ax.plot(xs, ys, zs=0, zdir='y')
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['surface3d'], remove_text=True)
|
||||
def test_surface3d():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
X = np.arange(-5, 5, 0.25)
|
||||
Y = np.arange(-5, 5, 0.25)
|
||||
X, Y = np.meshgrid(X, Y)
|
||||
R = np.sqrt(X ** 2 + Y ** 2)
|
||||
Z = np.sin(R)
|
||||
surf = ax.plot_surface(X, Y, Z, rcount=40, ccount=40, cmap=cm.coolwarm,
|
||||
lw=0, antialiased=False)
|
||||
ax.set_zlim(-1.01, 1.01)
|
||||
fig.colorbar(surf, shrink=0.5, aspect=5)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['surface3d_shaded'], remove_text=True,
|
||||
extensions=['png'])
|
||||
def test_surface3d_shaded():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
X = np.arange(-5, 5, 0.25)
|
||||
Y = np.arange(-5, 5, 0.25)
|
||||
X, Y = np.meshgrid(X, Y)
|
||||
R = np.sqrt(X ** 2 + Y ** 2)
|
||||
Z = np.sin(R)
|
||||
surf = ax.plot_surface(X, Y, Z, rstride=5, cstride=5,
|
||||
color=[0.25, 1, 0.25], lw=1, antialiased=False)
|
||||
ax.set_zlim(-1.01, 1.01)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['text3d'])
|
||||
def test_text3d():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
|
||||
zdirs = (None, 'x', 'y', 'z', (1, 1, 0), (1, 1, 1))
|
||||
xs = (2, 6, 4, 9, 7, 2)
|
||||
ys = (6, 4, 8, 7, 2, 2)
|
||||
zs = (4, 2, 5, 6, 1, 7)
|
||||
|
||||
for zdir, x, y, z in zip(zdirs, xs, ys, zs):
|
||||
label = '(%d, %d, %d), dir=%s' % (x, y, z, zdir)
|
||||
ax.text(x, y, z, label, zdir)
|
||||
|
||||
ax.text(1, 1, 1, "red", color='red')
|
||||
ax.text2D(0.05, 0.95, "2D Text", transform=ax.transAxes)
|
||||
ax.set_xlim3d(0, 10)
|
||||
ax.set_ylim3d(0, 10)
|
||||
ax.set_zlim3d(0, 10)
|
||||
ax.set_xlabel('X axis')
|
||||
ax.set_ylabel('Y axis')
|
||||
ax.set_zlabel('Z axis')
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['trisurf3d'], remove_text=True, tol=0.03)
|
||||
def test_trisurf3d():
|
||||
n_angles = 36
|
||||
n_radii = 8
|
||||
radii = np.linspace(0.125, 1.0, n_radii)
|
||||
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)
|
||||
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
|
||||
angles[:, 1::2] += np.pi/n_angles
|
||||
|
||||
x = np.append(0, (radii*np.cos(angles)).flatten())
|
||||
y = np.append(0, (radii*np.sin(angles)).flatten())
|
||||
z = np.sin(-x*y)
|
||||
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['trisurf3d_shaded'], remove_text=True,
|
||||
tol=0.03, extensions=['png'])
|
||||
def test_trisurf3d_shaded():
|
||||
n_angles = 36
|
||||
n_radii = 8
|
||||
radii = np.linspace(0.125, 1.0, n_radii)
|
||||
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)
|
||||
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
|
||||
angles[:, 1::2] += np.pi/n_angles
|
||||
|
||||
x = np.append(0, (radii*np.cos(angles)).flatten())
|
||||
y = np.append(0, (radii*np.sin(angles)).flatten())
|
||||
z = np.sin(-x*y)
|
||||
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
ax.plot_trisurf(x, y, z, color=[1, 0.5, 0], linewidth=0.2)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['wireframe3d'], remove_text=True)
|
||||
def test_wireframe3d():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
X, Y, Z = axes3d.get_test_data(0.05)
|
||||
ax.plot_wireframe(X, Y, Z, rcount=13, ccount=13)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['wireframe3dzerocstride'], remove_text=True,
|
||||
extensions=['png'])
|
||||
def test_wireframe3dzerocstride():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
X, Y, Z = axes3d.get_test_data(0.05)
|
||||
ax.plot_wireframe(X, Y, Z, rcount=13, ccount=0)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['wireframe3dzerorstride'], remove_text=True,
|
||||
extensions=['png'])
|
||||
def test_wireframe3dzerorstride():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
X, Y, Z = axes3d.get_test_data(0.05)
|
||||
ax.plot_wireframe(X, Y, Z, rstride=0, cstride=10)
|
||||
|
||||
|
||||
def test_wireframe3dzerostrideraises():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
X, Y, Z = axes3d.get_test_data(0.05)
|
||||
with pytest.raises(ValueError):
|
||||
ax.plot_wireframe(X, Y, Z, rstride=0, cstride=0)
|
||||
|
||||
|
||||
def test_mixedsamplesraises():
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
X, Y, Z = axes3d.get_test_data(0.05)
|
||||
with pytest.raises(ValueError):
|
||||
ax.plot_wireframe(X, Y, Z, rstride=10, ccount=50)
|
||||
with pytest.raises(ValueError):
|
||||
ax.plot_surface(X, Y, Z, cstride=50, rcount=10)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['quiver3d'], remove_text=True)
|
||||
def test_quiver3d():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
|
||||
x, y, z = np.ogrid[-1:0.8:10j, -1:0.8:10j, -1:0.6:3j]
|
||||
|
||||
u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)
|
||||
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)
|
||||
w = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) *
|
||||
np.sin(np.pi * z))
|
||||
|
||||
ax.quiver(x, y, z, u, v, w, length=0.1, pivot='tip', normalize=True)
|
||||
|
||||
@image_comparison(baseline_images=['quiver3d_empty'], remove_text=True)
|
||||
def test_quiver3d_empty():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
|
||||
x, y, z = np.ogrid[-1:0.8:0j, -1:0.8:0j, -1:0.6:0j]
|
||||
|
||||
u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)
|
||||
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)
|
||||
w = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) *
|
||||
np.sin(np.pi * z))
|
||||
|
||||
ax.quiver(x, y, z, u, v, w, length=0.1, pivot='tip', normalize=True)
|
||||
|
||||
@image_comparison(baseline_images=['quiver3d_masked'], remove_text=True)
|
||||
def test_quiver3d_masked():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
|
||||
# Using mgrid here instead of ogrid because masked_where doesn't
|
||||
# seem to like broadcasting very much...
|
||||
x, y, z = np.mgrid[-1:0.8:10j, -1:0.8:10j, -1:0.6:3j]
|
||||
|
||||
u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)
|
||||
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)
|
||||
w = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) *
|
||||
np.sin(np.pi * z))
|
||||
u = np.ma.masked_where((-0.4 < x) & (x < 0.1), u, copy=False)
|
||||
v = np.ma.masked_where((0.1 < y) & (y < 0.7), v, copy=False)
|
||||
|
||||
ax.quiver(x, y, z, u, v, w, length=0.1, pivot='tip', normalize=True)
|
||||
|
||||
@image_comparison(baseline_images=['quiver3d_pivot_middle'], remove_text=True,
|
||||
extensions=['png'])
|
||||
def test_quiver3d_pivot_middle():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
|
||||
x, y, z = np.ogrid[-1:0.8:10j, -1:0.8:10j, -1:0.6:3j]
|
||||
|
||||
u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)
|
||||
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)
|
||||
w = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) *
|
||||
np.sin(np.pi * z))
|
||||
|
||||
ax.quiver(x, y, z, u, v, w, length=0.1, pivot='middle', normalize=True)
|
||||
|
||||
@image_comparison(baseline_images=['quiver3d_pivot_tail'], remove_text=True,
|
||||
extensions=['png'])
|
||||
def test_quiver3d_pivot_tail():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
|
||||
x, y, z = np.ogrid[-1:0.8:10j, -1:0.8:10j, -1:0.6:3j]
|
||||
|
||||
u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)
|
||||
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)
|
||||
w = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) *
|
||||
np.sin(np.pi * z))
|
||||
|
||||
ax.quiver(x, y, z, u, v, w, length=0.1, pivot='tail', normalize=True)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['poly3dcollection_closed'],
|
||||
remove_text=True)
|
||||
def test_poly3dcollection_closed():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
|
||||
poly1 = np.array([[0, 0, 1], [0, 1, 1], [0, 0, 0]], float)
|
||||
poly2 = np.array([[0, 1, 1], [1, 1, 1], [1, 1, 0]], float)
|
||||
c1 = art3d.Poly3DCollection([poly1], linewidths=3, edgecolor='k',
|
||||
facecolor=(0.5, 0.5, 1, 0.5), closed=True)
|
||||
c2 = art3d.Poly3DCollection([poly2], linewidths=3, edgecolor='k',
|
||||
facecolor=(1, 0.5, 0.5, 0.5), closed=False)
|
||||
ax.add_collection3d(c1)
|
||||
ax.add_collection3d(c2)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['axes3d_labelpad'], extensions=['png'])
|
||||
def test_axes3d_labelpad():
|
||||
from matplotlib import rcParams
|
||||
|
||||
fig = plt.figure()
|
||||
ax = Axes3D(fig)
|
||||
# labelpad respects rcParams
|
||||
assert ax.xaxis.labelpad == rcParams['axes.labelpad']
|
||||
# labelpad can be set in set_label
|
||||
ax.set_xlabel('X LABEL', labelpad=10)
|
||||
assert ax.xaxis.labelpad == 10
|
||||
ax.set_ylabel('Y LABEL')
|
||||
ax.set_zlabel('Z LABEL')
|
||||
# or manually
|
||||
ax.yaxis.labelpad = 20
|
||||
ax.zaxis.labelpad = -40
|
||||
|
||||
# Tick labels also respect tick.pad (also from rcParams)
|
||||
for i, tick in enumerate(ax.yaxis.get_major_ticks()):
|
||||
tick.set_pad(tick.get_pad() - i * 5)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['axes3d_cla'], extensions=['png'])
|
||||
def test_axes3d_cla():
|
||||
# fixed in pull request 4553
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(1,1,1, projection='3d')
|
||||
ax.set_axis_off()
|
||||
ax.cla() # make sure the axis displayed is 3D (not 2D)
|
||||
|
||||
def test_plotsurface_1d_raises():
|
||||
x = np.linspace(0.5, 10, num=100)
|
||||
y = np.linspace(0.5, 10, num=100)
|
||||
X, Y = np.meshgrid(x, y)
|
||||
z = np.random.randn(100)
|
||||
|
||||
fig = plt.figure(figsize=(14,6))
|
||||
ax = fig.add_subplot(1, 2, 1, projection='3d')
|
||||
with pytest.raises(ValueError):
|
||||
ax.plot_surface(X, Y, z)
|
||||
|
||||
|
||||
def _test_proj_make_M():
|
||||
# eye point
|
||||
E = np.array([1000, -1000, 2000])
|
||||
R = np.array([100, 100, 100])
|
||||
V = np.array([0, 0, 1])
|
||||
viewM = proj3d.view_transformation(E, R, V)
|
||||
perspM = proj3d.persp_transformation(100, -100)
|
||||
M = np.dot(perspM, viewM)
|
||||
return M
|
||||
|
||||
|
||||
def test_proj_transform():
|
||||
M = _test_proj_make_M()
|
||||
|
||||
xs = np.array([0, 1, 1, 0, 0, 0, 1, 1, 0, 0]) * 300.0
|
||||
ys = np.array([0, 0, 1, 1, 0, 0, 0, 1, 1, 0]) * 300.0
|
||||
zs = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1]) * 300.0
|
||||
|
||||
txs, tys, tzs = proj3d.proj_transform(xs, ys, zs, M)
|
||||
ixs, iys, izs = proj3d.inv_transform(txs, tys, tzs, M)
|
||||
|
||||
np.testing.assert_almost_equal(ixs, xs)
|
||||
np.testing.assert_almost_equal(iys, ys)
|
||||
np.testing.assert_almost_equal(izs, zs)
|
||||
|
||||
|
||||
def _test_proj_draw_axes(M, s=1, *args, **kwargs):
|
||||
xs = [0, s, 0, 0]
|
||||
ys = [0, 0, s, 0]
|
||||
zs = [0, 0, 0, s]
|
||||
txs, tys, tzs = proj3d.proj_transform(xs, ys, zs, M)
|
||||
o, ax, ay, az = zip(txs, tys)
|
||||
lines = [(o, ax), (o, ay), (o, az)]
|
||||
|
||||
fig, ax = plt.subplots(*args, **kwargs)
|
||||
linec = LineCollection(lines)
|
||||
ax.add_collection(linec)
|
||||
for x, y, t in zip(txs, tys, ['o', 'x', 'y', 'z']):
|
||||
ax.text(x, y, t)
|
||||
|
||||
return fig, ax
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['proj3d_axes_cube'], extensions=['png'],
|
||||
remove_text=True, style='default')
|
||||
def test_proj_axes_cube():
|
||||
M = _test_proj_make_M()
|
||||
|
||||
ts = '0 1 2 3 0 4 5 6 7 4'.split()
|
||||
xs = np.array([0, 1, 1, 0, 0, 0, 1, 1, 0, 0]) * 300.0
|
||||
ys = np.array([0, 0, 1, 1, 0, 0, 0, 1, 1, 0]) * 300.0
|
||||
zs = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1]) * 300.0
|
||||
|
||||
txs, tys, tzs = proj3d.proj_transform(xs, ys, zs, M)
|
||||
|
||||
fig, ax = _test_proj_draw_axes(M, s=400)
|
||||
|
||||
ax.scatter(txs, tys, c=tzs)
|
||||
ax.plot(txs, tys, c='r')
|
||||
for x, y, t in zip(txs, tys, ts):
|
||||
ax.text(x, y, t)
|
||||
|
||||
ax.set_xlim(-0.2, 0.2)
|
||||
ax.set_ylim(-0.2, 0.2)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['proj3d_axes_cube_ortho'],
|
||||
extensions=['png'], remove_text=True, style='default')
|
||||
def test_proj_axes_cube_ortho():
|
||||
E = np.array([200, 100, 100])
|
||||
R = np.array([0, 0, 0])
|
||||
V = np.array([0, 0, 1])
|
||||
viewM = proj3d.view_transformation(E, R, V)
|
||||
orthoM = proj3d.ortho_transformation(-1, 1)
|
||||
M = np.dot(orthoM, viewM)
|
||||
|
||||
ts = '0 1 2 3 0 4 5 6 7 4'.split()
|
||||
xs = np.array([0, 1, 1, 0, 0, 0, 1, 1, 0, 0]) * 100
|
||||
ys = np.array([0, 0, 1, 1, 0, 0, 0, 1, 1, 0]) * 100
|
||||
zs = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1]) * 100
|
||||
|
||||
txs, tys, tzs = proj3d.proj_transform(xs, ys, zs, M)
|
||||
|
||||
fig, ax = _test_proj_draw_axes(M, s=150)
|
||||
|
||||
ax.scatter(txs, tys, s=300-tzs)
|
||||
ax.plot(txs, tys, c='r')
|
||||
for x, y, t in zip(txs, tys, ts):
|
||||
ax.text(x, y, t)
|
||||
|
||||
ax.set_xlim(-200, 200)
|
||||
ax.set_ylim(-200, 200)
|
||||
|
||||
def test_rot():
|
||||
V = [1, 0, 0, 1]
|
||||
rotated_V = proj3d.rot_x(V, np.pi / 6)
|
||||
np.testing.assert_allclose(rotated_V, [1, 0, 0, 1])
|
||||
|
||||
V = [0, 1, 0, 1]
|
||||
rotated_V = proj3d.rot_x(V, np.pi / 6)
|
||||
np.testing.assert_allclose(rotated_V, [0, np.sqrt(3) / 2, 0.5, 1])
|
||||
|
||||
|
||||
def test_world():
|
||||
xmin, xmax = 100, 120
|
||||
ymin, ymax = -100, 100
|
||||
zmin, zmax = 0.1, 0.2
|
||||
M = proj3d.world_transformation(xmin, xmax, ymin, ymax, zmin, zmax)
|
||||
np.testing.assert_allclose(M,
|
||||
[[5e-2, 0, 0, -5],
|
||||
[0, 5e-3, 0, 5e-1],
|
||||
[0, 0, 1e1, -1],
|
||||
[0, 0, 0, 1]])
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['proj3d_lines_dists'], extensions=['png'],
|
||||
remove_text=True, style='default')
|
||||
def test_lines_dists():
|
||||
fig, ax = plt.subplots(figsize=(4, 6), subplot_kw=dict(aspect='equal'))
|
||||
|
||||
xs = (0, 30)
|
||||
ys = (20, 150)
|
||||
ax.plot(xs, ys)
|
||||
p0, p1 = zip(xs, ys)
|
||||
|
||||
xs = (0, 0, 20, 30)
|
||||
ys = (100, 150, 30, 200)
|
||||
ax.scatter(xs, ys)
|
||||
|
||||
dist = proj3d.line2d_seg_dist(p0, p1, (xs[0], ys[0]))
|
||||
dist = proj3d.line2d_seg_dist(p0, p1, np.array((xs, ys)))
|
||||
for x, y, d in zip(xs, ys, dist):
|
||||
c = Circle((x, y), d, fill=0)
|
||||
ax.add_patch(c)
|
||||
|
||||
ax.set_xlim(-50, 150)
|
||||
ax.set_ylim(0, 300)
|
||||
|
||||
|
||||
def test_autoscale():
|
||||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||||
ax.margins(x=0, y=.1, z=.2)
|
||||
ax.plot([0, 1], [0, 1], [0, 1])
|
||||
assert ax.get_w_lims() == (0, 1, -.1, 1.1, -.2, 1.2)
|
||||
ax.autoscale(False)
|
||||
ax.set_autoscalez_on(True)
|
||||
ax.plot([0, 2], [0, 2], [0, 2])
|
||||
assert ax.get_w_lims() == (0, 1, -.1, 1.1, -.4, 2.4)
|
||||
|
||||
|
||||
@image_comparison(baseline_images=['axes3d_ortho'], style='default')
|
||||
def test_axes3d_ortho():
|
||||
fig = plt.figure()
|
||||
ax = fig.gca(projection='3d')
|
||||
ax.set_proj_type('ortho')
|
||||
|
||||
|
||||
@pytest.mark.parametrize('value', [np.inf, np.nan])
|
||||
@pytest.mark.parametrize(('setter', 'side'), [
|
||||
('set_xlim3d', 'left'),
|
||||
('set_xlim3d', 'right'),
|
||||
('set_ylim3d', 'bottom'),
|
||||
('set_ylim3d', 'top'),
|
||||
('set_zlim3d', 'bottom'),
|
||||
('set_zlim3d', 'top'),
|
||||
])
|
||||
def test_invalid_axes_limits(setter, side, value):
|
||||
limit = {side: value}
|
||||
fig = plt.figure()
|
||||
obj = fig.add_subplot(111, projection='3d')
|
||||
with pytest.raises(ValueError):
|
||||
getattr(obj, setter)(**limit)
|
||||
|
||||
|
||||
class TestVoxels(object):
|
||||
@image_comparison(
|
||||
baseline_images=['voxels-simple'],
|
||||
extensions=['png'],
|
||||
remove_text=True
|
||||
)
|
||||
def test_simple(self):
|
||||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||||
|
||||
x, y, z = np.indices((5, 4, 3))
|
||||
voxels = (x == y) | (y == z)
|
||||
ax.voxels(voxels)
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['voxels-edge-style'],
|
||||
extensions=['png'],
|
||||
remove_text=True,
|
||||
style='default'
|
||||
)
|
||||
def test_edge_style(self):
|
||||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||||
|
||||
x, y, z = np.indices((5, 5, 4))
|
||||
voxels = ((x - 2)**2 + (y - 2)**2 + (z-1.5)**2) < 2.2**2
|
||||
v = ax.voxels(voxels, linewidths=3, edgecolor='C1')
|
||||
|
||||
# change the edge color of one voxel
|
||||
v[max(v.keys())].set_edgecolor('C2')
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['voxels-named-colors'],
|
||||
extensions=['png'],
|
||||
remove_text=True
|
||||
)
|
||||
def test_named_colors(self):
|
||||
""" test with colors set to a 3d object array of strings """
|
||||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||||
|
||||
x, y, z = np.indices((10, 10, 10))
|
||||
voxels = (x == y) | (y == z)
|
||||
voxels = voxels & ~(x * y * z < 1)
|
||||
colors = np.zeros((10, 10, 10), dtype=np.object_)
|
||||
colors.fill('C0')
|
||||
colors[(x < 5) & (y < 5)] = '0.25'
|
||||
colors[(x + z) < 10] = 'cyan'
|
||||
ax.voxels(voxels, facecolors=colors)
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['voxels-rgb-data'],
|
||||
extensions=['png'],
|
||||
remove_text=True
|
||||
)
|
||||
def test_rgb_data(self):
|
||||
""" test with colors set to a 4d float array of rgb data """
|
||||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||||
|
||||
x, y, z = np.indices((10, 10, 10))
|
||||
voxels = (x == y) | (y == z)
|
||||
colors = np.zeros((10, 10, 10, 3))
|
||||
colors[...,0] = x/9.0
|
||||
colors[...,1] = y/9.0
|
||||
colors[...,2] = z/9.0
|
||||
ax.voxels(voxels, facecolors=colors)
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['voxels-alpha'],
|
||||
extensions=['png'],
|
||||
remove_text=True
|
||||
)
|
||||
def test_alpha(self):
|
||||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||||
|
||||
x, y, z = np.indices((10, 10, 10))
|
||||
v1 = x == y
|
||||
v2 = np.abs(x - y) < 2
|
||||
voxels = v1 | v2
|
||||
colors = np.zeros((10, 10, 10, 4))
|
||||
colors[v2] = [1, 0, 0, 0.5]
|
||||
colors[v1] = [0, 1, 0, 0.5]
|
||||
v = ax.voxels(voxels, facecolors=colors)
|
||||
|
||||
assert type(v) is dict
|
||||
for coord, poly in v.items():
|
||||
assert voxels[coord], "faces returned for absent voxel"
|
||||
assert isinstance(poly, art3d.Poly3DCollection)
|
||||
|
||||
@image_comparison(
|
||||
baseline_images=['voxels-xyz'],
|
||||
extensions=['png'],
|
||||
tol=0.01
|
||||
)
|
||||
def test_xyz(self):
|
||||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||||
|
||||
def midpoints(x):
|
||||
sl = ()
|
||||
for i in range(x.ndim):
|
||||
x = (x[sl + np.index_exp[:-1]] +
|
||||
x[sl + np.index_exp[1:]]) / 2.0
|
||||
sl += np.index_exp[:]
|
||||
return x
|
||||
|
||||
# prepare some coordinates, and attach rgb values to each
|
||||
r, g, b = np.indices((17, 17, 17)) / 16.0
|
||||
rc = midpoints(r)
|
||||
gc = midpoints(g)
|
||||
bc = midpoints(b)
|
||||
|
||||
# define a sphere about [0.5, 0.5, 0.5]
|
||||
sphere = (rc - 0.5)**2 + (gc - 0.5)**2 + (bc - 0.5)**2 < 0.5**2
|
||||
|
||||
# combine the color components
|
||||
colors = np.zeros(sphere.shape + (3,))
|
||||
colors[..., 0] = rc
|
||||
colors[..., 1] = gc
|
||||
colors[..., 2] = bc
|
||||
|
||||
# and plot everything
|
||||
ax.voxels(r, g, b, sphere,
|
||||
facecolors=colors,
|
||||
edgecolors=np.clip(2*colors - 0.5, 0, 1), # brighter
|
||||
linewidth=0.5)
|
||||
|
||||
def test_calling_conventions(self):
|
||||
x, y, z = np.indices((3, 4, 5))
|
||||
filled = np.ones((2, 3, 4))
|
||||
|
||||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||||
|
||||
# all the valid calling conventions
|
||||
for kw in (dict(), dict(edgecolor='k')):
|
||||
ax.voxels(filled, **kw)
|
||||
ax.voxels(filled=filled, **kw)
|
||||
ax.voxels(x, y, z, filled, **kw)
|
||||
ax.voxels(x, y, z, filled=filled, **kw)
|
||||
|
||||
# duplicate argument
|
||||
with pytest.raises(TypeError) as exc:
|
||||
ax.voxels(x, y, z, filled, filled=filled)
|
||||
exc.match(".*voxels.*")
|
||||
# missing arguments
|
||||
with pytest.raises(TypeError) as exc:
|
||||
ax.voxels(x, y)
|
||||
exc.match(".*voxels.*")
|
||||
# x,y,z are positional only - this passes them on as attributes of
|
||||
# Poly3DCollection
|
||||
with pytest.raises(AttributeError):
|
||||
ax.voxels(filled=filled, x=x, y=y, z=z)
|
||||
|
||||
|
||||
def test_inverted_cla():
|
||||
# Github PR #5450. Setting autoscale should reset
|
||||
# axes to be non-inverted.
|
||||
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
|
||||
# 1. test that a new axis is not inverted per default
|
||||
assert not ax.xaxis_inverted()
|
||||
assert not ax.yaxis_inverted()
|
||||
assert not ax.zaxis_inverted()
|
||||
ax.set_xlim(1, 0)
|
||||
ax.set_ylim(1, 0)
|
||||
ax.set_zlim(1, 0)
|
||||
assert ax.xaxis_inverted()
|
||||
assert ax.yaxis_inverted()
|
||||
assert ax.zaxis_inverted()
|
||||
ax.cla()
|
||||
assert not ax.xaxis_inverted()
|
||||
assert not ax.yaxis_inverted()
|
||||
assert not ax.zaxis_inverted()
|
||||