-
-
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
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
<?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="clip1800"> | |
<rect x="0" y="0" width="2400" height="1600"/> | |
</clipPath> | |
</defs> | |
<path clip-path="url(#clip1800)" d=" | |
M0 1600 L2400 1600 L2400 0 L0 0 Z | |
" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> | |
<defs> | |
<clipPath id="clip1801"> | |
<rect x="480" y="0" width="1681" height="1600"/> | |
</clipPath> | |
</defs> | |
<path clip-path="url(#clip1800)" d=" | |
M255.898 1425.62 L2352.76 1425.62 L2352.76 47.2441 L255.898 47.2441 Z | |
" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> | |
<defs> | |
<clipPath id="clip1802"> | |
<rect x="255" y="47" width="2098" height="1379"/> | |
</clipPath> | |
</defs> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
289.571,1425.62 289.571,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
525.287,1425.62 525.287,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
761.002,1425.62 761.002,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
996.718,1425.62 996.718,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
1232.43,1425.62 1232.43,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
1468.15,1425.62 1468.15,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
1703.86,1425.62 1703.86,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
1939.58,1425.62 1939.58,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
2175.3,1425.62 2175.3,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
255.898,1376.36 2352.76,1376.36 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
255.898,1223.33 2352.76,1223.33 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
255.898,1021.04 2352.76,1021.04 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
255.898,868.017 2352.76,868.017 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
255.898,714.991 2352.76,714.991 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
255.898,512.703 2352.76,512.703 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
255.898,359.678 2352.76,359.678 | |
"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none" points=" | |
255.898,206.653 2352.76,206.653 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,1425.62 2352.76,1425.62 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,1425.62 255.898,47.2441 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
289.571,1425.62 289.571,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
525.287,1425.62 525.287,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
761.002,1425.62 761.002,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
996.718,1425.62 996.718,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
1232.43,1425.62 1232.43,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
1468.15,1425.62 1468.15,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
1703.86,1425.62 1703.86,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
1939.58,1425.62 1939.58,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
2175.3,1425.62 2175.3,1409.08 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,1376.36 281.06,1376.36 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,1223.33 281.06,1223.33 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,1021.04 281.06,1021.04 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,868.017 281.06,868.017 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,714.991 281.06,714.991 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,512.703 281.06,512.703 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,359.678 281.06,359.678 | |
"/> | |
<polyline clip-path="url(#clip1800)" style="stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none" points=" | |
255.898,206.653 281.06,206.653 | |
"/> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 289.571, 1479.62)" x="289.571" y="1479.62">0</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 525.287, 1479.62)" x="525.287" y="1479.62">7</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 761.002, 1479.62)" x="761.002" y="1479.62">14</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 996.718, 1479.62)" x="996.718" y="1479.62">21</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 1232.43, 1479.62)" x="1232.43" y="1479.62">28</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 1468.15, 1479.62)" x="1468.15" y="1479.62">35</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 1703.86, 1479.62)" x="1703.86" y="1479.62">42</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 1939.58, 1479.62)" x="1939.58" y="1479.62">49</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;" transform="rotate(0, 2175.3, 1479.62)" x="2175.3" y="1479.62">56</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 231.898, 1393.86)" x="231.898" y="1393.86">10</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 231.898, 1240.83)" x="231.898" y="1240.83">20</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 231.898, 1038.54)" x="231.898" y="1038.54">50</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 231.898, 885.517)" x="231.898" y="885.517">100</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 231.898, 732.491)" x="231.898" y="732.491">200</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 231.898, 530.203)" x="231.898" y="530.203">500</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 231.898, 377.178)" x="231.898" y="377.178">1000</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;" transform="rotate(0, 231.898, 224.153)" x="231.898" y="224.153">2000</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;" transform="rotate(0, 1304.33, 1559.48)" x="1304.33" y="1559.48">Days since 10th death</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<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 deaths</text> | |
</g> | |
<polyline clip-path="url(#clip1802)" style="stroke:#009af9; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
222.224,1489.13 255.898,1489.13 289.571,1259.21 323.245,1174.07 356.919,1064.85 390.592,996.022 424.266,917.28 457.94,855.153 491.613,806.724 525.287,750.871 | |
558.96,701.089 592.634,657.92 626.308,622.553 659.981,584.614 693.655,548.582 727.329,516.713 761.002,486.112 794.676,459.241 828.35,431.283 862.023,405.654 | |
895.697,380.741 929.371,355.956 963.044,335.844 996.718,290.5 1030.39,288.412 1064.07,266.659 1097.74,246.992 1131.41,233.374 1165.09,221.49 1198.76,205.991 | |
1232.43,193.685 1266.11,181.732 1299.78,171.238 1333.45,162.301 1367.13,149.156 1400.8,143.197 1434.48,138.932 1468.15,136.589 1501.82,133.081 1535.5,129.394 | |
1569.17,126.688 1602.84,123.484 1636.52,121.149 1670.19,118.319 1703.86,116.037 1737.54,113.852 1771.21,111.831 1804.89,109.9 1838.56,108.268 1872.23,107.069 | |
1905.91,105.528 1939.58,104.761 1973.25,104.275 2006.93,103.305 2040.6,102.615 2074.27,101.652 2107.95,100.762 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1259.21" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1174.07" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1064.85" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="996.022" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="424.266" cy="917.28" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="457.94" cy="855.153" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="491.613" cy="806.724" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="525.287" cy="750.871" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="558.96" cy="701.089" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="592.634" cy="657.92" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="626.308" cy="622.553" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="659.981" cy="584.614" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="693.655" cy="548.582" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="727.329" cy="516.713" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="761.002" cy="486.112" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="794.676" cy="459.241" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="828.35" cy="431.283" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="862.023" cy="405.654" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="895.697" cy="380.741" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="929.371" cy="355.956" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="963.044" cy="335.844" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="996.718" cy="290.5" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1030.39" cy="288.412" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1064.07" cy="266.659" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1097.74" cy="246.992" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1131.41" cy="233.374" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1165.09" cy="221.49" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1198.76" cy="205.991" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1232.43" cy="193.685" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1266.11" cy="181.732" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1299.78" cy="171.238" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1333.45" cy="162.301" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1367.13" cy="149.156" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1400.8" cy="143.197" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1434.48" cy="138.932" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1468.15" cy="136.589" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1501.82" cy="133.081" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1535.5" cy="129.394" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1569.17" cy="126.688" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1602.84" cy="123.484" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1636.52" cy="121.149" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1670.19" cy="118.319" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1703.86" cy="116.037" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1737.54" cy="113.852" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1771.21" cy="111.831" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1804.89" cy="109.9" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1838.56" cy="108.268" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1872.23" cy="107.069" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1905.91" cy="105.528" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1939.58" cy="104.761" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="1973.25" cy="104.275" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="2006.93" cy="103.305" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="2040.6" cy="102.615" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="2074.27" cy="101.652" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="2107.95" cy="100.762" r="7" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="2107.95" cy="100.762" r="10" fill="#009af9" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#e26f46; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-417.575,1884.69 -383.902,1884.69 -350.228,1884.69 -316.554,1884.69 -282.881,1884.69 -249.207,1884.69 -215.534,1884.69 -181.86,1884.69 -148.186,1884.69 -114.513,1884.69 | |
-80.8389,1884.69 -47.1653,1731.67 -13.4916,1731.67 20.182,1731.67 53.8557,1731.67 87.5293,1731.67 121.203,1642.16 154.877,1578.64 188.55,1578.64 222.224,1489.13 | |
255.898,1399.62 289.571,1376.36 323.245,1234.65 356.919,1133.82 390.592,1112.77 424.266,1030.05 457.94,977.142 491.613,920.057 525.287,888.838 558.96,815.249 | |
592.634,781.466 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="255.898" cy="1399.62" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1376.36" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1234.65" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1133.82" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1112.77" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="424.266" cy="1030.05" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="457.94" cy="977.142" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="491.613" cy="920.057" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="525.287" cy="888.838" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="558.96" cy="815.249" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="592.634" cy="781.466" r="7" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="592.634" cy="781.466" r="10" fill="#e26f46" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#3da44d; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
87.5293,1731.67 121.203,1731.67 154.877,1642.16 188.55,1489.13 222.224,1489.13 255.898,1425.62 289.571,1336.1 323.245,1318.43 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="255.898" cy="1425.62" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1336.1" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1318.43" r="7" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1318.43" r="10" fill="#3da44d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#c271d2; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
121.203,1731.67 154.877,1731.67 188.55,1578.64 222.224,1529.38 255.898,1425.62 289.571,1336.1 323.245,1286.84 356.919,1202.29 390.592,1165.41 424.266,1106.18 | |
457.94,1054.34 491.613,1004.05 525.287,959.749 558.96,925.718 592.634,886.425 626.308,853.08 659.981,820.527 693.655,785.987 727.329,721.716 761.002,677.518 | |
794.676,632.202 828.35,588.937 862.023,546.514 895.697,506.606 929.371,469.528 963.044,394.779 996.718,394.779 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="255.898" cy="1425.62" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1336.1" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1286.84" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1202.29" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1165.41" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="424.266" cy="1106.18" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="457.94" cy="1054.34" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="491.613" cy="1004.05" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="525.287" cy="959.749" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="558.96" cy="925.718" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="592.634" cy="886.425" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="626.308" cy="853.08" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="659.981" cy="820.527" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="693.655" cy="785.987" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="727.329" cy="721.716" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="761.002" cy="677.518" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="794.676" cy="632.202" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="828.35" cy="588.937" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="862.023" cy="546.514" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="895.697" cy="506.606" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="929.371" cy="469.528" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="963.044" cy="394.779" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="996.718" cy="394.779" r="7" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="996.718" cy="394.779" r="10" fill="#c271d2" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#ac8d18; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
188.55,1731.67 222.224,1731.67 255.898,1489.13 289.571,1355.31 323.245,1336.1 356.919,1259.21 390.592,1212.56 424.266,1141.3 457.94,1099.78 491.613,1012.38 | |
525.287,917.28 558.96,853.08 592.634,781.466 626.308,718.328 659.981,680.33 693.655,581.577 727.329,529.676 761.002,461.331 794.676,401.613 828.35,356.173 | |
862.023,307.258 895.697,279.023 929.371,228.812 963.044,157.125 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1355.31" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1336.1" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1259.21" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1212.56" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="424.266" cy="1141.3" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="457.94" cy="1099.78" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="491.613" cy="1012.38" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="525.287" cy="917.28" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="558.96" cy="853.08" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="592.634" cy="781.466" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="626.308" cy="718.328" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="659.981" cy="680.33" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="693.655" cy="581.577" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="727.329" cy="529.676" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="761.002" cy="461.331" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="794.676" cy="401.613" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="828.35" cy="356.173" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="862.023" cy="307.258" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="895.697" cy="279.023" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="929.371" cy="228.812" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="963.044" cy="157.125" r="7" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="963.044" cy="157.125" r="10" fill="#ac8d18" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#00a9ad; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-585.944,1884.69 -552.27,1884.69 -518.596,1884.69 -484.923,1884.69 -451.249,1884.69 -417.575,1884.69 -383.902,1884.69 -350.228,1884.69 -316.554,1884.69 -282.881,1884.69 | |
-249.207,1884.69 -215.534,1884.69 -181.86,1884.69 -148.186,1642.16 -114.513,1578.64 -80.8389,1529.38 -47.1653,1529.38 -13.4916,1489.13 20.182,1489.13 53.8557,1489.13 | |
87.5293,1489.13 121.203,1489.13 154.877,1489.13 188.55,1489.13 222.224,1455.1 255.898,1399.62 289.571,1336.1 323.245,1286.84 356.919,1234.65 390.592,1212.56 | |
424.266,1202.29 457.94,1183.08 491.613,1149.05 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="255.898" cy="1399.62" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1336.1" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1286.84" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1234.65" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1212.56" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="424.266" cy="1202.29" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="457.94" cy="1183.08" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="491.613" cy="1149.05" r="7" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="491.613" cy="1149.05" r="10" fill="#00a9ad" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#ed5d92; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
53.8557,1884.69 87.5293,1884.69 121.203,1642.16 154.877,1642.16 188.55,1578.64 222.224,1529.38 255.898,1529.38 289.571,1376.36 323.245,1336.1 356.919,1223.33 | |
390.592,1183.08 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1376.36" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1336.1" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1223.33" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1183.08" r="7" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1183.08" r="10" fill="#ed5d92" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#c68125; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-1158.4,1884.69 -1124.72,1884.69 -1091.05,1884.69 -1057.37,1884.69 -1023.7,1884.69 -990.028,1884.69 -956.354,1884.69 -922.68,1884.69 -889.007,1884.69 -855.333,1884.69 | |
-821.659,1884.69 -787.986,1884.69 -754.312,1884.69 -720.638,1884.69 -686.965,1884.69 -653.291,1884.69 -619.617,1884.69 -585.944,1884.69 -552.27,1884.69 -518.596,1884.69 | |
-484.923,1884.69 -451.249,1884.69 -417.575,1884.69 -383.902,1884.69 -350.228,1884.69 -316.554,1884.69 -282.881,1884.69 -249.207,1884.69 -215.534,1884.69 -181.86,1884.69 | |
-148.186,1884.69 -114.513,1884.69 -80.8389,1884.69 -47.1653,1884.69 -13.4916,1884.69 20.182,1884.69 53.8557,1884.69 87.5293,1884.69 121.203,1884.69 154.877,1731.67 | |
188.55,1731.67 222.224,1731.67 255.898,1489.13 289.571,1336.1 323.245,1336.1 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1336.1" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1336.1" r="7" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1336.1" r="10" fill="#c68125" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#00a98d; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
121.203,1884.69 154.877,1884.69 188.55,1731.67 222.224,1529.38 255.898,1455.1 289.571,1376.36 323.245,1336.1 356.919,1318.43 390.592,1318.43 424.266,1259.21 | |
457.94,1246.59 491.613,1202.29 525.287,1149.05 558.96,1119.57 592.634,1099.78 626.308,1059.53 659.981,1049.26 693.655,1021.04 727.329,1016.67 761.002,1004.05 | |
794.676,980.791 828.35,959.749 862.023,959.749 895.697,940.54 929.371,931.528 963.044,931.528 996.718,914.537 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1376.36" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1336.1" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1318.43" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1318.43" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="424.266" cy="1259.21" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="457.94" cy="1246.59" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="491.613" cy="1202.29" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="525.287" cy="1149.05" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="558.96" cy="1119.57" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="592.634" cy="1099.78" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="626.308" cy="1059.53" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="659.981" cy="1049.26" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="693.655" cy="1021.04" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="727.329" cy="1016.67" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="761.002" cy="1004.05" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="794.676" cy="980.791" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="828.35" cy="959.749" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="862.023" cy="959.749" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="895.697" cy="940.54" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="929.371" cy="931.528" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="963.044" cy="931.528" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="996.718" cy="914.537" r="7" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="996.718" cy="914.537" r="10" fill="#00a98d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#8e971d; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
154.877,1884.69 188.55,1642.16 222.224,1529.38 255.898,1529.38 289.571,1376.36 323.245,1149.05 356.919,1093.57 390.592,1030.05 424.266,906.508 457.94,827.766 | |
491.613,800.134 525.287,634.49 558.96,618.952 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1376.36" r="7" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1149.05" r="7" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1093.57" r="7" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1030.05" r="7" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="424.266" cy="906.508" r="7" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="457.94" cy="827.766" r="7" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="491.613" cy="800.134" r="7" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="525.287" cy="634.49" r="7" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="558.96" cy="618.952" r="7" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="558.96" cy="618.952" r="10" fill="#8e971d" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#00a8cb; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
-13.4916,1884.69 20.182,1884.69 53.8557,1731.67 87.5293,1731.67 121.203,1731.67 154.877,1642.16 188.55,1578.64 222.224,1489.13 255.898,1489.13 289.571,1355.31 | |
323.245,1318.43 356.919,1302.07 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1355.31" r="7" fill="#00a8cb" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1318.43" r="7" fill="#00a8cb" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1302.07" r="7" fill="#00a8cb" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1302.07" r="10" fill="#00a8cb" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#9b7fe8; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
53.8557,1884.69 87.5293,1731.67 121.203,1731.67 154.877,1642.16 188.55,1489.13 222.224,1489.13 255.898,1425.62 289.571,1376.36 323.245,1212.56 356.919,1099.78 | |
390.592,1000 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="255.898" cy="1425.62" r="7" fill="#9b7fe8" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1376.36" r="7" fill="#9b7fe8" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1212.56" r="7" fill="#9b7fe8" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1099.78" r="7" fill="#9b7fe8" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1000" r="7" fill="#9b7fe8" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1000" r="10" fill="#9b7fe8" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#608cf6; stroke-width:8; stroke-opacity:1; fill:none" points=" | |
188.55,1731.67 222.224,1489.13 255.898,1399.62 289.571,1376.36 323.245,1355.31 356.919,1355.31 390.592,1355.31 424.266,1234.65 457.94,1174.07 491.613,1141.3 | |
525.287,1093.57 558.96,1064.85 592.634,1064.85 626.308,1064.85 659.981,988.275 | |
"/> | |
<circle clip-path="url(#clip1802)" cx="255.898" cy="1399.62" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="289.571" cy="1376.36" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="323.245" cy="1355.31" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="356.919" cy="1355.31" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="390.592" cy="1355.31" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="424.266" cy="1234.65" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="457.94" cy="1174.07" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="491.613" cy="1141.3" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="525.287" cy="1093.57" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="558.96" cy="1064.85" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="592.634" cy="1064.85" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="626.308" cy="1064.85" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="659.981" cy="988.275" r="7" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="0"/> | |
<circle clip-path="url(#clip1802)" cx="659.981" cy="988.275" r="10" fill="#608cf6" fill-rule="evenodd" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="3.2"/> | |
<polyline clip-path="url(#clip1802)" style="stroke:#808080; stroke-width:8; stroke-opacity:1; fill:none" stroke-dasharray="4, 8" points=" | |
289.571,1376.36 323.245,1327.09 356.919,1277.83 390.592,1228.57 424.266,1179.3 457.94,1130.04 491.613,1080.78 525.287,1031.51 558.96,982.251 592.634,932.987 | |
626.308,883.724 659.981,834.461 693.655,785.198 727.329,735.935 761.002,686.672 794.676,637.409 828.35,588.146 862.023,538.882 895.697,489.619 929.371,440.356 | |
963.044,391.093 996.718,341.83 1030.39,292.567 1064.07,243.304 1097.74,194.041 1131.41,144.777 1165.09,95.5143 1198.76,46.2512 1232.43,-3.01196 1266.11,-52.2751 | |
1299.78,-101.538 1333.45,-150.801 1367.13,-200.064 1400.8,-249.328 1434.48,-298.591 1468.15,-347.854 1501.82,-397.117 1535.5,-446.38 1569.17,-495.643 1602.84,-544.906 | |
1636.52,-594.169 1670.19,-643.433 1703.86,-692.696 1737.54,-741.959 1771.21,-791.222 1804.89,-840.485 1838.56,-889.748 1872.23,-939.011 1905.91,-988.274 1939.58,-1037.54 | |
1973.25,-1086.8 2006.93,-1136.06 2040.6,-1185.33 2074.27,-1234.59 2107.95,-1283.85 2141.62,-1333.12 2175.3,-1382.38 2208.97,-1431.64 2242.64,-1480.91 2276.32,-1530.17 | |
2309.99,-1579.43 2343.66,-1628.7 | |
"/> | |
<path clip-path="url(#clip1800)" 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(#clip1800)" 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(#clip1800)" 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(#clip1800)"> | |
<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(#clip1800)"> | |
<text style="fill:#009af9; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 2141.62, 118.262)" x="2141.62" y="118.262">China</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#e26f46; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 626.308, 798.966)" x="626.308" y="798.966">France</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#3da44d; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 356.919, 1335.93)" x="356.919" y="1335.93">Germany</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#c271d2; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 1030.39, 412.279)" x="1030.39" y="412.279">Iran</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#ac8d18; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 996.718, 174.625)" x="996.718" y="174.625">Italy</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#00a9ad; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 525.287, 1166.55)" x="525.287" y="1166.55">Japan</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#ed5d92; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 424.266, 1200.58)" x="424.266" y="1200.58">Netherlands</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#c68125; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 356.919, 1353.6)" x="356.919" y="1353.6">Philippines</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#00a98d; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 1030.39, 932.037)" x="1030.39" y="932.037">South Korea</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#8e971d; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 592.634, 636.452)" x="592.634" y="636.452">Spain</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#00a8cb; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 390.592, 1319.57)" x="390.592" y="1319.57">Switzerland</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#9b7fe8; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 424.266, 1017.5)" x="424.266" y="1017.5">United Kingdom</text> | |
</g> | |
<g clip-path="url(#clip1800)"> | |
<text style="fill:#608cf6; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;" transform="rotate(0, 693.655, 1005.78)" x="693.655" y="1005.78">United States</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, 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