Skip to content

Instantly share code, notes, and snippets.

@briochemc
Forked from mbauman/covid19.jl
Last active April 2, 2020 06:37
Show Gist options
  • Save briochemc/60960829be3ebecdfb3135f8637f2788 to your computer and use it in GitHub Desktop.
Save briochemc/60960829be3ebecdfb3135f8637f2788 to your computer and use it in GitHub Desktop.
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)
Display the source blob
Display the rendered blob
Raw
<?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>
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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)
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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)
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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)
@briochemc
Copy link
Author

briochemc commented Mar 18, 2020

First output "Will Australia be like current Italy in ~3 weeks?"

covid19.jl output

Second output: All death cases above 10

covid19_deaths.jl output

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment