-
-
Save briochemc/60960829be3ebecdfb3135f8637f2788 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using HTTP, CSV, Plots, DataFrames, Dates | |
# Download the data | |
df = CSV.read(IOBuffer(String(HTTP.get("https://covid.ourworldindata.org/data/total_cases.csv").body)), normalizenames=true) | |
# Plotting function | |
function doit(df, countries, alignment) | |
cp = get_color_palette(:auto, plot_color(:white), length(countries)) | |
plot(legend=false) | |
for (i,country) in enumerate(countries) | |
c = df[:, country] | |
d = map(x -> x.value, df.date .- df.date[findfirst(coalesce.(c,0) .>= alignment)]) | |
plot!(d, c, color=i, yaxis=:log, m=:circle, ms=2, msw=false, lw=2, label="") | |
plot!([d[end]], [c[end]], color=cp[i], yaxis=:log, m=:circle, ms=3, label="") | |
# annotate country next to end point instead of legend | |
annotate!(d[end]+1, c[end], text("$(replace(string(country), "_"=>" "))", 8, :left, :bold, color=cp[i])) | |
end | |
xlabel!("Days since $(alignment)th case") | |
ylabel!("Cumulative number of cases") | |
# pretty lims | |
xlims!(-1, last(xlims())+4) | |
ylims!(alignment*.8, last(ylims())) | |
yticks=vec([1,2,5] * 10 .^ (1:4)') | |
# pretty ticks | |
yticks=yticks[alignment .≤ yticks .≤ maximum(df[end,countries])] | |
plot!(yticks=(yticks, string.(yticks)), xticks=0:7:last(xlims())+4) | |
end | |
function addtrend(df, dailygrowth, alignment) | |
d = 0:last(xlims()) | |
c = alignment * (1 + dailygrowth) .^ (d) | |
plot!(d, c, ls=:dot, color=:gray, lw=2, label="+$(100dailygrowth)% daily") | |
plot!(legend=:bottomright) | |
end | |
# Do it! (plotting the data) | |
doit(df, [:China, :Italy, :France, :Spain, :Australia, :United_States, :United_Kingdom, :Singapore, :South_Korea], 100) | |
addtrend(df, 0.25, 100) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600"> | |
<defs> | |
<clipPath id="clip1500"> | |
<rect x="0" y="0" width="2400" height="1600"/> | |
</clipPath> | |
</defs> | |
<path clip-path="url(#clip1500)" d=" | |
M0 1600 L2400 1600 L2400 0 L0 0 Z | |
" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> | |
<defs> | |
<clipPath id="clip1501"> | |
<rect x="480" y="0" width="1681" height="1600"/> | |
</clipPath> | |
</defs> | |
<path clip-path="url(#clip1500)" d=" | |
M282.66 1425.62 L2352.76 1425.62 L2352.76 47.2441 L282.66 47.2441 Z | |
" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> | |
<defs> | |
<clipPath id="clip1502"> | |
<rect x="282" y="47" width="2071" height="1379"/> | |
</clipPath> | |
</defs> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
314.914,1425.62 314.914,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
540.696,1425.62 540.696,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
766.478,1425.62 766.478,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
992.26,1425.62 992.26,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
1218.04,1425.62 1218.04,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
1443.82,1425.62 1443.82,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
1669.6,1425.62 1669.6,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
1895.39,1425.62 1895.39,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
2121.17,1425.62 2121.17,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
2346.95,1425.62 2346.95,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
282.66,1383.26 2352.76,1383.26 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
282.66,1251.67 2352.76,1251.67 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
282.66,1077.72 2352.76,1077.72 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
282.66,946.134 2352.76,946.134 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
282.66,814.547 2352.76,814.547 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
282.66,640.599 2352.76,640.599 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
282.66,509.012 2352.76,509.012 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
282.66,377.425 2352.76,377.425 | |
"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
282.66,203.476 2352.76,203.476 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,1425.62 2352.76,1425.62 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,1425.62 282.66,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
314.914,1425.62 314.914,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
540.696,1425.62 540.696,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
766.478,1425.62 766.478,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
992.26,1425.62 992.26,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
1218.04,1425.62 1218.04,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
1443.82,1425.62 1443.82,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
1669.6,1425.62 1669.6,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
1895.39,1425.62 1895.39,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
2121.17,1425.62 2121.17,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
2346.95,1425.62 2346.95,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,1383.26 307.501,1383.26 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,1251.67 307.501,1251.67 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,1077.72 307.501,1077.72 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,946.134 307.501,946.134 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,814.547 307.501,814.547 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,640.599 307.501,640.599 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,509.012 307.501,509.012 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,377.425 307.501,377.425 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
282.66,203.476 307.501,203.476 | |
"/> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 314.914, 1479.62)" x="314.914" y="1479.62">0</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 540.696, 1479.62)" x="540.696" y="1479.62">7</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 766.478, 1479.62)" x="766.478" y="1479.62">14</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 992.26, 1479.62)" x="992.26" y="1479.62">21</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 1218.04, 1479.62)" x="1218.04" y="1479.62">28</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 1443.82, 1479.62)" x="1443.82" y="1479.62">35</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 1669.6, 1479.62)" x="1669.6" y="1479.62">42</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 1895.39, 1479.62)" x="1895.39" y="1479.62">49</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 2121.17, 1479.62)" x="2121.17" y="1479.62">56</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 2346.95, 1479.62)" x="2346.95" y="1479.62">63</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 258.66, 1400.76)" x="258.66" y="1400.76">100</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 258.66, 1269.17)" x="258.66" y="1269.17">200</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 258.66, 1095.22)" x="258.66" y="1095.22">500</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 258.66, 963.634)" x="258.66" y="963.634">1000</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 258.66, 832.047)" x="258.66" y="832.047">2000</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 258.66, 658.099)" x="258.66" y="658.099">5000</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 258.66, 526.512)" x="258.66" y="526.512">10000</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 258.66, 394.925)" x="258.66" y="394.925">20000</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 258.66, 220.976)" x="258.66" y="220.976">50000</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;" transform="rotate(0, 1317.71, 1559.48)" x="1317.71" y="1559.48">Days since 100th case</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;" transform="rotate(-90, 89.2861, 736.431)" x="89.2861" y="736.431">Cumulative number of cases</text> | |
</g> | |
<polyline clip-path="url(#clip1502)" style="stroke:#009af9; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
314.914,1189.15 347.169,1168.47 379.424,1051.52 411.678,980.367 443.933,896.766 476.187,815.976 508.442,753.334 540.696,659.046 572.951,606.082 605.205,557.744 | |
637.46,514.403 669.714,477.253 701.969,439.643 734.223,405.638 766.478,373.006 798.732,339.963 830.987,313.142 863.242,292.939 895.496,273.38 927.751,259.354 | |
960.005,244.726 992.26,233.402 1024.51,224.62 1056.77,217.049 1089.02,209.071 1121.28,203.271 1153.53,199.07 1185.79,137.886 1218.04,132.865 1250.3,128.334 | |
1282.55,127.327 1314.81,125.068 1347.06,123.011 1379.31,121.403 1411.57,120.862 1443.82,119.593 1476.08,118.593 1508.33,117.53 1540.59,116.732 1572.84,115.694 | |
1605.1,114.326 1637.35,113.838 1669.6,113.53 1701.86,113.252 1734.11,112.914 1766.37,112.571 1798.62,112.331 1830.88,112.223 1863.13,112.117 1895.39,112.07 | |
1927.64,111.998 1959.9,111.937 1992.15,111.913 2024.4,111.843 2056.66,111.78 2088.91,111.712 2121.17,111.621 | |
"/> | |
<circle clip-path="url(#clip1502)" cx="314.914" cy="1189.15" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="347.169" cy="1168.47" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="379.424" cy="1051.52" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="411.678" cy="980.367" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="443.933" cy="896.766" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="476.187" cy="815.976" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="753.334" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="540.696" cy="659.046" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="572.951" cy="606.082" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="605.205" cy="557.744" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="637.46" cy="514.403" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="669.714" cy="477.253" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="701.969" cy="439.643" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="734.223" cy="405.638" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="766.478" cy="373.006" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="798.732" cy="339.963" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="830.987" cy="313.142" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="863.242" cy="292.939" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="895.496" cy="273.38" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="927.751" cy="259.354" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="960.005" cy="244.726" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="992.26" cy="233.402" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1024.51" cy="224.62" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1056.77" cy="217.049" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1089.02" cy="209.071" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1121.28" cy="203.271" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1153.53" cy="199.07" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1185.79" cy="137.886" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1218.04" cy="132.865" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1250.3" cy="128.334" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1282.55" cy="127.327" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1314.81" cy="125.068" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1347.06" cy="123.011" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1379.31" cy="121.403" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1411.57" cy="120.862" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1443.82" cy="119.593" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1476.08" cy="118.593" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1508.33" cy="117.53" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1540.59" cy="116.732" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1572.84" cy="115.694" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1605.1" cy="114.326" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1637.35" cy="113.838" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1669.6" cy="113.53" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1701.86" cy="113.252" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1734.11" cy="112.914" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1766.37" cy="112.571" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1798.62" cy="112.331" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1830.88" cy="112.223" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1863.13" cy="112.117" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1895.39" cy="112.07" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1927.64" cy="111.998" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1959.9" cy="111.937" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1992.15" cy="111.913" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="2024.4" cy="111.843" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="2056.66" cy="111.78" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="2088.91" cy="111.712" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="2121.17" cy="111.621" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="2121.17" cy="111.621" r="10" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#e26f46; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-459.194,2125.92 -426.94,2125.92 -394.685,2125.92 -362.431,2125.92 -330.176,2125.92 -297.922,2125.92 -265.667,2125.92 -233.413,2048.94 -201.158,2048.94 -168.904,2048.94 | |
-136.649,2048.94 -104.394,2048.94 -72.1399,2048.94 -39.8854,2048.94 -7.63087,2048.94 24.6237,2048.94 56.8782,2048.94 89.1327,2048.94 121.387,2048.94 153.642,2048.94 | |
185.896,2048.94 218.151,2048.94 250.405,1840.38 282.66,1435.36 314.914,1342.42 347.169,1225.96 379.424,1161.26 411.678,1120.08 443.933,1027.91 476.187,968.684 | |
508.442,923.269 540.696,846.632 572.951,811.161 605.205,772.034 637.46,732.024 669.714,689.822 701.969,654.948 734.223,609.725 766.478,566.816 798.732,525.419 | |
830.987,506.204 863.242,467.228 895.496,430.613 927.751,401.046 960.005,366.748 992.26,336.994 1024.51,313.684 | |
"/> | |
<circle clip-path="url(#clip1502)" cx="314.914" cy="1342.42" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="347.169" cy="1225.96" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="379.424" cy="1161.26" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="411.678" cy="1120.08" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="443.933" cy="1027.91" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="476.187" cy="968.684" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="923.269" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="540.696" cy="846.632" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="572.951" cy="811.161" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="605.205" cy="772.034" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="637.46" cy="732.024" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="669.714" cy="689.822" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="701.969" cy="654.948" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="734.223" cy="609.725" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="766.478" cy="566.816" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="798.732" cy="525.419" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="830.987" cy="506.204" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="863.242" cy="467.228" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="895.496" cy="430.613" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="927.751" cy="401.046" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="960.005" cy="366.748" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="992.26" cy="336.994" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1024.51" cy="313.684" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1024.51" cy="313.684" r="10" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#3da44d; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-846.249,2048.94 -813.994,2048.94 -781.74,2048.94 -749.485,2048.94 -717.231,1994.33 -684.976,1951.97 -652.722,1917.35 -620.467,1917.35 -588.212,1917.35 -555.958,1917.35 | |
-523.703,1917.35 -491.449,1917.35 -459.194,1917.35 -426.94,1917.35 -394.685,1917.35 -362.431,1802.29 -330.176,1802.29 -297.922,1802.29 -265.667,1802.29 -233.413,1802.29 | |
-201.158,1802.29 -168.904,1802.29 -136.649,1785.77 -104.394,1785.77 -72.1399,1785.77 -39.8854,1785.77 -7.63087,1785.77 24.6237,1785.77 56.8782,1785.77 89.1327,1785.77 | |
121.387,1785.77 153.642,1785.77 185.896,1785.77 218.151,1708.79 250.405,1566.94 282.66,1489.97 314.914,1383.26 347.169,1383.26 379.424,1260.41 411.678,1240.61 | |
443.933,1186.44 476.187,1110.82 508.442,1039.04 540.696,1012.23 572.951,925.299 605.205,881.987 637.46,837.311 669.714,790.591 701.969,746.646 734.223,700.864 | |
766.478,661.913 798.732,626.693 830.987,588.671 | |
"/> | |
<circle clip-path="url(#clip1502)" cx="314.914" cy="1383.26" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="347.169" cy="1383.26" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="379.424" cy="1260.41" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="411.678" cy="1240.61" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="443.933" cy="1186.44" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="476.187" cy="1110.82" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="1039.04" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="540.696" cy="1012.23" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="572.951" cy="925.299" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="605.205" cy="881.987" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="637.46" cy="837.311" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="669.714" cy="790.591" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="701.969" cy="746.646" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="734.223" cy="700.864" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="766.478" cy="661.913" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="798.732" cy="626.693" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="830.987" cy="588.671" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="830.987" cy="588.671" r="10" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#c271d2; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-684.976,2257.5 -652.722,2257.5 -620.467,2257.5 -588.212,2257.5 -555.958,2257.5 -523.703,2257.5 -491.449,2257.5 -459.194,2257.5 -426.94,2257.5 -394.685,2125.92 | |
-362.431,2125.92 -330.176,2125.92 -297.922,2125.92 -265.667,2125.92 -233.413,2125.92 -201.158,2125.92 -168.904,2125.92 -136.649,2125.92 -104.394,2125.92 -72.1399,2125.92 | |
-39.8854,2125.92 -7.63087,2125.92 24.6237,2125.92 56.8782,2125.92 89.1327,2125.92 121.387,2125.92 153.642,1785.77 185.896,1646.43 218.151,1599.57 250.405,1534.85 | |
282.66,1534.85 314.914,1358.38 347.169,1305.02 379.424,1253.58 411.678,1204.07 443.933,1132.84 476.187,1106.35 508.442,1046.62 540.696,941.632 572.951,852.337 | |
605.205,801.703 637.46,739.802 669.714,672.302 701.969,613.967 734.223,557.327 766.478,525.027 | |
"/> | |
<circle clip-path="url(#clip1502)" cx="314.914" cy="1358.38" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="347.169" cy="1305.02" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="379.424" cy="1253.58" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="411.678" cy="1204.07" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="443.933" cy="1132.84" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="476.187" cy="1106.35" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="1046.62" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="540.696" cy="941.632" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="572.951" cy="852.337" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="605.205" cy="801.703" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="637.46" cy="739.802" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="669.714" cy="672.302" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="701.969" cy="613.967" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="734.223" cy="557.327" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="766.478" cy="525.027" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="766.478" cy="525.027" r="10" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#ac8d18; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-1168.79,2048.94 -1136.54,1994.33 -1104.29,1994.33 -1072.03,1951.97 -1039.78,1888.09 -1007.52,1888.09 -975.267,1840.38 -943.012,1785.77 -910.758,1785.77 -878.503,1785.77 | |
-846.249,1785.77 -813.994,1770.57 -781.74,1756.5 -749.485,1743.41 -717.231,1743.41 -684.976,1743.41 -652.722,1743.41 -620.467,1743.41 -588.212,1743.41 -555.958,1743.41 | |
-523.703,1743.41 -491.449,1743.41 -459.194,1743.41 -426.94,1743.41 -394.685,1743.41 -362.431,1743.41 -330.176,1743.41 -297.922,1719.65 -265.667,1679.53 -233.413,1670.7 | |
-201.158,1670.7 -168.904,1670.7 -136.649,1662.26 -104.394,1662.26 -72.1399,1662.26 -39.8854,1654.18 -7.63087,1646.43 24.6237,1631.82 56.8782,1593.73 89.1327,1543.48 | |
121.387,1489.97 153.642,1489.97 185.896,1474.01 218.151,1440.42 250.405,1432.87 282.66,1399.09 314.914,1361.74 347.169,1345.51 379.424,1319.38 411.678,1254.54 | |
443.933,1210.07 476.187,1175.97 508.442,1132.33 | |
"/> | |
<circle clip-path="url(#clip1502)" cx="282.66" cy="1399.09" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="314.914" cy="1361.74" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="347.169" cy="1345.51" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="379.424" cy="1319.38" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="411.678" cy="1254.54" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="443.933" cy="1210.07" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="476.187" cy="1175.97" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="1132.33" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="1132.33" r="10" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#00a9ad; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-1007.52,2257.5 -975.267,2257.5 -943.012,2125.92 -910.758,2125.92 -878.503,1951.97 -846.249,1951.97 -813.994,1951.97 -781.74,1951.97 -749.485,1917.35 -717.231,1888.09 | |
-684.976,1862.74 -652.722,1802.29 -620.467,1802.29 -588.212,1802.29 -555.958,1785.77 -523.703,1785.77 -491.449,1785.77 -459.194,1785.77 -426.94,1785.77 -394.685,1770.57 | |
-362.431,1770.57 -330.176,1756.5 -297.922,1743.41 -265.667,1743.41 -233.413,1743.41 -201.158,1743.41 -168.904,1743.41 -136.649,1743.41 -104.394,1743.41 -72.1399,1743.41 | |
-39.8854,1582.56 -7.63087,1582.56 24.6237,1582.56 56.8782,1503.78 89.1327,1503.78 121.387,1483.42 153.642,1483.42 185.896,1474.01 218.151,1474.01 250.405,1474.01 | |
282.66,1467.98 314.914,1368.65 347.169,1334.92 379.424,1308.83 411.678,1239.71 443.933,1239.71 476.187,1239.71 508.442,1088.66 540.696,1014.93 572.951,948.618 | |
605.205,901.658 637.46,847.873 669.714,847.873 701.969,847.873 734.223,708.147 | |
"/> | |
<circle clip-path="url(#clip1502)" cx="314.914" cy="1368.65" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="347.169" cy="1334.92" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="379.424" cy="1308.83" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="411.678" cy="1239.71" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="443.933" cy="1239.71" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="476.187" cy="1239.71" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="1088.66" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="540.696" cy="1014.93" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="572.951" cy="948.618" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="605.205" cy="901.658" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="637.46" cy="847.873" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="669.714" cy="847.873" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="701.969" cy="847.873" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="734.223" cy="708.147" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="734.223" cy="708.147" r="10" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#ed5d92; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-781.74,2125.92 -749.485,2125.92 -717.231,2125.92 -684.976,2125.92 -652.722,2125.92 -620.467,2125.92 -588.212,2048.94 -555.958,2048.94 -523.703,2048.94 -491.449,1994.33 | |
-459.194,1862.74 -426.94,1862.74 -394.685,1840.38 -362.431,1840.38 -330.176,1840.38 -297.922,1840.38 -265.667,1840.38 -233.413,1840.38 -201.158,1840.38 -168.904,1840.38 | |
-136.649,1840.38 -104.394,1840.38 -72.1399,1840.38 -39.8854,1840.38 -7.63087,1770.57 24.6237,1770.57 56.8782,1770.57 89.1327,1731.15 121.387,1688.79 153.642,1662.26 | |
185.896,1577.21 218.151,1562.01 250.405,1511.08 282.66,1405.38 314.914,1351.84 347.169,1285.9 379.424,1242.41 411.678,1189.84 443.933,1160.67 476.187,1133.35 | |
508.442,1093.55 540.696,1045.02 572.951,988.022 605.205,920.595 637.46,882.938 669.714,863.304 | |
"/> | |
<circle clip-path="url(#clip1502)" cx="282.66" cy="1405.38" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="314.914" cy="1351.84" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="347.169" cy="1285.9" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="379.424" cy="1242.41" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="411.678" cy="1189.84" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="443.933" cy="1160.67" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="476.187" cy="1133.35" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="1093.55" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="540.696" cy="1045.02" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="572.951" cy="988.022" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="605.205" cy="920.595" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="637.46" cy="882.938" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="669.714" cy="863.304" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="669.714" cy="863.304" r="10" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#c68125; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-878.503,2257.5 -846.249,2048.94 -813.994,1994.33 -781.74,1994.33 -749.485,1888.09 -717.231,1888.09 -684.976,1820.38 -652.722,1770.57 -620.467,1731.15 -588.212,1708.79 | |
-555.958,1708.79 -523.703,1708.79 -491.449,1654.18 -459.194,1624.92 -426.94,1611.82 -394.685,1593.73 -362.431,1557.21 -330.176,1543.48 -297.922,1534.85 -265.667,1526.59 | |
-233.413,1514.84 -201.158,1486.67 -168.904,1459.28 -136.649,1445.62 -104.394,1437.87 -72.1399,1432.87 -39.8854,1423.26 -7.63087,1416.36 24.6237,1414.11 56.8782,1411.89 | |
89.1327,1405.38 121.387,1405.38 153.642,1403.26 185.896,1401.16 218.151,1397.03 250.405,1391.01 282.66,1387.09 314.914,1379.5 347.169,1372.2 379.424,1368.65 | |
411.678,1365.16 443.933,1365.16 476.187,1353.45 508.442,1333.45 540.696,1322.11 572.951,1306.28 605.205,1294.03 637.46,1287.04 669.714,1273.79 701.969,1264.43 | |
734.223,1251.67 766.478,1240.61 798.732,1214.7 830.987,1214.7 | |
"/> | |
<circle clip-path="url(#clip1502)" cx="282.66" cy="1387.09" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="314.914" cy="1379.5" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="347.169" cy="1372.2" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="379.424" cy="1368.65" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="411.678" cy="1365.16" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="443.933" cy="1365.16" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="476.187" cy="1353.45" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="1333.45" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="540.696" cy="1322.11" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="572.951" cy="1306.28" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="605.205" cy="1294.03" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="637.46" cy="1287.04" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="669.714" cy="1273.79" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="701.969" cy="1264.43" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="734.223" cy="1251.67" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="766.478" cy="1240.61" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="798.732" cy="1214.7" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="830.987" cy="1214.7" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="830.987" cy="1214.7" r="10" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#00a98d; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-652.722,2257.5 -620.467,2257.5 -588.212,2257.5 -555.958,2125.92 -523.703,2125.92 -491.449,2125.92 -459.194,1994.33 -426.94,1994.33 -394.685,1994.33 -362.431,1994.33 | |
-330.176,1802.29 -297.922,1785.77 -265.667,1743.41 -233.413,1743.41 -201.158,1731.15 -168.904,1708.79 -136.649,1662.26 -104.394,1654.18 -72.1399,1654.18 -39.8854,1631.82 | |
-7.63087,1631.82 24.6237,1624.92 56.8782,1624.92 89.1327,1624.92 121.387,1624.92 153.642,1624.92 185.896,1618.26 218.151,1611.82 250.405,1605.59 282.66,1511.08 | |
314.914,1375.81 347.169,1247.91 379.424,1147.61 411.678,1042.48 443.933,997.486 476.187,950.552 508.442,902.11 540.696,838.169 572.951,784.985 605.205,728.311 | |
637.46,695.922 669.714,673.156 701.969,647.874 734.223,628.537 766.478,613.539 798.732,597.207 830.987,583.149 863.242,573.123 895.496,566.636 927.751,563.296 | |
960.005,557.278 992.26,554.508 1024.51,551.872 1056.77,549.343 1089.02,547.567 1121.28,545.854 1153.53,543.928 | |
"/> | |
<circle clip-path="url(#clip1502)" cx="314.914" cy="1375.81" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="347.169" cy="1247.91" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="379.424" cy="1147.61" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="411.678" cy="1042.48" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="443.933" cy="997.486" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="476.187" cy="950.552" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="508.442" cy="902.11" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="540.696" cy="838.169" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="572.951" cy="784.985" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="605.205" cy="728.311" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="637.46" cy="695.922" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="669.714" cy="673.156" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="701.969" cy="647.874" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="734.223" cy="628.537" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="766.478" cy="613.539" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="798.732" cy="597.207" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="830.987" cy="583.149" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="863.242" cy="573.123" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="895.496" cy="566.636" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="927.751" cy="563.296" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="960.005" cy="557.278" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="992.26" cy="554.508" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1024.51" cy="551.872" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1056.77" cy="549.343" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1089.02" cy="547.567" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1121.28" cy="545.854" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1153.53" cy="543.928" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1502)" cx="1153.53" cy="543.928" r="10" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1502)" style="stroke:#808080; stroke-width:8; stroke-opacity:1; fill:none" stroke-dasharray="4, 8" points=" | |
314.914,1383.26 347.169,1340.9 379.424,1298.53 411.678,1256.17 443.933,1213.81 476.187,1171.45 508.442,1129.09 540.696,1086.73 572.951,1044.36 605.205,1002 | |
637.46,959.641 669.714,917.28 701.969,874.918 734.223,832.557 766.478,790.195 798.732,747.834 830.987,705.472 863.242,663.11 895.496,620.749 927.751,578.387 | |
960.005,536.026 992.26,493.664 1024.51,451.303 1056.77,408.941 1089.02,366.579 1121.28,324.218 1153.53,281.856 1185.79,239.495 1218.04,197.133 1250.3,154.772 | |
1282.55,112.41 1314.81,70.0485 1347.06,27.6869 1379.31,-14.6746 1411.57,-57.0362 1443.82,-99.3978 1476.08,-141.759 1508.33,-184.121 1540.59,-226.482 1572.84,-268.844 | |
1605.1,-311.206 1637.35,-353.567 1669.6,-395.929 1701.86,-438.29 1734.11,-480.652 1766.37,-523.013 1798.62,-565.375 1830.88,-607.737 1863.13,-650.098 1895.39,-692.46 | |
1927.64,-734.821 1959.9,-777.183 1992.15,-819.544 2024.4,-861.906 2056.66,-904.268 2088.91,-946.629 2121.17,-988.991 2153.42,-1031.35 2185.68,-1073.71 2217.93,-1116.08 | |
2250.19,-1158.44 2282.44,-1200.8 2314.7,-1243.16 2346.95,-1285.52 | |
"/> | |
<path clip-path="url(#clip1500)" d=" | |
M1763.84 1281.62 L2280.76 1281.62 L2280.76 1160.66 L1763.84 1160.66 Z | |
" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
1763.84,1281.62 2280.76,1281.62 2280.76,1160.66 1763.84,1160.66 1763.84,1281.62 | |
"/> | |
<polyline clip-path="url(#clip1500)" style="stroke:#808080; stroke-width:8; stroke-opacity:1; fill:none" stroke-dasharray="4, 8" points=" | |
1787.84,1221.14 1931.84,1221.14 | |
"/> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 1955.84, 1238.64)" x="1955.84" y="1238.64">+25.0% daily</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#009af9; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 2153.42, 129.121)" x="2153.42" y="129.121">China</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#e26f46; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 1056.77, 331.184)" x="1056.77" y="331.184">Italy</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#3da44d; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 863.242, 606.171)" x="863.242" y="606.171">France</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#c271d2; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 798.732, 542.527)" x="798.732" y="542.527">Spain</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#ac8d18; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 540.696, 1149.83)" x="540.696" y="1149.83">Australia</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#00a9ad; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 766.478, 725.647)" x="766.478" y="725.647">United States</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#ed5d92; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 701.969, 880.804)" x="701.969" y="880.804">United Kingdom</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#c68125; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 863.242, 1232.2)" x="863.242" y="1232.2">Singapore</text> | |
</g> | |
<g clip-path="url(#clip1500)"> | |
<text style="fill:#00a98d; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 1185.79, 561.428)" x="1185.79" y="561.428">South Korea</text> | |
</g> | |
</svg> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using HTTP, CSV, Plots, DataFrames | |
# Download the data | |
df = CSV.read(IOBuffer(String(HTTP.get("https://covid.ourworldindata.org/data/total_deaths.csv").body)), normalizenames=true) | |
# Plotting function | |
function doit(df, countries, alignment) | |
countries = countries[findall(map(x -> ismissing(x) ? false : x > alignment, Vector(df[end, countries])))] | |
cp = get_color_palette(:auto, plot_color(:white), length(countries)) | |
plot(legend=false) | |
for (i, country) in enumerate(countries) | |
c = df[:, country] | |
(c[end] isa Missing || c[end] < alignment) && continue | |
d = map(x -> x.value, df.date .- df.date[findfirst(coalesce.(c,0) .>= alignment)]) | |
plot!(d, c, color=cp[i], yaxis=:log, m=:circle, ms=2, msw=false, lw=2, label="") | |
plot!([d[end]], [c[end]], color=cp[i], yaxis=:log, m=:circle, ms=3, label="") | |
# annotate country next to end point instead of legend | |
annotate!(d[end]+1, c[end], text("$(replace(string(country), "_"=>" "))", 8, :left, :bold, color=cp[i])) | |
end | |
xlabel!("Days since $(alignment)th death") | |
ylabel!("Cumulative number of deaths") | |
# pretty lims | |
xlims!(-1, last(xlims())+4) | |
ylims!(alignment*.8, last(ylims())) | |
# pretty ticks | |
yticks=vec([1,2,5] * 10 .^ (0:4)') | |
yticks=yticks[alignment .≤ yticks .≤ maximum(df[end,countries])] | |
plot!(yticks=(yticks, string.(yticks)), xticks=0:7:last(xlims())+4) | |
end | |
function addtrend(df, dailygrowth, alignment) | |
d = 0:last(xlims()) | |
c = alignment * (1 + dailygrowth) .^ (d) | |
plot!(d, c, ls=:dot, color=:gray, lw=2, label="+$(100dailygrowth)% daily") | |
plot!(legend=:bottomright) | |
end | |
# Do it! (plotting the data) | |
doit(df, names(df)[3:end], 10) | |
addtrend(df, 0.25, 10) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using HTTP, CSV, Plots, DataFrames, Dates | |
file_url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv" | |
# Download the data | |
df = CSV.read(IOBuffer(String(HTTP.get(file_url).body)), normalizenames=true, header=2, transpose=true, datarow=5) | |
const allcountries = unique(replace.(string.(names(df)), r"_\d*$"=>""))[2:end] | |
# Plotting function | |
function doit(df, countries, lockdowndict=Dict(); Δdays=1) | |
cp = get_color_palette(:auto, plot_color(:white), length(countries)) | |
plot(xaxis=:log, yaxis=:log) | |
for country in allcountries | |
country == "Cruise_Ship" && continue | |
country == "Diamond_Princess" && continue | |
i = findfirst(Symbol(country) .== countries) | |
if i isa Nothing | |
color, m, ms, α, mα, lw, fs = RGBA{Float64}(0,0,0,0.1), 0, 0, 0.1, 0, 1, 4 | |
elseif country == "Australia" | |
color, m, ms, α, mα, lw, fs = cp[i], :star, 4, 1, 0, 4, 12 | |
else | |
color, m, ms, α, mα, lw, fs = cp[i], :circle, 2, 0.5, 0, 2, 8 | |
end | |
cases = Float64.(sum(eachcol(select(df, occursin.(string(country), string.(names(df))))))) | |
Δcases = cases[1+Δdays:end] - cases[1:end-Δdays] | |
cases = cases[1+Δdays:end] | |
ikeep = findall((cases .> 0) .& (Δcases .> 0)) | |
cases = cases[ikeep] | |
Δcases = Δcases[ikeep] | |
(any(Δcases .≤ 0) || length(ikeep) == 0) && continue | |
plot!(cases, Δcases, color=color, m=m, ms=ms, msw=0, lw=lw, α=α, mα=mα, label="") | |
plot!([cases[end]], [Δcases[end]], color=color, m=m, α=1, ms=ms+1, msw=0, label="") | |
# annotate country next to end point instead of legend | |
cases[end] > 30 && Δcases[end] > 10 && annotate!(cases[end] * 1.1, Δcases[end], text("$(replace(string(country), "_"=>" "))", fs, :left, :bold, color=color)) | |
end | |
# axis labels | |
xlabel!("Total confirmed cases") | |
ylabel!("Δcases over $Δdays days") | |
# pretty lims | |
ticks=vec([1,3] * 10 .^ (0:5)') | |
plot!(xlims=(30,last(xlims()))) | |
plot!(ylims=(10,last(ylims()))) | |
xticks = ticks[first(xlims()) .≤ ticks .≤ last(xlims())] | |
yticks = ticks[first(ylims()) .≤ ticks .≤ last(ylims())] | |
# pretty ticks | |
plot!(xticks=(xticks, addprefix.(string.(xticks))), yticks=(yticks, addprefix.(string.(yticks)))) | |
Δx, cstart = collect(xlims()), 300 | |
growth(Δx, cstart, 1, Δdays, :solid) | |
growth(Δx, cstart, 3, Δdays, :dash, "") | |
growth(Δx, cstart, 7, Δdays, :dashdot, "") | |
growth(Δx, cstart, 21, Δdays, :dot, "") | |
plot!(legend=:topleft, legendtitle="Doubling time") | |
end | |
Δc_vs_c(c, τ, Δdays) = (1 - 0.5^(Δdays/τ)) .* c | |
function growth(Δx, cstart, τ, Δdays, ls, str=" in $Δdays days") | |
α = log(2) / τ | |
c = cstart * exp.(α*Δdays*[0,1]) | |
plot!(Δx, Δc_vs_c(Δx, τ, Δdays), ls=ls, color=:gray, lw=1, label="$τ days") | |
plot!(c, Δc_vs_c(c, τ, Δdays), m=[:circle, :dtriangle], ms=2, ls=:solid, color=:black, lw=1, label="") | |
str = "×$(round(c[end]/c[1], digits=1))$str" | |
if length(str) > 10 | |
annotate!(c[end] * 0.8, Δc_vs_c(c, τ, Δdays)[end], text(str, 8, :right, color=:black)) | |
else | |
annotate!(c[end] * 1.1, Δc_vs_c(c, τ, Δdays)[end], text(str, 8, :left, color=:black)) | |
end | |
end | |
function addprefix(s) | |
s = replace(s, r"(.*)000000000$"=>s"\1G") | |
s = replace(s, r"(.*)000000$"=>s"\1M") | |
s = replace(s, r"(.*)000$"=>s"\1k") | |
return s | |
end | |
function addtrend(xlims, trend, Δdays) | |
plot!(collect(xlims), trend * Δdays * collect(xlims), ls=:dot, color=:gray, lw=2, label="+$(100trend)%", legend=:topleft) | |
end | |
function adddoublingtime(Δx, τ, Δdays) | |
plot!(Δx, Δx * 1 ./ τ' * Δdays, ls=:dot, color=:gray, lw=2, label=string.(τ, " days"), legend=:topleft) | |
end | |
lockdowndict = Dict( | |
:Australia => nothing, | |
:Italy => Date("9 March 2020", dateformat"d U Y"), | |
:France => Date("16 March 2020", dateformat"d U Y"), | |
:China => Date("23 January 2020", dateformat"d U Y"), | |
) | |
# Do it! (plotting the data) | |
#countries = [:China, :Canada, :Turkey, :India, :Iraq, :Bahrain, :Iran, :Germany, :Switzerland, :Netherlands, :Belgium, :Italy, :France, :Spain, :Australia, :US, :United_Kingdom, :Singapore, :Korea_South, :Japan, :Norway, :Finland, :Sweden] | |
countries = [:China, :Canada, :Italy, :France, :Spain, :Australia, :US, :United_Kingdom, :Singapore, :Korea_South, :Japan] | |
doit(df, countries, lockdowndict; Δdays=3) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using HTTP, CSV, Plots, DataFrames, Dates | |
file_url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv" | |
# Download the data | |
df = CSV.read(IOBuffer(String(HTTP.get(file_url).body)), normalizenames=true, header=2, transpose=true, datarow=5) | |
const allcountries = unique(replace.(string.(names(df)), r"_\d*$"=>""))[2:end] | |
# Plotting function | |
function doit(df, countries, alignment, lockdowndict=Dict()) | |
cp = get_color_palette(:auto, plot_color(:white), length(countries)) | |
plot(legend=false, yaxis=:log) | |
dates = Date.(df.Country_Region, dateformat"mm/dd/yy") .+ Year(2000) | |
days = [d.value for d in (dates .- dates[1])] | |
n = length(days) | |
for country in allcountries | |
country == "Cruise_Ship" && continue | |
i = findfirst(Symbol(country) .== countries) | |
if i isa Nothing | |
color, m, ms, α, ma, lw, fs = RGBA{Float64}(0,0,0,0.1), 0, 0, 0.1, 0, 1, 4 | |
elseif country == "Australia" | |
color, m, ms, α, ma, lw, fs = cp[i], :star, 4, 1, 0, 4, 12 | |
else | |
color, m, ms, α, ma, lw, fs = cp[i], :circle, 2, 0.5, 0, 2, 8 | |
end | |
cases = Float64.(sum(eachcol(select(df, occursin.(string(country), string.(names(df))))))) | |
# alignment by interpolating | |
if cases[1] > alignment | |
baseline = -cases[1] / (cases[2] - cases[1]) | |
elseif cases[end] < alignment | |
continue | |
else | |
ialign = findlast(cases .< alignment) | |
baseline = ialign + (alignment - cases[ialign]) / (cases[ialign+1] - cases[ialign]) - 1 | |
end | |
# don't plot 0 values | |
cases[cases .== 0] .= NaN | |
plot!(days .- baseline, cases, color=color, m=m, ms=ms, msw=0, lw=lw, alpha=α, ma=ma, label="") | |
plot!([days[end] - baseline], [cases[end]], color=color, m=m, alpha=1, ms=ms+1, msw=0, label="") | |
# annotate country next to end point instead of legend | |
annotate!(days[end] - baseline + 0.5, cases[end], text("$(replace(string(country), "_"=>" "))", fs, :left, :bold, color=color)) | |
end | |
# axis labels | |
xlabel!("Days since $(alignment)th case") | |
ylabel!("Cumulative number of cases") | |
# pretty lims | |
xlims!(0, last(xlims())+4) | |
ylims!(alignment, last(ylims())) | |
yticks=vec([1,2,5] * 10 .^ (1:4)') | |
# pretty ticks | |
yticks=yticks[first(ylims()) .≤ yticks .≤ last(ylims())] | |
plot!(yticks=(yticks, string.(yticks)), xticks=0:7:last(xlims())+4) | |
end | |
lockdowndict = Dict( | |
:Australia => nothing, | |
:Italy => Date("9 March 2020", dateformat"d U Y"), | |
:France => Date("16 March 2020", dateformat"d U Y"), | |
:China => Date("23 January 2020", dateformat"d U Y"), | |
) | |
function addtrend(dailygrowth, alignment) | |
d = 0:last(xlims()) | |
c = alignment * (1 + dailygrowth) .^ (d) | |
plot!(d, c, ls=:dot, color=:gray, lw=2, label="+$(100dailygrowth)% daily") | |
plot!(legend=:bottomright) | |
end | |
# Do it! (plotting the data) | |
countries = [:China, :Turkey, :India, :Iraq, :Bahrain, :Iran, :Germany, :Switzerland, :Netherlands, :Belgium, :Italy, :France, :Spain, :Australia, :US, :United_Kingdom, :Singapore, :Korea_South, :Japan, :Norway, :Finland, :Sweden] | |
doit(df, countries, 100, lockdowndict) | |
addtrend(0.25, 100) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
First output "Will Australia be like current Italy in ~3 weeks?"
Second output: All death cases above 10