Skip to content

Instantly share code, notes, and snippets.

@sens
Created May 26, 2022 20:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sens/195214c1833d435b3406fa55abf2b6f4 to your computer and use it in GitHub Desktop.
Save sens/195214c1833d435b3406fa55abf2b6f4 to your computer and use it in GitHub Desktop.
Principal components example using Julia GeneNetwork API
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "741f2b73-603c-4e0a-96c1-497b928c72ac",
"metadata": {},
"source": [
"# Principal components example using Julia GeneNetwork API"
]
},
{
"cell_type": "markdown",
"id": "f14782b8-0d35-4bfd-b639-ad2a60a5030c",
"metadata": {},
"source": [
"We first load the relevant packages in Julia, get non-omic traits for the BXD population,\n",
"and then examine the first few rows of the trait matrix."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "06b075ea-4758-44da-b41f-3342fd331f53",
"metadata": {},
"outputs": [],
"source": [
"using GeneNetworkAPI, Statistics, LinearAlgebra, Plots, DataFrames, StatsBase"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "55966f8b-a9a1-485a-8548-a5cbf39f3361",
"metadata": {},
"outputs": [],
"source": [
"# get the non-omic traits for the BXD set\n",
"d = get_pheno(\"BXD\");"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "33640c9c-233a-49cd-9f4f-e50a028fc65e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(384, 10861)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check size\n",
"size(d)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e9b854c5-db34-4447-ac6e-388ee81ef9c6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div class=\"data-frame\"><p>10 rows × 10,861 columns (omitted printing of 10853 columns)</p><table class=\"data-frame\"><thead><tr><th></th><th>id</th><th>BXD_10001</th><th>BXD_10002</th><th>BXD_10003</th><th>BXD_10004</th><th>BXD_10005</th><th>BXD_10006</th><th>BXD_10007</th></tr><tr><th></th><th title=\"InlineStrings.String31\">String31</th><th title=\"InlineStrings.String15\">String15</th><th title=\"InlineStrings.String15\">String15</th><th title=\"InlineStrings.String7\">String7</th><th title=\"InlineStrings.String15\">String15</th><th title=\"InlineStrings.String15\">String15</th><th title=\"InlineStrings.String15\">String15</th><th title=\"InlineStrings.String15\">String15</th></tr></thead><tbody><tr><th>1</th><td>B6D2F1</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><th>2</th><td>C57BL/6J</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><th>3</th><td>DBA/2J</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><th>4</th><td>BXD1</td><td>61.400002</td><td>54.099998</td><td>483.0</td><td>49.799999</td><td>46.0</td><td>20.299999</td><td>18.700001</td></tr><tr><th>5</th><td>BXD2</td><td>49.0</td><td>50.099998</td><td>403.0</td><td>45.5</td><td>44.900002</td><td>15.0</td><td>14.8</td></tr><tr><th>6</th><td>BXD5</td><td>62.5</td><td>53.299999</td><td>501.0</td><td>62.900002</td><td>52.5</td><td>23.0</td><td>18.700001</td></tr><tr><th>7</th><td>BXD6</td><td>53.099998</td><td>55.099998</td><td>403.0</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><th>8</th><td>BXD8</td><td>59.099998</td><td>57.299999</td><td>438.0</td><td>55.099998</td><td>54.299999</td><td>22.700001</td><td>22.4</td></tr><tr><th>9</th><td>BXD9</td><td>53.900002</td><td>51.200001</td><td>448.0</td><td>47.299999</td><td>45.799999</td><td>18.799999</td><td>18.1</td></tr><tr><th>10</th><td>BXD11</td><td>53.099998</td><td>53.599998</td><td>408.0</td><td>50.599998</td><td>49.0</td><td>19.5</td><td>18.9</td></tr></tbody></table></div>"
],
"text/latex": [
"\\begin{tabular}{r|ccccccccc}\n",
"\t& id & BXD\\_10001 & BXD\\_10002 & BXD\\_10003 & BXD\\_10004 & BXD\\_10005 & BXD\\_10006 & BXD\\_10007 & \\\\\n",
"\t\\hline\n",
"\t& String31 & String15 & String15 & String7 & String15 & String15 & String15 & String15 & \\\\\n",
"\t\\hline\n",
"\t1 & B6D2F1 & x & x & x & x & x & x & x & $\\dots$ \\\\\n",
"\t2 & C57BL/6J & x & x & x & x & x & x & x & $\\dots$ \\\\\n",
"\t3 & DBA/2J & x & x & x & x & x & x & x & $\\dots$ \\\\\n",
"\t4 & BXD1 & 61.400002 & 54.099998 & 483.0 & 49.799999 & 46.0 & 20.299999 & 18.700001 & $\\dots$ \\\\\n",
"\t5 & BXD2 & 49.0 & 50.099998 & 403.0 & 45.5 & 44.900002 & 15.0 & 14.8 & $\\dots$ \\\\\n",
"\t6 & BXD5 & 62.5 & 53.299999 & 501.0 & 62.900002 & 52.5 & 23.0 & 18.700001 & $\\dots$ \\\\\n",
"\t7 & BXD6 & 53.099998 & 55.099998 & 403.0 & x & x & x & x & $\\dots$ \\\\\n",
"\t8 & BXD8 & 59.099998 & 57.299999 & 438.0 & 55.099998 & 54.299999 & 22.700001 & 22.4 & $\\dots$ \\\\\n",
"\t9 & BXD9 & 53.900002 & 51.200001 & 448.0 & 47.299999 & 45.799999 & 18.799999 & 18.1 & $\\dots$ \\\\\n",
"\t10 & BXD11 & 53.099998 & 53.599998 & 408.0 & 50.599998 & 49.0 & 19.5 & 18.9 & $\\dots$ \\\\\n",
"\\end{tabular}\n"
],
"text/plain": [
"\u001b[1m10×10861 DataFrame\u001b[0m\n",
"\u001b[1m Row \u001b[0m│\u001b[1m id \u001b[0m\u001b[1m BXD_10001 \u001b[0m\u001b[1m BXD_10002 \u001b[0m\u001b[1m BXD_10003 \u001b[0m\u001b[1m BXD_10004 \u001b[0m\u001b[1m BXD_10005 \u001b[0m\u001b[1m BXD_10\u001b[0m ⋯\n",
"\u001b[1m \u001b[0m│\u001b[90m String31 \u001b[0m\u001b[90m String15 \u001b[0m\u001b[90m String15 \u001b[0m\u001b[90m String7 \u001b[0m\u001b[90m String15 \u001b[0m\u001b[90m String15 \u001b[0m\u001b[90m String\u001b[0m ⋯\n",
"─────┼──────────────────────────────────────────────────────────────────────────\n",
" 1 │ B6D2F1 x x x x x x ⋯\n",
" 2 │ C57BL/6J x x x x x x\n",
" 3 │ DBA/2J x x x x x x\n",
" 4 │ BXD1 61.400002 54.099998 483.0 49.799999 46.0 20.299\n",
" 5 │ BXD2 49.0 50.099998 403.0 45.5 44.900002 15.0 ⋯\n",
" 6 │ BXD5 62.5 53.299999 501.0 62.900002 52.5 23.0\n",
" 7 │ BXD6 53.099998 55.099998 403.0 x x x\n",
" 8 │ BXD8 59.099998 57.299999 438.0 55.099998 54.299999 22.700\n",
" 9 │ BXD9 53.900002 51.200001 448.0 47.299999 45.799999 18.799 ⋯\n",
" 10 │ BXD11 53.099998 53.599998 408.0 50.599998 49.0 19.5\n",
"\u001b[36m 10855 columns omitted\u001b[0m"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# examine the first 10 rows\n",
"first(d,10)"
]
},
{
"cell_type": "markdown",
"id": "e41227f1-4992-47f6-bcd1-4d45ff774b38",
"metadata": {},
"source": [
"We will now get the phenotype IDs and then use the `info_dataset` function to get a description of the traits."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d8986299-4d1d-45b8-b9a7-d42bd79a3d32",
"metadata": {},
"outputs": [],
"source": [
"# get phenotype IDs removing the leading characters before underscore\n",
"phenoids = names(d) .|> (x->replace(x,r\"^BXD_\"=>\"\"));"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7a26064a-329d-4681-ae5f-7fda20ef6001",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div class=\"data-frame\"><p>9 rows × 7 columns (omitted printing of 5 columns)</p><table class=\"data-frame\"><thead><tr><th></th><th>dataset_type</th><th>description</th></tr><tr><th></th><th title=\"String\">String</th><th title=\"String\">String</th></tr></thead><tbody><tr><th>1</th><td>phenotype</td><td>Central nervous system, morphology: Cerebellum weight, whole, bilateral in adults of both sexes [mg]</td></tr><tr><th>2</th><td>phenotype</td><td>Central nervous system, morphology: Cerebellum weight after adjustment for covariance with brain size [mg]</td></tr><tr><th>3</th><td>phenotype</td><td>Central nervous system, morphology: Brain weight, male and female adult average, unadjusted for body weight, age, sex [mg]</td></tr><tr><th>4</th><td>phenotype</td><td>Central nervous system, morphology: Cerebellum volume [mm3]</td></tr><tr><th>5</th><td>phenotype</td><td>Central nervous system, morphology: Cerebellum volume, adjusted for covariance with brain size [mm3]</td></tr><tr><th>6</th><td>phenotype</td><td>Central nervous system, morphology: Cerebellum internal granule layer (IGL) volume without adjustment [mm3]</td></tr><tr><th>7</th><td>phenotype</td><td>Central nervous system, morphology: Internal granule layer (IGL) of the cerebellum volume, adjusted for sex, age, body and brain weight [mm3]</td></tr><tr><th>8</th><td>phenotype</td><td>Central nervous system, pharmacology, behavior: Phencyclidine response (7.5 mg/kg ip), locomotor response, difference in activity (PCP minus saline) between 1 hr test periods [cm]</td></tr><tr><th>9</th><td>phenotype</td><td>Central nervous system, pharmacology, behavior: Phencyclidine response (7.5 mg/kg ip), locomotor activity from 0-60 min after PCP injection [cm]</td></tr></tbody></table></div>"
],
"text/latex": [
"\\begin{tabular}{r|ccc}\n",
"\t& dataset\\_type & description & \\\\\n",
"\t\\hline\n",
"\t& String & String & \\\\\n",
"\t\\hline\n",
"\t1 & phenotype & Central nervous system, morphology: Cerebellum weight, whole, bilateral in adults of both sexes [mg] & $\\dots$ \\\\\n",
"\t2 & phenotype & Central nervous system, morphology: Cerebellum weight after adjustment for covariance with brain size [mg] & $\\dots$ \\\\\n",
"\t3 & phenotype & Central nervous system, morphology: Brain weight, male and female adult average, unadjusted for body weight, age, sex [mg] & $\\dots$ \\\\\n",
"\t4 & phenotype & Central nervous system, morphology: Cerebellum volume [mm3] & $\\dots$ \\\\\n",
"\t5 & phenotype & Central nervous system, morphology: Cerebellum volume, adjusted for covariance with brain size [mm3] & $\\dots$ \\\\\n",
"\t6 & phenotype & Central nervous system, morphology: Cerebellum internal granule layer (IGL) volume without adjustment [mm3] & $\\dots$ \\\\\n",
"\t7 & phenotype & Central nervous system, morphology: Internal granule layer (IGL) of the cerebellum volume, adjusted for sex, age, body and brain weight [mm3] & $\\dots$ \\\\\n",
"\t8 & phenotype & Central nervous system, pharmacology, behavior: Phencyclidine response (7.5 mg/kg ip), locomotor response, difference in activity (PCP minus saline) between 1 hr test periods [cm] & $\\dots$ \\\\\n",
"\t9 & phenotype & Central nervous system, pharmacology, behavior: Phencyclidine response (7.5 mg/kg ip), locomotor activity from 0-60 min after PCP injection [cm] & $\\dots$ \\\\\n",
"\\end{tabular}\n"
],
"text/plain": [
"\u001b[1m9×7 DataFrame\u001b[0m\n",
"\u001b[1m Row \u001b[0m│\u001b[1m dataset_type \u001b[0m\u001b[1m description \u001b[0m\u001b[1m id \u001b[0m\u001b[1m name \u001b[0m ⋯\n",
"\u001b[1m \u001b[0m│\u001b[90m String \u001b[0m\u001b[90m String \u001b[0m\u001b[90m Int64 \u001b[0m\u001b[90m String \u001b[0m ⋯\n",
"─────┼──────────────────────────────────────────────────────────────────────────\n",
" 1 │ phenotype Central nervous system, morpholo… 10001 CBLWT2 ⋯\n",
" 2 │ phenotype Central nervous system, morpholo… 10002 ADJCBLWT\n",
" 3 │ phenotype Central nervous system, morpholo… 10003 BrainWT5\n",
" 4 │ phenotype Central nervous system, morpholo… 10004 CBLVol\n",
" 5 │ phenotype Central nervous system, morpholo… 10005 CB_Wt_Corr ⋯\n",
" 6 │ phenotype Central nervous system, morpholo… 10006 IGLVol\n",
" 7 │ phenotype Central nervous system, morpholo… 10007 AdjIGLVol\n",
" 8 │ phenotype Central nervous system, pharmaco… 10008 PCPLOC1hr7.5mgB\n",
" 9 │ phenotype Central nervous system, pharmaco… 10009 PCPLOC1hr7.5mg ⋯\n",
"\u001b[36m 4 columns omitted\u001b[0m"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# get the description by repeated calls to info_dataset\n",
"phenodf = mapreduce(x->info_dataset(\"BXD\",x),(df,r)->push!(df,r[1,:],cols=:union),phenoids[2:10])"
]
},
{
"cell_type": "markdown",
"id": "f7cc85d5-03d0-4050-a3be-cdf204a70c62",
"metadata": {},
"source": [
"We are going to pick the first 7 traits -- they are all related to the cerebellum, and are expected to be correlated. We drop individuals with any missing values."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "150f6ea1-d75d-45d0-bc8a-157588879ee7",
"metadata": {},
"outputs": [],
"source": [
"# get first 7 traits\n",
"y = d[!,2:8];\n",
"# replace the x by missing value, drop individuals with any missing values\n",
"y = y .|> (x->tryparse.(Float64,x)) .|> (x->isnothing(x) ? missing : x) |> dropmissing |> Matrix;"
]
},
{
"cell_type": "markdown",
"id": "9c30406c-803f-4d69-a6b6-608c2dcf24a2",
"metadata": {},
"source": [
"Next we standardize the data."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "2874d5b5-4c58-4c4a-8f99-52b02e3b8b94",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2×7 Matrix{Float64}:\n",
" 0.0 -0.0 0.0 -0.0 0.0 -0.0 0.0\n",
" 1.0 1.0 1.0 1.0 1.0 1.0 1.0"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# standardize the columns\n",
"z = standardize(ZScoreTransform,y,dims=1);\n",
"# check that mean is 0, variance is 1\n",
"vcat(mean(z,dims=1),var(z,dims=1)) .|> (x->round(x,digits=4))"
]
},
{
"cell_type": "markdown",
"id": "c84cf318-b6b6-427a-8bfc-f136cef3ef09",
"metadata": {},
"source": [
"We calculate the correlation matrix."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "efb000d0-2ab8-403a-8214-32bb495244ed",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7×7 Matrix{Float64}:\n",
" 1.0 0.69 0.66 0.86 0.7 0.85 0.67\n",
" 0.69 1.0 -0.02 0.53 0.88 0.57 0.79\n",
" 0.66 -0.02 1.0 0.61 0.1 0.58 0.17\n",
" 0.86 0.53 0.61 1.0 0.75 0.88 0.62\n",
" 0.7 0.88 0.1 0.75 1.0 0.73 0.85\n",
" 0.85 0.57 0.58 0.88 0.73 1.0 0.85\n",
" 0.67 0.79 0.17 0.62 0.85 0.85 1.0"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"( R = cor(y) ).|> (x->round(x,digits=2))"
]
},
{
"cell_type": "markdown",
"id": "c6032b33-c34b-4aeb-ba99-1ce635c3f950",
"metadata": {},
"source": [
"Now, we compute the eigen decomposition of the correlation matrix. The result has two fields, a vector of eigenvalues and a matrix of eigenvectors. The eigenvalues are sorted; in this implementaiton they are sorted from smallest to largest. For principal components, we will want the eigenvalues and vectors sorted largest to smallest. "
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "90978715-6363-45ed-a863-f6213c548751",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Eigen{Float64, Float64, Matrix{Float64}, Vector{Float64}}\n",
"values:\n",
"7-element Vector{Float64}:\n",
" 0.0002737074909449178\n",
" 0.012383248253589458\n",
" 0.07892936955179328\n",
" 0.24387585397643066\n",
" 0.32941515754753115\n",
" 1.3951512343719223\n",
" 4.93997142880778\n",
"vectors:\n",
"7×7 Matrix{Float64}:\n",
" 0.0117874 0.587587 -0.442638 … -0.405654 0.198646 -0.415028\n",
" -0.0151947 -0.581935 0.017936 -0.481378 -0.440201 -0.354967\n",
" 0.00380428 -0.162573 0.568268 -0.0737235 0.715183 -0.219464\n",
" 0.475135 -0.24723 -0.182824 -0.0958958 0.228086 -0.404954\n",
" -0.345262 0.377659 0.556771 -0.0996501 -0.327609 -0.398272\n",
" -0.615635 -0.255506 -0.346536 … 0.485396 0.145828 -0.422614\n",
" 0.525023 0.143633 0.131588 0.586131 -0.273239 -0.390351"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pc = eigen(R)"
]
},
{
"cell_type": "markdown",
"id": "0bf54a7b-f027-4e86-a91e-798c12d2657e",
"metadata": {},
"source": [
"We calculate the transform of the data by postmultiplication by the eigenvectors."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "fb27123c-1a6e-411b-af90-f152d450670c",
"metadata": {},
"outputs": [],
"source": [
"w = z * pc.vectors;"
]
},
{
"cell_type": "markdown",
"id": "93fb0a08-6608-41e6-a58e-4b5d3d247075",
"metadata": {},
"source": [
"We check that the transformed data (the principal components) have mean 0, and variance equal to the eigenvalues."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "c3fc0938-9459-48b9-a512-d9e175c77c15",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1×7 Matrix{Float64}:\n",
" 0.0 0.0 0.0 -0.0 0.0 -0.0 -0.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean(w,dims=1) .|> (x->round(x,digits=2))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "1abda3b9-0672-467c-8ff7-f7b4dcc15db1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1×7 Matrix{Float64}:\n",
" 0.0 0.01 0.08 0.24 0.33 1.4 4.94"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"var(w,dims=1) .|> (x->round(x,digits=2))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "cac08721-8826-40a0-8d0d-261c7a6227ae",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7-element Vector{Float64}:\n",
" 0.0\n",
" 0.01\n",
" 0.08\n",
" 0.24\n",
" 0.33\n",
" 1.4\n",
" 4.94"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pc.values .|> (x->round(x,digits=2))"
]
},
{
"cell_type": "markdown",
"id": "898f63c6-1faa-4437-ae52-f05a3697a53f",
"metadata": {},
"source": [
"Now, we make a scree plot which is just a plot of the eigenvalues sorted in decreasing order. It is customary to scale them by the sum of the eigenvalues."
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "dde9faa6-2329-4291-9fa8-30b3299189a6",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<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\">\n",
"<defs>\n",
" <clipPath id=\"clip860\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip860)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip861\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip860)\" d=\"\n",
"M205.121 1423.18 L2352.76 1423.18 L2352.76 47.2441 L205.121 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip862\">\n",
" <rect x=\"205\" y=\"47\" width=\"2149\" height=\"1377\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 265.903,1423.18 265.903,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 603.582,1423.18 603.582,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 941.26,1423.18 941.26,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1278.94,1423.18 1278.94,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1616.62,1423.18 1616.62,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1954.3,1423.18 1954.3,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2291.97,1423.18 2291.97,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 205.121,1423.18 2352.76,1423.18 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 265.903,1423.18 265.903,1404.28 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 603.582,1423.18 603.582,1404.28 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 941.26,1423.18 941.26,1404.28 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1278.94,1423.18 1278.94,1404.28 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1616.62,1423.18 1616.62,1404.28 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1954.3,1423.18 1954.3,1404.28 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2291.97,1423.18 2291.97,1404.28 \n",
" \"/>\n",
"<path clip-path=\"url(#clip860)\" d=\"M256.285 1481.64 L263.924 1481.64 L263.924 1455.28 L255.614 1456.95 L255.614 1452.69 L263.878 1451.02 L268.554 1451.02 L268.554 1481.64 L276.192 1481.64 L276.192 1485.58 L256.285 1485.58 L256.285 1481.64 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M598.234 1481.64 L614.554 1481.64 L614.554 1485.58 L592.609 1485.58 L592.609 1481.64 Q595.271 1478.89 599.855 1474.26 Q604.461 1469.61 605.642 1468.27 Q607.887 1465.74 608.767 1464.01 Q609.669 1462.25 609.669 1460.56 Q609.669 1457.8 607.725 1456.07 Q605.804 1454.33 602.702 1454.33 Q600.503 1454.33 598.049 1455.09 Q595.619 1455.86 592.841 1457.41 L592.841 1452.69 Q595.665 1451.55 598.119 1450.97 Q600.572 1450.39 602.609 1450.39 Q607.98 1450.39 611.174 1453.08 Q614.369 1455.77 614.369 1460.26 Q614.369 1462.39 613.558 1464.31 Q612.771 1466.2 610.665 1468.8 Q610.086 1469.47 606.984 1472.69 Q603.882 1475.88 598.234 1481.64 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M945.508 1466.95 Q948.864 1467.66 950.739 1469.93 Q952.637 1472.2 952.637 1475.53 Q952.637 1480.65 949.119 1483.45 Q945.6 1486.25 939.119 1486.25 Q936.943 1486.25 934.628 1485.81 Q932.336 1485.39 929.883 1484.54 L929.883 1480.02 Q931.827 1481.16 934.142 1481.74 Q936.457 1482.32 938.98 1482.32 Q943.378 1482.32 945.67 1480.58 Q947.984 1478.84 947.984 1475.53 Q947.984 1472.48 945.832 1470.77 Q943.702 1469.03 939.883 1469.03 L935.855 1469.03 L935.855 1465.19 L940.068 1465.19 Q943.517 1465.19 945.346 1463.82 Q947.174 1462.43 947.174 1459.84 Q947.174 1457.18 945.276 1455.77 Q943.401 1454.33 939.883 1454.33 Q937.961 1454.33 935.762 1454.75 Q933.563 1455.16 930.924 1456.04 L930.924 1451.88 Q933.586 1451.14 935.901 1450.77 Q938.239 1450.39 940.299 1450.39 Q945.623 1450.39 948.725 1452.83 Q951.827 1455.23 951.827 1459.35 Q951.827 1462.22 950.184 1464.21 Q948.54 1466.18 945.508 1466.95 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M1281.95 1455.09 L1270.14 1473.54 L1281.95 1473.54 L1281.95 1455.09 M1280.72 1451.02 L1286.6 1451.02 L1286.6 1473.54 L1291.53 1473.54 L1291.53 1477.43 L1286.6 1477.43 L1286.6 1485.58 L1281.95 1485.58 L1281.95 1477.43 L1266.35 1477.43 L1266.35 1472.92 L1280.72 1451.02 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M1606.89 1451.02 L1625.25 1451.02 L1625.25 1454.96 L1611.18 1454.96 L1611.18 1463.43 Q1612.2 1463.08 1613.21 1462.92 Q1614.23 1462.73 1615.25 1462.73 Q1621.04 1462.73 1624.42 1465.9 Q1627.8 1469.08 1627.8 1474.49 Q1627.8 1480.07 1624.33 1483.17 Q1620.85 1486.25 1614.53 1486.25 Q1612.36 1486.25 1610.09 1485.88 Q1607.84 1485.51 1605.44 1484.77 L1605.44 1480.07 Q1607.52 1481.2 1609.74 1481.76 Q1611.96 1482.32 1614.44 1482.32 Q1618.45 1482.32 1620.78 1480.21 Q1623.12 1478.1 1623.12 1474.49 Q1623.12 1470.88 1620.78 1468.77 Q1618.45 1466.67 1614.44 1466.67 Q1612.57 1466.67 1610.69 1467.08 Q1608.84 1467.5 1606.89 1468.38 L1606.89 1451.02 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M1954.7 1466.44 Q1951.55 1466.44 1949.7 1468.59 Q1947.87 1470.74 1947.87 1474.49 Q1947.87 1478.22 1949.7 1480.39 Q1951.55 1482.55 1954.7 1482.55 Q1957.85 1482.55 1959.68 1480.39 Q1961.53 1478.22 1961.53 1474.49 Q1961.53 1470.74 1959.68 1468.59 Q1957.85 1466.44 1954.7 1466.44 M1963.98 1451.78 L1963.98 1456.04 Q1962.22 1455.21 1960.42 1454.77 Q1958.64 1454.33 1956.88 1454.33 Q1952.25 1454.33 1949.79 1457.45 Q1947.36 1460.58 1947.02 1466.9 Q1948.38 1464.89 1950.44 1463.82 Q1952.5 1462.73 1954.98 1462.73 Q1960.19 1462.73 1963.2 1465.9 Q1966.23 1469.05 1966.23 1474.49 Q1966.23 1479.82 1963.08 1483.03 Q1959.93 1486.25 1954.7 1486.25 Q1948.71 1486.25 1945.53 1481.67 Q1942.36 1477.06 1942.36 1468.33 Q1942.36 1460.14 1946.25 1455.28 Q1950.14 1450.39 1956.69 1450.39 Q1958.45 1450.39 1960.23 1450.74 Q1962.04 1451.09 1963.98 1451.78 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M2280.86 1451.02 L2303.08 1451.02 L2303.08 1453.01 L2290.54 1485.58 L2285.65 1485.58 L2297.46 1454.96 L2280.86 1454.96 L2280.86 1451.02 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M1247.92 1525.81 L1247.92 1543.66 L1256.01 1543.66 Q1260.49 1543.66 1262.94 1541.34 Q1265.4 1539.02 1265.4 1534.72 Q1265.4 1530.45 1262.94 1528.13 Q1260.49 1525.81 1256.01 1525.81 L1247.92 1525.81 M1241.49 1520.52 L1256.01 1520.52 Q1263.99 1520.52 1268.07 1524.15 Q1272.17 1527.75 1272.17 1534.72 Q1272.17 1541.75 1268.07 1545.35 Q1263.99 1548.95 1256.01 1548.95 L1247.92 1548.95 L1247.92 1568.04 L1241.49 1568.04 L1241.49 1520.52 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M1316.38 1524.18 L1316.38 1530.96 Q1313.14 1527.94 1309.45 1526.44 Q1305.79 1524.95 1301.65 1524.95 Q1293.5 1524.95 1289.17 1529.95 Q1284.84 1534.91 1284.84 1544.33 Q1284.84 1553.72 1289.17 1558.72 Q1293.5 1563.68 1301.65 1563.68 Q1305.79 1563.68 1309.45 1562.19 Q1313.14 1560.69 1316.38 1557.67 L1316.38 1564.38 Q1313.01 1566.68 1309.22 1567.82 Q1305.47 1568.97 1301.27 1568.97 Q1290.48 1568.97 1284.27 1562.38 Q1278.06 1555.76 1278.06 1544.33 Q1278.06 1532.87 1284.27 1526.28 Q1290.48 1519.66 1301.27 1519.66 Q1305.53 1519.66 1309.29 1520.81 Q1313.07 1521.92 1316.38 1524.18 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 205.121,1384.31 2352.76,1384.31 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 205.121,1016.42 2352.76,1016.42 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 205.121,648.527 2352.76,648.527 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip862)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 205.121,280.635 2352.76,280.635 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 205.121,1423.18 205.121,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 205.121,1384.31 224.019,1384.31 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 205.121,1016.42 224.019,1016.42 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 205.121,648.527 224.019,648.527 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip860)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 205.121,280.635 224.019,280.635 \n",
" \"/>\n",
"<path clip-path=\"url(#clip860)\" d=\"M157.177 1370.11 Q153.566 1370.11 151.737 1373.67 Q149.931 1377.22 149.931 1384.34 Q149.931 1391.45 151.737 1395.02 Q153.566 1398.56 157.177 1398.56 Q160.811 1398.56 162.616 1395.02 Q164.445 1391.45 164.445 1384.34 Q164.445 1377.22 162.616 1373.67 Q160.811 1370.11 157.177 1370.11 M157.177 1366.41 Q162.987 1366.41 166.042 1371.01 Q169.121 1375.59 169.121 1384.34 Q169.121 1393.07 166.042 1397.68 Q162.987 1402.26 157.177 1402.26 Q151.366 1402.26 148.288 1397.68 Q145.232 1393.07 145.232 1384.34 Q145.232 1375.59 148.288 1371.01 Q151.366 1366.41 157.177 1366.41 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M121.043 1029.76 L137.362 1029.76 L137.362 1033.7 L115.418 1033.7 L115.418 1029.76 Q118.08 1027.01 122.663 1022.38 Q127.269 1017.73 128.45 1016.38 Q130.695 1013.86 131.575 1012.12 Q132.478 1010.37 132.478 1008.68 Q132.478 1005.92 130.533 1004.18 Q128.612 1002.45 125.51 1002.45 Q123.311 1002.45 120.857 1003.21 Q118.427 1003.98 115.649 1005.53 L115.649 1000.81 Q118.473 999.671 120.927 999.092 Q123.38 998.514 125.418 998.514 Q130.788 998.514 133.982 1001.2 Q137.177 1003.88 137.177 1008.37 Q137.177 1010.5 136.367 1012.43 Q135.579 1014.32 133.473 1016.92 Q132.894 1017.59 129.792 1020.81 Q126.691 1024 121.043 1029.76 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M157.177 1002.22 Q153.566 1002.22 151.737 1005.78 Q149.931 1009.32 149.931 1016.45 Q149.931 1023.56 151.737 1027.12 Q153.566 1030.67 157.177 1030.67 Q160.811 1030.67 162.616 1027.12 Q164.445 1023.56 164.445 1016.45 Q164.445 1009.32 162.616 1005.78 Q160.811 1002.22 157.177 1002.22 M157.177 998.514 Q162.987 998.514 166.042 1003.12 Q169.121 1007.7 169.121 1016.45 Q169.121 1025.18 166.042 1029.79 Q162.987 1034.37 157.177 1034.37 Q151.366 1034.37 148.288 1029.79 Q145.232 1025.18 145.232 1016.45 Q145.232 1007.7 148.288 1003.12 Q151.366 998.514 157.177 998.514 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M129.862 635.321 L118.056 653.77 L129.862 653.77 L129.862 635.321 M128.635 631.247 L134.515 631.247 L134.515 653.77 L139.445 653.77 L139.445 657.659 L134.515 657.659 L134.515 665.807 L129.862 665.807 L129.862 657.659 L114.26 657.659 L114.26 653.145 L128.635 631.247 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M157.177 634.326 Q153.566 634.326 151.737 637.89 Q149.931 641.432 149.931 648.562 Q149.931 655.668 151.737 659.233 Q153.566 662.774 157.177 662.774 Q160.811 662.774 162.616 659.233 Q164.445 655.668 164.445 648.562 Q164.445 641.432 162.616 637.89 Q160.811 634.326 157.177 634.326 M157.177 630.622 Q162.987 630.622 166.042 635.228 Q169.121 639.812 169.121 648.562 Q169.121 657.288 166.042 661.895 Q162.987 666.478 157.177 666.478 Q151.366 666.478 148.288 661.895 Q145.232 657.288 145.232 648.562 Q145.232 639.812 148.288 635.228 Q151.366 630.622 157.177 630.622 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M127.593 278.772 Q124.445 278.772 122.593 280.925 Q120.765 283.077 120.765 286.827 Q120.765 290.554 122.593 292.73 Q124.445 294.883 127.593 294.883 Q130.742 294.883 132.57 292.73 Q134.422 290.554 134.422 286.827 Q134.422 283.077 132.57 280.925 Q130.742 278.772 127.593 278.772 M136.876 264.119 L136.876 268.378 Q135.117 267.545 133.311 267.105 Q131.529 266.665 129.769 266.665 Q125.14 266.665 122.686 269.79 Q120.255 272.915 119.908 279.235 Q121.274 277.221 123.334 276.156 Q125.394 275.068 127.871 275.068 Q133.08 275.068 136.089 278.239 Q139.121 281.387 139.121 286.827 Q139.121 292.151 135.973 295.369 Q132.825 298.586 127.593 298.586 Q121.598 298.586 118.427 294.003 Q115.256 289.397 115.256 280.67 Q115.256 272.476 119.144 267.614 Q123.033 262.73 129.584 262.73 Q131.343 262.73 133.126 263.077 Q134.931 263.425 136.876 264.119 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M157.177 266.434 Q153.566 266.434 151.737 269.999 Q149.931 273.54 149.931 280.67 Q149.931 287.776 151.737 291.341 Q153.566 294.883 157.177 294.883 Q160.811 294.883 162.616 291.341 Q164.445 287.776 164.445 280.67 Q164.445 273.54 162.616 269.999 Q160.811 266.434 157.177 266.434 M157.177 262.73 Q162.987 262.73 166.042 267.337 Q169.121 271.92 169.121 280.67 Q169.121 289.397 166.042 294.003 Q162.987 298.586 157.177 298.586 Q151.366 298.586 148.288 294.003 Q145.232 289.397 145.232 280.67 Q145.232 271.92 148.288 267.337 Q151.366 262.73 157.177 262.73 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M58.657 1017.53 L77.5631 1017.53 L77.5631 1023.42 L28.3562 1023.42 L28.3562 1017.53 L33.7671 1017.53 Q30.5842 1015.69 29.0564 1012.88 Q27.4968 1010.05 27.4968 1006.14 Q27.4968 999.643 32.6531 995.601 Q37.8093 991.527 46.212 991.527 Q54.6147 991.527 59.771 995.601 Q64.9272 999.643 64.9272 1006.14 Q64.9272 1010.05 63.3994 1012.88 Q61.8398 1015.69 58.657 1017.53 M46.212 997.606 Q39.7508 997.606 36.0905 1000.28 Q32.3984 1002.92 32.3984 1007.57 Q32.3984 1012.22 36.0905 1014.89 Q39.7508 1017.53 46.212 1017.53 Q52.6732 1017.53 56.3653 1014.89 Q60.0256 1012.22 60.0256 1007.57 Q60.0256 1002.92 56.3653 1000.28 Q52.6732 997.606 46.212 997.606 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M44.7161 951.328 L47.5806 951.328 L47.5806 978.255 Q53.6281 977.873 56.8109 974.626 Q59.9619 971.348 59.9619 965.523 Q59.9619 962.149 59.1344 958.998 Q58.3069 955.816 56.6518 952.696 L62.1899 952.696 Q63.5267 955.847 64.227 959.158 Q64.9272 962.468 64.9272 965.873 Q64.9272 974.403 59.9619 979.4 Q54.9967 984.366 46.5303 984.366 Q37.7774 984.366 32.6531 979.655 Q27.4968 974.913 27.4968 966.892 Q27.4968 959.699 32.1438 955.529 Q36.7589 951.328 44.7161 951.328 M42.9973 957.184 Q38.1912 957.248 35.3266 959.89 Q32.4621 962.5 32.4621 966.828 Q32.4621 971.73 35.2312 974.69 Q38.0002 977.618 43.0292 978.064 L42.9973 957.184 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M33.8307 921.059 Q33.2578 922.045 33.0032 923.223 Q32.7167 924.369 32.7167 925.769 Q32.7167 930.735 35.9632 933.408 Q39.1779 936.05 45.2253 936.05 L64.0042 936.05 L64.0042 941.938 L28.3562 941.938 L28.3562 936.05 L33.8944 936.05 Q30.6479 934.204 29.0883 931.244 Q27.4968 928.284 27.4968 924.051 Q27.4968 923.446 27.5923 922.714 Q27.656 921.982 27.8151 921.091 L33.8307 921.059 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M29.7248 890.694 L35.1993 890.694 Q33.8307 893.177 33.1623 895.691 Q32.4621 898.174 32.4621 900.72 Q32.4621 906.418 36.0905 909.569 Q39.6872 912.72 46.212 912.72 Q52.7369 912.72 56.3653 909.569 Q59.9619 906.418 59.9619 900.72 Q59.9619 898.174 59.2935 895.691 Q58.5933 893.177 57.2247 890.694 L62.6355 890.694 Q63.7814 893.145 64.3543 895.787 Q64.9272 898.397 64.9272 901.357 Q64.9272 909.41 59.8664 914.152 Q54.8057 918.894 46.212 918.894 Q37.491 918.894 32.4939 914.12 Q27.4968 909.314 27.4968 900.975 Q27.4968 898.27 28.0697 895.691 Q28.6108 893.113 29.7248 890.694 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M44.7161 850.017 L47.5806 850.017 L47.5806 876.944 Q53.6281 876.562 56.8109 873.316 Q59.9619 870.038 59.9619 864.213 Q59.9619 860.839 59.1344 857.688 Q58.3069 854.505 56.6518 851.386 L62.1899 851.386 Q63.5267 854.537 64.227 857.847 Q64.9272 861.157 64.9272 864.563 Q64.9272 873.093 59.9619 878.09 Q54.9967 883.056 46.5303 883.056 Q37.7774 883.056 32.6531 878.345 Q27.4968 873.602 27.4968 865.582 Q27.4968 858.388 32.1438 854.219 Q36.7589 850.017 44.7161 850.017 M42.9973 855.874 Q38.1912 855.938 35.3266 858.579 Q32.4621 861.189 32.4621 865.518 Q32.4621 870.42 35.2312 873.38 Q38.0002 876.308 43.0292 876.753 L42.9973 855.874 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M42.4881 810.773 L64.0042 810.773 L64.0042 816.629 L42.679 816.629 Q37.6183 816.629 35.1038 818.603 Q32.5894 820.576 32.5894 824.523 Q32.5894 829.265 35.6131 832.003 Q38.6368 834.74 43.8567 834.74 L64.0042 834.74 L64.0042 840.628 L28.3562 840.628 L28.3562 834.74 L33.8944 834.74 Q30.6797 832.639 29.0883 829.806 Q27.4968 826.942 27.4968 823.218 Q27.4968 817.075 31.3163 813.924 Q35.1038 810.773 42.4881 810.773 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M18.2347 793.299 L28.3562 793.299 L28.3562 781.236 L32.9077 781.236 L32.9077 793.299 L52.2594 793.299 Q56.6199 793.299 57.8613 792.121 Q59.1026 790.912 59.1026 787.252 L59.1026 781.236 L64.0042 781.236 L64.0042 787.252 Q64.0042 794.031 61.4897 796.609 Q58.9434 799.187 52.2594 799.187 L32.9077 799.187 L32.9077 803.484 L28.3562 803.484 L28.3562 799.187 L18.2347 799.187 L18.2347 793.299 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M44.7161 722.321 L47.5806 722.321 L47.5806 749.248 Q53.6281 748.866 56.8109 745.62 Q59.9619 742.342 59.9619 736.517 Q59.9619 733.143 59.1344 729.992 Q58.3069 726.809 56.6518 723.69 L62.1899 723.69 Q63.5267 726.841 64.227 730.151 Q64.9272 733.461 64.9272 736.867 Q64.9272 745.397 59.9619 750.394 Q54.9967 755.359 46.5303 755.359 Q37.7774 755.359 32.6531 750.649 Q27.4968 745.906 27.4968 737.886 Q27.4968 730.692 32.1438 726.523 Q36.7589 722.321 44.7161 722.321 M42.9973 728.178 Q38.1912 728.242 35.3266 730.883 Q32.4621 733.493 32.4621 737.822 Q32.4621 742.724 35.2312 745.684 Q38.0002 748.612 43.0292 749.057 L42.9973 728.178 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M28.3562 684.223 L45.7028 697.113 L64.0042 683.554 L64.0042 690.461 L49.9996 700.837 L64.0042 711.213 L64.0042 718.12 L45.3526 704.275 L28.3562 716.942 L28.3562 710.036 L41.0558 700.583 L28.3562 691.129 L28.3562 684.223 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M58.657 669.613 L77.5631 669.613 L77.5631 675.502 L28.3562 675.502 L28.3562 669.613 L33.7671 669.613 Q30.5842 667.767 29.0564 664.966 Q27.4968 662.134 27.4968 658.219 Q27.4968 651.726 32.6531 647.684 Q37.8093 643.609 46.212 643.609 Q54.6147 643.609 59.771 647.684 Q64.9272 651.726 64.9272 658.219 Q64.9272 662.134 63.3994 664.966 Q61.8398 667.767 58.657 669.613 M46.212 649.689 Q39.7508 649.689 36.0905 652.362 Q32.3984 655.004 32.3984 659.651 Q32.3984 664.298 36.0905 666.972 Q39.7508 669.613 46.212 669.613 Q52.6732 669.613 56.3653 666.972 Q60.0256 664.298 60.0256 659.651 Q60.0256 655.004 56.3653 652.362 Q52.6732 649.689 46.212 649.689 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M14.479 633.902 L14.479 628.045 L64.0042 628.045 L64.0042 633.902 L14.479 633.902 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M46.0847 599.591 Q46.0847 606.688 47.7079 609.426 Q49.3312 612.163 53.2461 612.163 Q56.3653 612.163 58.2114 610.126 Q60.0256 608.057 60.0256 604.524 Q60.0256 599.654 56.5881 596.726 Q53.1188 593.766 47.3897 593.766 L46.0847 593.766 L46.0847 599.591 M43.6657 587.91 L64.0042 587.91 L64.0042 593.766 L58.5933 593.766 Q61.8398 595.771 63.3994 598.763 Q64.9272 601.755 64.9272 606.084 Q64.9272 611.558 61.8716 614.805 Q58.7843 618.019 53.6281 618.019 Q47.6125 618.019 44.5569 614.009 Q41.5014 609.967 41.5014 601.978 L41.5014 593.766 L40.9285 593.766 Q36.8862 593.766 34.6901 596.44 Q32.4621 599.081 32.4621 603.887 Q32.4621 606.943 33.1941 609.839 Q33.9262 612.736 35.3903 615.409 L29.9795 615.409 Q28.7381 612.195 28.1334 609.171 Q27.4968 606.147 27.4968 603.283 Q27.4968 595.548 31.5072 591.729 Q35.5176 587.91 43.6657 587.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M28.3562 575.847 L28.3562 569.99 L64.0042 569.99 L64.0042 575.847 L28.3562 575.847 M14.479 575.847 L14.479 569.99 L21.895 569.99 L21.895 575.847 L14.479 575.847 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M42.4881 528.104 L64.0042 528.104 L64.0042 533.96 L42.679 533.96 Q37.6183 533.96 35.1038 535.934 Q32.5894 537.907 32.5894 541.854 Q32.5894 546.596 35.6131 549.333 Q38.6368 552.071 43.8567 552.071 L64.0042 552.071 L64.0042 557.959 L28.3562 557.959 L28.3562 552.071 L33.8944 552.071 Q30.6797 549.97 29.0883 547.137 Q27.4968 544.273 27.4968 540.549 Q27.4968 534.406 31.3163 531.255 Q35.1038 528.104 42.4881 528.104 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M44.7161 485.931 L47.5806 485.931 L47.5806 512.858 Q53.6281 512.476 56.8109 509.229 Q59.9619 505.951 59.9619 500.126 Q59.9619 496.753 59.1344 493.602 Q58.3069 490.419 56.6518 487.3 L62.1899 487.3 Q63.5267 490.451 64.227 493.761 Q64.9272 497.071 64.9272 500.477 Q64.9272 509.007 59.9619 514.004 Q54.9967 518.969 46.5303 518.969 Q37.7774 518.969 32.6531 514.258 Q27.4968 509.516 27.4968 501.495 Q27.4968 494.302 32.1438 490.132 Q36.7589 485.931 44.7161 485.931 M42.9973 491.787 Q38.1912 491.851 35.3266 494.493 Q32.4621 497.103 32.4621 501.431 Q32.4621 506.333 35.2312 509.293 Q38.0002 512.221 43.0292 512.667 L42.9973 491.787 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip860)\" d=\"M33.7671 452.861 L14.479 452.861 L14.479 447.005 L64.0042 447.005 L64.0042 452.861 L58.657 452.861 Q61.8398 454.707 63.3994 457.54 Q64.9272 460.341 64.9272 464.287 Q64.9272 470.749 59.771 474.823 Q54.6147 478.865 46.212 478.865 Q37.8093 478.865 32.6531 474.823 Q27.4968 470.749 27.4968 464.287 Q27.4968 460.341 29.0564 457.54 Q30.5842 454.707 33.7671 452.861 M46.212 472.818 Q52.6732 472.818 56.3653 470.176 Q60.0256 467.502 60.0256 462.855 Q60.0256 458.208 56.3653 455.535 Q52.6732 452.861 46.212 452.861 Q39.7508 452.861 36.0905 455.535 Q32.3984 458.208 32.3984 462.855 Q32.3984 467.502 36.0905 470.176 Q39.7508 472.818 46.212 472.818 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip862)\" style=\"stroke:#009af9; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 265.903,86.1857 603.582,1017.69 941.26,1297.75 1278.94,1320.22 1616.62,1363.57 1954.3,1381.06 2291.97,1384.24 \n",
" \"/>\n",
"</svg>\n"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# scree plot\n",
"plot(reverse(pc.values)./(sum(pc.values))*100,label=\"\",ylab=\"percent explained\",xlab=\"PC\")"
]
},
{
"cell_type": "markdown",
"id": "26671552-80fc-4f97-9dc9-ffc6e4c5c65d",
"metadata": {},
"source": [
"Now, we plot the transformed values (principal components) -- the first two."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "a969adc8-5b83-4ac0-9258-e52e23eb548e",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<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\">\n",
"<defs>\n",
" <clipPath id=\"clip900\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip900)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip901\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip900)\" d=\"\n",
"M147.478 1486.45 L2352.76 1486.45 L2352.76 47.2441 L147.478 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip902\">\n",
" <rect x=\"147\" y=\"47\" width=\"2206\" height=\"1440\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 337.461,1486.45 337.461,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 836.868,1486.45 836.868,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1336.27,1486.45 1336.27,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1835.68,1486.45 1835.68,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2335.09,1486.45 2335.09,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 147.478,1486.45 2352.76,1486.45 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 337.461,1486.45 337.461,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 836.868,1486.45 836.868,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1336.27,1486.45 1336.27,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1835.68,1486.45 1835.68,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2335.09,1486.45 2335.09,1467.55 \n",
" \"/>\n",
"<path clip-path=\"url(#clip900)\" d=\"M306.362 1532.02 L336.038 1532.02 L336.038 1535.95 L306.362 1535.95 L306.362 1532.02 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M358.978 1518.36 L347.172 1536.81 L358.978 1536.81 L358.978 1518.36 M357.751 1514.29 L363.63 1514.29 L363.63 1536.81 L368.561 1536.81 L368.561 1540.7 L363.63 1540.7 L363.63 1548.85 L358.978 1548.85 L358.978 1540.7 L343.376 1540.7 L343.376 1536.19 L357.751 1514.29 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M806.81 1532.02 L836.486 1532.02 L836.486 1535.95 L806.81 1535.95 L806.81 1532.02 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M850.607 1544.91 L866.926 1544.91 L866.926 1548.85 L844.982 1548.85 L844.982 1544.91 Q847.644 1542.16 852.227 1537.53 Q856.833 1532.88 858.014 1531.53 Q860.259 1529.01 861.139 1527.27 Q862.042 1525.51 862.042 1523.82 Q862.042 1521.07 860.097 1519.33 Q858.176 1517.6 855.074 1517.6 Q852.875 1517.6 850.421 1518.36 Q847.991 1519.13 845.213 1520.68 L845.213 1515.95 Q848.037 1514.82 850.491 1514.24 Q852.945 1513.66 854.982 1513.66 Q860.352 1513.66 863.546 1516.35 Q866.741 1519.03 866.741 1523.52 Q866.741 1525.65 865.931 1527.57 Q865.144 1529.47 863.037 1532.07 Q862.458 1532.74 859.357 1535.95 Q856.255 1539.15 850.607 1544.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1336.27 1517.37 Q1332.66 1517.37 1330.84 1520.93 Q1329.03 1524.47 1329.03 1531.6 Q1329.03 1538.71 1330.84 1542.27 Q1332.66 1545.82 1336.27 1545.82 Q1339.91 1545.82 1341.71 1542.27 Q1343.54 1538.71 1343.54 1531.6 Q1343.54 1524.47 1341.71 1520.93 Q1339.91 1517.37 1336.27 1517.37 M1336.27 1513.66 Q1342.09 1513.66 1345.14 1518.27 Q1348.22 1522.85 1348.22 1531.6 Q1348.22 1540.33 1345.14 1544.94 Q1342.09 1549.52 1336.27 1549.52 Q1330.46 1549.52 1327.39 1544.94 Q1324.33 1540.33 1324.33 1531.6 Q1324.33 1522.85 1327.39 1518.27 Q1330.46 1513.66 1336.27 1513.66 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1830.33 1544.91 L1846.65 1544.91 L1846.65 1548.85 L1824.71 1548.85 L1824.71 1544.91 Q1827.37 1542.16 1831.95 1537.53 Q1836.56 1532.88 1837.74 1531.53 Q1839.99 1529.01 1840.87 1527.27 Q1841.77 1525.51 1841.77 1523.82 Q1841.77 1521.07 1839.83 1519.33 Q1837.9 1517.6 1834.8 1517.6 Q1832.6 1517.6 1830.15 1518.36 Q1827.72 1519.13 1824.94 1520.68 L1824.94 1515.95 Q1827.77 1514.82 1830.22 1514.24 Q1832.67 1513.66 1834.71 1513.66 Q1840.08 1513.66 1843.27 1516.35 Q1846.47 1519.03 1846.47 1523.52 Q1846.47 1525.65 1845.66 1527.57 Q1844.87 1529.47 1842.77 1532.07 Q1842.19 1532.74 1839.08 1535.95 Q1835.98 1539.15 1830.33 1544.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M2338.1 1518.36 L2326.29 1536.81 L2338.1 1536.81 L2338.1 1518.36 M2336.87 1514.29 L2342.75 1514.29 L2342.75 1536.81 L2347.68 1536.81 L2347.68 1540.7 L2342.75 1540.7 L2342.75 1548.85 L2338.1 1548.85 L2338.1 1540.7 L2322.5 1540.7 L2322.5 1536.19 L2336.87 1514.29 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 147.478,1248.99 2352.76,1248.99 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 147.478,996.402 2352.76,996.402 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 147.478,743.815 2352.76,743.815 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 147.478,491.228 2352.76,491.228 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 147.478,238.641 2352.76,238.641 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 147.478,1486.45 147.478,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 147.478,1248.99 166.376,1248.99 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 147.478,996.402 166.376,996.402 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 147.478,743.815 166.376,743.815 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 147.478,491.228 166.376,491.228 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 147.478,238.641 166.376,238.641 \n",
" \"/>\n",
"<path clip-path=\"url(#clip900)\" d=\"M51.3625 1249.44 L81.0383 1249.44 L81.0383 1253.38 L51.3625 1253.38 L51.3625 1249.44 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M95.1586 1262.33 L111.478 1262.33 L111.478 1266.27 L89.5336 1266.27 L89.5336 1262.33 Q92.1956 1259.58 96.7789 1254.95 Q101.385 1250.3 102.566 1248.95 Q104.811 1246.43 105.691 1244.7 Q106.594 1242.94 106.594 1241.25 Q106.594 1238.49 104.649 1236.76 Q102.728 1235.02 99.6261 1235.02 Q97.4271 1235.02 94.9734 1235.78 Q92.5428 1236.55 89.7651 1238.1 L89.7651 1233.38 Q92.5891 1232.24 95.0428 1231.66 Q97.4965 1231.08 99.5335 1231.08 Q104.904 1231.08 108.098 1233.77 Q111.293 1236.45 111.293 1240.95 Q111.293 1243.08 110.483 1245 Q109.696 1246.89 107.589 1249.49 Q107.01 1250.16 103.909 1253.38 Q100.807 1256.57 95.1586 1262.33 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M50.9921 996.854 L80.6679 996.854 L80.6679 1000.79 L50.9921 1000.79 L50.9921 996.854 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M91.5706 1009.75 L99.2095 1009.75 L99.2095 983.382 L90.8993 985.048 L90.8993 980.789 L99.1632 979.122 L103.839 979.122 L103.839 1009.75 L111.478 1009.75 L111.478 1013.68 L91.5706 1013.68 L91.5706 1009.75 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M99.5335 729.614 Q95.9224 729.614 94.0937 733.179 Q92.2882 736.72 92.2882 743.85 Q92.2882 750.957 94.0937 754.521 Q95.9224 758.063 99.5335 758.063 Q103.168 758.063 104.973 754.521 Q106.802 750.957 106.802 743.85 Q106.802 736.72 104.973 733.179 Q103.168 729.614 99.5335 729.614 M99.5335 725.91 Q105.344 725.91 108.399 730.517 Q111.478 735.1 111.478 743.85 Q111.478 752.577 108.399 757.183 Q105.344 761.767 99.5335 761.767 Q93.7234 761.767 90.6447 757.183 Q87.5892 752.577 87.5892 743.85 Q87.5892 735.1 90.6447 730.517 Q93.7234 725.91 99.5335 725.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M91.5706 504.573 L99.2095 504.573 L99.2095 478.208 L90.8993 479.874 L90.8993 475.615 L99.1632 473.948 L103.839 473.948 L103.839 504.573 L111.478 504.573 L111.478 508.508 L91.5706 508.508 L91.5706 504.573 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M95.1586 251.986 L111.478 251.986 L111.478 255.921 L89.5336 255.921 L89.5336 251.986 Q92.1956 249.231 96.7789 244.602 Q101.385 239.949 102.566 238.606 Q104.811 236.083 105.691 234.347 Q106.594 232.588 106.594 230.898 Q106.594 228.144 104.649 226.407 Q102.728 224.671 99.6261 224.671 Q97.4271 224.671 94.9734 225.435 Q92.5428 226.199 89.7651 227.75 L89.7651 223.028 Q92.5891 221.894 95.0428 221.315 Q97.4965 220.736 99.5335 220.736 Q104.904 220.736 108.098 223.421 Q111.293 226.107 111.293 230.597 Q111.293 232.727 110.483 234.648 Q109.696 236.546 107.589 239.139 Q107.01 239.81 103.909 243.028 Q100.807 246.222 95.1586 251.986 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><circle clip-path=\"url(#clip902)\" cx=\"846.353\" cy=\"274.631\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1940.72\" cy=\"688.238\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"209.891\" cy=\"87.9763\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"233.991\" cy=\"893.802\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1323.49\" cy=\"477.594\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1101.76\" cy=\"848.748\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"2093.08\" cy=\"576.712\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1452.28\" cy=\"909.117\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1857.4\" cy=\"567.3\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"2199.64\" cy=\"259.661\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1250.2\" cy=\"688.936\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1505.35\" cy=\"755.412\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1934.73\" cy=\"1037.51\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"957.399\" cy=\"622.602\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1872.55\" cy=\"816.455\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"695.755\" cy=\"1049.63\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1591.16\" cy=\"989.057\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1577.44\" cy=\"1317.01\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1218.92\" cy=\"1014.47\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1819.95\" cy=\"1048.37\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"998.212\" cy=\"1445.72\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1668.51\" cy=\"795.065\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"701.803\" cy=\"639.987\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1185.53\" cy=\"606.233\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1001.33\" cy=\"753.648\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1428.64\" cy=\"823.228\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"2290.34\" cy=\"484.085\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1578.78\" cy=\"610.296\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"811.19\" cy=\"998.265\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"1628.35\" cy=\"381.646\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip902)\" cx=\"449.785\" cy=\"596.875\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"</svg>\n"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scatter(w[:,7],w[:,6],label=\"\")"
]
},
{
"cell_type": "markdown",
"id": "127c9290-9dc2-485a-ba3e-535acfc39e43",
"metadata": {},
"source": [
"There is an alternate way to compute -- this is more accurate, but more computationally demanding. This approach uses the singular value decomposition, or SVD."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "14289506-4371-42a4-b744-9293cd15ff6f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"SVD{Float64, Float64, Matrix{Float64}}\n",
"U factor:\n",
"31×7 Matrix{Float64}:\n",
" -0.161168 0.287118 0.23511 … -0.176817 0.00549159\n",
" 0.198843 0.034011 0.274488 0.00889663 0.0505802\n",
" -0.370543 0.401342 0.215287 -0.0922882 -0.0401533\n",
" -0.362615 -0.0917847 -0.0871735 -0.118095 -0.0828679\n",
" -0.00420564 0.162915 -0.0230162 -0.0888081 0.212957\n",
" -0.0771477 -0.0642139 -0.0217708 … 0.239482 -0.0190039\n",
" 0.248964 0.102259 -0.215318 0.06198 -0.173974\n",
" 0.0381604 -0.101157 -0.279564 -0.0452445 0.0065763\n",
" 0.171434 0.108019 0.204849 0.0128508 0.245243\n",
" 0.28402 0.29628 0.0541687 -0.0813583 0.0549782\n",
" -0.0283171 0.0335834 -0.03676 … -0.39815 -0.230703\n",
" 0.0556198 -0.00709676 -0.17332 0.2457 -0.0220142\n",
" 0.196871 -0.179726 0.269191 0.0794904 -0.667724\n",
" ⋮ ⋱ ⋮ \n",
" 0.159113 -0.186373 0.235372 -0.322686 0.157233\n",
" -0.111212 -0.42953 0.260484 … 0.0582541 0.100225\n",
" 0.109293 -0.0313625 0.0608609 -0.217509 -0.0908116\n",
" -0.208721 0.063538 -0.0587601 -0.101661 0.065567\n",
" -0.0495892 0.0841936 -0.175241 0.212521 -0.0044221\n",
" -0.110186 -0.00601739 0.112558 -0.0145025 0.190311\n",
" 0.0303843 -0.0485968 -0.0258004 … 0.22578 -0.0600682\n",
" 0.313857 0.158943 -0.115368 -0.141731 -0.0933857\n",
" 0.0797754 0.0817074 0.143656 0.24797 0.165249\n",
" -0.172736 -0.155711 0.202274 0.145823 -0.0796018\n",
" 0.0960832 0.221631 -0.224668 0.0362154 -0.0205208\n",
" -0.291626 0.0899204 0.0793507 … 0.30411 -0.12908\n",
"singular values:\n",
"7-element Vector{Float64}:\n",
" 12.173707030491316\n",
" 6.469508252653946\n",
" 3.143637181105025\n",
" 2.704861478762441\n",
" 1.538792086850525\n",
" 0.6095059044895893\n",
" 0.09061580837998166\n",
"Vt factor:\n",
"7×7 Matrix{Float64}:\n",
" -0.415028 -0.354967 -0.219464 … -0.398272 -0.422614 -0.390351\n",
" 0.198646 -0.440201 0.715183 -0.327609 0.145828 -0.273239\n",
" 0.405654 0.481378 0.0737235 0.0996501 -0.485396 -0.586131\n",
" 0.287071 0.330599 0.292472 -0.39025 -0.0120641 0.340325\n",
" -0.442638 0.017936 0.568268 0.556771 -0.346536 0.131588\n",
" -0.587587 0.581935 0.162573 … -0.377659 0.255506 -0.143633\n",
" -0.0117874 0.0151947 -0.00380428 0.345262 0.615635 -0.525023"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = svd(z)"
]
},
{
"cell_type": "markdown",
"id": "7d37f65a-71eb-447a-8582-c8f75a0b9913",
"metadata": {},
"source": [
"The proportion variance explained is just the square of the singular values divided by the product of the dimensions of the data matrix."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "bb6895c9-590d-4b4b-9d45-6f2ba5a662e2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7-element Vector{Float64}:\n",
" 0.68295\n",
" 0.19288\n",
" 0.04554\n",
" 0.03372\n",
" 0.01091\n",
" 0.00171\n",
" 4.0e-5"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(s.S.^2)./prod(size(z)) .|> (x->round(x,digits=5))"
]
},
{
"cell_type": "markdown",
"id": "59f46de5-20d4-4e6b-b7f4-b81ac57a3c6f",
"metadata": {},
"source": [
"Compare with the eigenvalues which are divided by the number of columns (they are in increasing order)."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "3d1419a5-2853-42bd-87a8-eaa32754f628",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7-element Vector{Float64}:\n",
" 4.0e-5\n",
" 0.00177\n",
" 0.01128\n",
" 0.03484\n",
" 0.04706\n",
" 0.19931\n",
" 0.70571"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pc.values/size(z,2) .|> (x->round(x,digits=5))"
]
},
{
"cell_type": "markdown",
"id": "09b1894b-3dab-474b-9700-b73c19f1c7fb",
"metadata": {},
"source": [
"The principal components are (proportional to) the $U$ matrix. It is an orthogonal matrix, so all components have the same variance, unlike the principal components whose variance is proportional to the eigenvalue. Notice, that other than the scale, the plots look identical."
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "885d8177-1595-4700-9bb6-5da0675d19b4",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<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\">\n",
"<defs>\n",
" <clipPath id=\"clip940\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip940)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip941\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip940)\" d=\"\n",
"M194.422 1486.45 L2352.76 1486.45 L2352.76 47.2441 L194.422 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip942\">\n",
" <rect x=\"194\" y=\"47\" width=\"2159\" height=\"1440\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 465.381,1486.45 465.381,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 762.892,1486.45 762.892,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1060.4,1486.45 1060.4,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1357.91,1486.45 1357.91,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1655.42,1486.45 1655.42,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1952.93,1486.45 1952.93,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2250.45,1486.45 2250.45,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 194.422,1486.45 2352.76,1486.45 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 465.381,1486.45 465.381,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 762.892,1486.45 762.892,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1060.4,1486.45 1060.4,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1357.91,1486.45 1357.91,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1655.42,1486.45 1655.42,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1952.93,1486.45 1952.93,1467.55 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2250.45,1486.45 2250.45,1467.55 \n",
" \"/>\n",
"<path clip-path=\"url(#clip940)\" d=\"M412.233 1532.02 L441.909 1532.02 L441.909 1535.95 L412.233 1535.95 L412.233 1532.02 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M462.001 1517.37 Q458.39 1517.37 456.562 1520.93 Q454.756 1524.47 454.756 1531.6 Q454.756 1538.71 456.562 1542.27 Q458.39 1545.82 462.001 1545.82 Q465.636 1545.82 467.441 1542.27 Q469.27 1538.71 469.27 1531.6 Q469.27 1524.47 467.441 1520.93 Q465.636 1517.37 462.001 1517.37 M462.001 1513.66 Q467.812 1513.66 470.867 1518.27 Q473.946 1522.85 473.946 1531.6 Q473.946 1540.33 470.867 1544.94 Q467.812 1549.52 462.001 1549.52 Q456.191 1549.52 453.113 1544.94 Q450.057 1540.33 450.057 1531.6 Q450.057 1522.85 453.113 1518.27 Q456.191 1513.66 462.001 1513.66 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M482.163 1542.97 L487.048 1542.97 L487.048 1548.85 L482.163 1548.85 L482.163 1542.97 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M511.399 1530.21 Q514.756 1530.93 516.631 1533.2 Q518.529 1535.47 518.529 1538.8 Q518.529 1543.92 515.01 1546.72 Q511.492 1549.52 505.01 1549.52 Q502.834 1549.52 500.52 1549.08 Q498.228 1548.66 495.774 1547.81 L495.774 1543.29 Q497.719 1544.43 500.034 1545.01 Q502.348 1545.58 504.872 1545.58 Q509.27 1545.58 511.561 1543.85 Q513.876 1542.11 513.876 1538.8 Q513.876 1535.75 511.723 1534.03 Q509.594 1532.3 505.774 1532.3 L501.747 1532.3 L501.747 1528.45 L505.959 1528.45 Q509.409 1528.45 511.237 1527.09 Q513.066 1525.7 513.066 1523.11 Q513.066 1520.45 511.168 1519.03 Q509.293 1517.6 505.774 1517.6 Q503.853 1517.6 501.654 1518.01 Q499.455 1518.43 496.816 1519.31 L496.816 1515.14 Q499.478 1514.4 501.793 1514.03 Q504.131 1513.66 506.191 1513.66 Q511.515 1513.66 514.617 1516.09 Q517.719 1518.5 517.719 1522.62 Q517.719 1525.49 516.075 1527.48 Q514.432 1529.45 511.399 1530.21 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M710.218 1532.02 L739.894 1532.02 L739.894 1535.95 L710.218 1535.95 L710.218 1532.02 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M759.987 1517.37 Q756.375 1517.37 754.547 1520.93 Q752.741 1524.47 752.741 1531.6 Q752.741 1538.71 754.547 1542.27 Q756.375 1545.82 759.987 1545.82 Q763.621 1545.82 765.426 1542.27 Q767.255 1538.71 767.255 1531.6 Q767.255 1524.47 765.426 1520.93 Q763.621 1517.37 759.987 1517.37 M759.987 1513.66 Q765.797 1513.66 768.852 1518.27 Q771.931 1522.85 771.931 1531.6 Q771.931 1540.33 768.852 1544.94 Q765.797 1549.52 759.987 1549.52 Q754.176 1549.52 751.098 1544.94 Q748.042 1540.33 748.042 1531.6 Q748.042 1522.85 751.098 1518.27 Q754.176 1513.66 759.987 1513.66 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M780.149 1542.97 L785.033 1542.97 L785.033 1548.85 L780.149 1548.85 L780.149 1542.97 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M799.246 1544.91 L815.565 1544.91 L815.565 1548.85 L793.621 1548.85 L793.621 1544.91 Q796.283 1542.16 800.866 1537.53 Q805.472 1532.88 806.653 1531.53 Q808.898 1529.01 809.778 1527.27 Q810.681 1525.51 810.681 1523.82 Q810.681 1521.07 808.736 1519.33 Q806.815 1517.6 803.713 1517.6 Q801.514 1517.6 799.06 1518.36 Q796.63 1519.13 793.852 1520.68 L793.852 1515.95 Q796.676 1514.82 799.13 1514.24 Q801.584 1513.66 803.621 1513.66 Q808.991 1513.66 812.185 1516.35 Q815.38 1519.03 815.38 1523.52 Q815.38 1525.65 814.57 1527.57 Q813.783 1529.47 811.676 1532.07 Q811.097 1532.74 807.996 1535.95 Q804.894 1539.15 799.246 1544.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1007.54 1532.02 L1037.22 1532.02 L1037.22 1535.95 L1007.54 1535.95 L1007.54 1532.02 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1057.31 1517.37 Q1053.7 1517.37 1051.87 1520.93 Q1050.07 1524.47 1050.07 1531.6 Q1050.07 1538.71 1051.87 1542.27 Q1053.7 1545.82 1057.31 1545.82 Q1060.95 1545.82 1062.75 1542.27 Q1064.58 1538.71 1064.58 1531.6 Q1064.58 1524.47 1062.75 1520.93 Q1060.95 1517.37 1057.31 1517.37 M1057.31 1513.66 Q1063.12 1513.66 1066.18 1518.27 Q1069.26 1522.85 1069.26 1531.6 Q1069.26 1540.33 1066.18 1544.94 Q1063.12 1549.52 1057.31 1549.52 Q1051.5 1549.52 1048.42 1544.94 Q1045.37 1540.33 1045.37 1531.6 Q1045.37 1522.85 1048.42 1518.27 Q1051.5 1513.66 1057.31 1513.66 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1077.47 1542.97 L1082.36 1542.97 L1082.36 1548.85 L1077.47 1548.85 L1077.47 1542.97 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1093.35 1544.91 L1100.99 1544.91 L1100.99 1518.55 L1092.68 1520.21 L1092.68 1515.95 L1100.95 1514.29 L1105.62 1514.29 L1105.62 1544.91 L1113.26 1544.91 L1113.26 1548.85 L1093.35 1548.85 L1093.35 1544.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1335.3 1517.37 Q1331.69 1517.37 1329.86 1520.93 Q1328.05 1524.47 1328.05 1531.6 Q1328.05 1538.71 1329.86 1542.27 Q1331.69 1545.82 1335.3 1545.82 Q1338.93 1545.82 1340.74 1542.27 Q1342.57 1538.71 1342.57 1531.6 Q1342.57 1524.47 1340.74 1520.93 Q1338.93 1517.37 1335.3 1517.37 M1335.3 1513.66 Q1341.11 1513.66 1344.16 1518.27 Q1347.24 1522.85 1347.24 1531.6 Q1347.24 1540.33 1344.16 1544.94 Q1341.11 1549.52 1335.3 1549.52 Q1329.49 1549.52 1326.41 1544.94 Q1323.35 1540.33 1323.35 1531.6 Q1323.35 1522.85 1326.41 1518.27 Q1329.49 1513.66 1335.3 1513.66 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1355.46 1542.97 L1360.34 1542.97 L1360.34 1548.85 L1355.46 1548.85 L1355.46 1542.97 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1380.53 1517.37 Q1376.92 1517.37 1375.09 1520.93 Q1373.28 1524.47 1373.28 1531.6 Q1373.28 1538.71 1375.09 1542.27 Q1376.92 1545.82 1380.53 1545.82 Q1384.16 1545.82 1385.97 1542.27 Q1387.8 1538.71 1387.8 1531.6 Q1387.8 1524.47 1385.97 1520.93 Q1384.16 1517.37 1380.53 1517.37 M1380.53 1513.66 Q1386.34 1513.66 1389.39 1518.27 Q1392.47 1522.85 1392.47 1531.6 Q1392.47 1540.33 1389.39 1544.94 Q1386.34 1549.52 1380.53 1549.52 Q1374.72 1549.52 1371.64 1544.94 Q1368.58 1540.33 1368.58 1531.6 Q1368.58 1522.85 1371.64 1518.27 Q1374.72 1513.66 1380.53 1513.66 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1633.42 1517.37 Q1629.81 1517.37 1627.98 1520.93 Q1626.18 1524.47 1626.18 1531.6 Q1626.18 1538.71 1627.98 1542.27 Q1629.81 1545.82 1633.42 1545.82 Q1637.06 1545.82 1638.86 1542.27 Q1640.69 1538.71 1640.69 1531.6 Q1640.69 1524.47 1638.86 1520.93 Q1637.06 1517.37 1633.42 1517.37 M1633.42 1513.66 Q1639.23 1513.66 1642.29 1518.27 Q1645.37 1522.85 1645.37 1531.6 Q1645.37 1540.33 1642.29 1544.94 Q1639.23 1549.52 1633.42 1549.52 Q1627.61 1549.52 1624.53 1544.94 Q1621.48 1540.33 1621.48 1531.6 Q1621.48 1522.85 1624.53 1518.27 Q1627.61 1513.66 1633.42 1513.66 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1653.58 1542.97 L1658.47 1542.97 L1658.47 1548.85 L1653.58 1548.85 L1653.58 1542.97 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1669.46 1544.91 L1677.1 1544.91 L1677.1 1518.55 L1668.79 1520.21 L1668.79 1515.95 L1677.06 1514.29 L1681.73 1514.29 L1681.73 1544.91 L1689.37 1544.91 L1689.37 1548.85 L1669.46 1548.85 L1669.46 1544.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1931.12 1517.37 Q1927.51 1517.37 1925.68 1520.93 Q1923.87 1524.47 1923.87 1531.6 Q1923.87 1538.71 1925.68 1542.27 Q1927.51 1545.82 1931.12 1545.82 Q1934.75 1545.82 1936.56 1542.27 Q1938.39 1538.71 1938.39 1531.6 Q1938.39 1524.47 1936.56 1520.93 Q1934.75 1517.37 1931.12 1517.37 M1931.12 1513.66 Q1936.93 1513.66 1939.98 1518.27 Q1943.06 1522.85 1943.06 1531.6 Q1943.06 1540.33 1939.98 1544.94 Q1936.93 1549.52 1931.12 1549.52 Q1925.31 1549.52 1922.23 1544.94 Q1919.17 1540.33 1919.17 1531.6 Q1919.17 1522.85 1922.23 1518.27 Q1925.31 1513.66 1931.12 1513.66 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1951.28 1542.97 L1956.16 1542.97 L1956.16 1548.85 L1951.28 1548.85 L1951.28 1542.97 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M1970.38 1544.91 L1986.7 1544.91 L1986.7 1548.85 L1964.75 1548.85 L1964.75 1544.91 Q1967.41 1542.16 1972 1537.53 Q1976.6 1532.88 1977.78 1531.53 Q1980.03 1529.01 1980.91 1527.27 Q1981.81 1525.51 1981.81 1523.82 Q1981.81 1521.07 1979.87 1519.33 Q1977.95 1517.6 1974.84 1517.6 Q1972.64 1517.6 1970.19 1518.36 Q1967.76 1519.13 1964.98 1520.68 L1964.98 1515.95 Q1967.81 1514.82 1970.26 1514.24 Q1972.71 1513.66 1974.75 1513.66 Q1980.12 1513.66 1983.32 1516.35 Q1986.51 1519.03 1986.51 1523.52 Q1986.51 1525.65 1985.7 1527.57 Q1984.91 1529.47 1982.81 1532.07 Q1982.23 1532.74 1979.13 1535.95 Q1976.02 1539.15 1970.38 1544.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M2228.15 1517.37 Q2224.54 1517.37 2222.71 1520.93 Q2220.91 1524.47 2220.91 1531.6 Q2220.91 1538.71 2222.71 1542.27 Q2224.54 1545.82 2228.15 1545.82 Q2231.79 1545.82 2233.59 1542.27 Q2235.42 1538.71 2235.42 1531.6 Q2235.42 1524.47 2233.59 1520.93 Q2231.79 1517.37 2228.15 1517.37 M2228.15 1513.66 Q2233.96 1513.66 2237.02 1518.27 Q2240.1 1522.85 2240.1 1531.6 Q2240.1 1540.33 2237.02 1544.94 Q2233.96 1549.52 2228.15 1549.52 Q2222.34 1549.52 2219.26 1544.94 Q2216.21 1540.33 2216.21 1531.6 Q2216.21 1522.85 2219.26 1518.27 Q2222.34 1513.66 2228.15 1513.66 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M2248.32 1542.97 L2253.2 1542.97 L2253.2 1548.85 L2248.32 1548.85 L2248.32 1542.97 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M2277.55 1530.21 Q2280.91 1530.93 2282.78 1533.2 Q2284.68 1535.47 2284.68 1538.8 Q2284.68 1543.92 2281.16 1546.72 Q2277.64 1549.52 2271.16 1549.52 Q2268.99 1549.52 2266.67 1549.08 Q2264.38 1548.66 2261.93 1547.81 L2261.93 1543.29 Q2263.87 1544.43 2266.19 1545.01 Q2268.5 1545.58 2271.02 1545.58 Q2275.42 1545.58 2277.71 1543.85 Q2280.03 1542.11 2280.03 1538.8 Q2280.03 1535.75 2277.88 1534.03 Q2275.75 1532.3 2271.93 1532.3 L2267.9 1532.3 L2267.9 1528.45 L2272.11 1528.45 Q2275.56 1528.45 2277.39 1527.09 Q2279.22 1525.7 2279.22 1523.11 Q2279.22 1520.45 2277.32 1519.03 Q2275.44 1517.6 2271.93 1517.6 Q2270.01 1517.6 2267.81 1518.01 Q2265.61 1518.43 2262.97 1519.31 L2262.97 1515.14 Q2265.63 1514.4 2267.94 1514.03 Q2270.28 1513.66 2272.34 1513.66 Q2277.67 1513.66 2280.77 1516.09 Q2283.87 1518.5 2283.87 1522.62 Q2283.87 1525.49 2282.23 1527.48 Q2280.58 1529.45 2277.55 1530.21 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 194.422,1397.46 2352.76,1397.46 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 194.422,1070.64 2352.76,1070.64 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 194.422,743.815 2352.76,743.815 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 194.422,416.993 2352.76,416.993 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip942)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 194.422,90.1697 2352.76,90.1697 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 194.422,1486.45 194.422,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 194.422,1397.46 213.32,1397.46 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 194.422,1070.64 213.32,1070.64 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 194.422,743.815 213.32,743.815 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 194.422,416.993 213.32,416.993 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip940)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 194.422,90.1697 213.32,90.1697 \n",
" \"/>\n",
"<path clip-path=\"url(#clip940)\" d=\"M50.9921 1397.91 L80.6679 1397.91 L80.6679 1401.85 L50.9921 1401.85 L50.9921 1397.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M100.76 1383.26 Q97.1493 1383.26 95.3206 1386.82 Q93.515 1390.37 93.515 1397.5 Q93.515 1404.6 95.3206 1408.17 Q97.1493 1411.71 100.76 1411.71 Q104.395 1411.71 106.2 1408.17 Q108.029 1404.6 108.029 1397.5 Q108.029 1390.37 106.2 1386.82 Q104.395 1383.26 100.76 1383.26 M100.76 1379.56 Q106.571 1379.56 109.626 1384.16 Q112.705 1388.75 112.705 1397.5 Q112.705 1406.22 109.626 1410.83 Q106.571 1415.41 100.76 1415.41 Q94.9502 1415.41 91.8715 1410.83 Q88.816 1406.22 88.816 1397.5 Q88.816 1388.75 91.8715 1384.16 Q94.9502 1379.56 100.76 1379.56 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M120.922 1408.86 L125.807 1408.86 L125.807 1414.74 L120.922 1414.74 L120.922 1408.86 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M148.839 1384.26 L137.033 1402.7 L148.839 1402.7 L148.839 1384.26 M147.612 1380.18 L153.492 1380.18 L153.492 1402.7 L158.422 1402.7 L158.422 1406.59 L153.492 1406.59 L153.492 1414.74 L148.839 1414.74 L148.839 1406.59 L133.237 1406.59 L133.237 1402.08 L147.612 1380.18 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M53.0754 1071.09 L82.7512 1071.09 L82.7512 1075.02 L53.0754 1075.02 L53.0754 1071.09 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M102.844 1056.44 Q99.2326 1056.44 97.4039 1060 Q95.5984 1063.54 95.5984 1070.67 Q95.5984 1077.78 97.4039 1081.34 Q99.2326 1084.89 102.844 1084.89 Q106.478 1084.89 108.283 1081.34 Q110.112 1077.78 110.112 1070.67 Q110.112 1063.54 108.283 1060 Q106.478 1056.44 102.844 1056.44 M102.844 1052.73 Q108.654 1052.73 111.709 1057.34 Q114.788 1061.92 114.788 1070.67 Q114.788 1079.4 111.709 1084.01 Q108.654 1088.59 102.844 1088.59 Q97.0335 1088.59 93.9549 1084.01 Q90.8993 1079.4 90.8993 1070.67 Q90.8993 1061.92 93.9549 1057.34 Q97.0335 1052.73 102.844 1052.73 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M123.006 1082.04 L127.89 1082.04 L127.89 1087.92 L123.006 1087.92 L123.006 1082.04 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M142.103 1083.98 L158.422 1083.98 L158.422 1087.92 L136.478 1087.92 L136.478 1083.98 Q139.14 1081.23 143.723 1076.6 Q148.33 1071.95 149.51 1070.6 Q151.755 1068.08 152.635 1066.34 Q153.538 1064.59 153.538 1062.9 Q153.538 1060.14 151.593 1058.4 Q149.672 1056.67 146.57 1056.67 Q144.371 1056.67 141.918 1057.43 Q139.487 1058.2 136.709 1059.75 L136.709 1055.02 Q139.533 1053.89 141.987 1053.31 Q144.441 1052.73 146.478 1052.73 Q151.848 1052.73 155.042 1055.42 Q158.237 1058.1 158.237 1062.59 Q158.237 1064.72 157.427 1066.65 Q156.64 1068.54 154.533 1071.14 Q153.955 1071.81 150.853 1075.02 Q147.751 1078.22 142.103 1083.98 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M101.246 729.614 Q97.6354 729.614 95.8067 733.179 Q94.0012 736.72 94.0012 743.85 Q94.0012 750.957 95.8067 754.521 Q97.6354 758.063 101.246 758.063 Q104.881 758.063 106.686 754.521 Q108.515 750.957 108.515 743.85 Q108.515 736.72 106.686 733.179 Q104.881 729.614 101.246 729.614 M101.246 725.91 Q107.057 725.91 110.112 730.517 Q113.191 735.1 113.191 743.85 Q113.191 752.577 110.112 757.183 Q107.057 761.767 101.246 761.767 Q95.4363 761.767 92.3576 757.183 Q89.3021 752.577 89.3021 743.85 Q89.3021 735.1 92.3576 730.517 Q95.4363 725.91 101.246 725.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M121.408 755.216 L126.293 755.216 L126.293 761.095 L121.408 761.095 L121.408 755.216 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M146.478 729.614 Q142.867 729.614 141.038 733.179 Q139.232 736.72 139.232 743.85 Q139.232 750.957 141.038 754.521 Q142.867 758.063 146.478 758.063 Q150.112 758.063 151.918 754.521 Q153.746 750.957 153.746 743.85 Q153.746 736.72 151.918 733.179 Q150.112 729.614 146.478 729.614 M146.478 725.91 Q152.288 725.91 155.343 730.517 Q158.422 735.1 158.422 743.85 Q158.422 752.577 155.343 757.183 Q152.288 761.767 146.478 761.767 Q140.668 761.767 137.589 757.183 Q134.533 752.577 134.533 743.85 Q134.533 735.1 137.589 730.517 Q140.668 725.91 146.478 725.91 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M102.844 402.791 Q99.2326 402.791 97.4039 406.356 Q95.5984 409.898 95.5984 417.027 Q95.5984 424.134 97.4039 427.698 Q99.2326 431.24 102.844 431.24 Q106.478 431.24 108.283 427.698 Q110.112 424.134 110.112 417.027 Q110.112 409.898 108.283 406.356 Q106.478 402.791 102.844 402.791 M102.844 399.088 Q108.654 399.088 111.709 403.694 Q114.788 408.277 114.788 417.027 Q114.788 425.754 111.709 430.36 Q108.654 434.944 102.844 434.944 Q97.0335 434.944 93.9549 430.36 Q90.8993 425.754 90.8993 417.027 Q90.8993 408.277 93.9549 403.694 Q97.0335 399.088 102.844 399.088 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M123.006 428.393 L127.89 428.393 L127.89 434.273 L123.006 434.273 L123.006 428.393 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M142.103 430.337 L158.422 430.337 L158.422 434.273 L136.478 434.273 L136.478 430.337 Q139.14 427.583 143.723 422.953 Q148.33 418.3 149.51 416.958 Q151.755 414.435 152.635 412.699 Q153.538 410.939 153.538 409.25 Q153.538 406.495 151.593 404.759 Q149.672 403.023 146.57 403.023 Q144.371 403.023 141.918 403.787 Q139.487 404.55 136.709 406.101 L136.709 401.379 Q139.533 400.245 141.987 399.666 Q144.441 399.088 146.478 399.088 Q151.848 399.088 155.042 401.773 Q158.237 404.458 158.237 408.949 Q158.237 411.078 157.427 412.999 Q156.64 414.898 154.533 417.49 Q153.955 418.161 150.853 421.379 Q147.751 424.573 142.103 430.337 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M100.76 75.9684 Q97.1493 75.9684 95.3206 79.5331 Q93.515 83.0748 93.515 90.2044 Q93.515 97.3108 95.3206 100.876 Q97.1493 104.417 100.76 104.417 Q104.395 104.417 106.2 100.876 Q108.029 97.3108 108.029 90.2044 Q108.029 83.0748 106.2 79.5331 Q104.395 75.9684 100.76 75.9684 M100.76 72.2647 Q106.571 72.2647 109.626 76.8711 Q112.705 81.4544 112.705 90.2044 Q112.705 98.9312 109.626 103.538 Q106.571 108.121 100.76 108.121 Q94.9502 108.121 91.8715 103.538 Q88.816 98.9312 88.816 90.2044 Q88.816 81.4544 91.8715 76.8711 Q94.9502 72.2647 100.76 72.2647 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M120.922 101.57 L125.807 101.57 L125.807 107.45 L120.922 107.45 L120.922 101.57 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip940)\" d=\"M148.839 76.9637 L137.033 95.4127 L148.839 95.4127 L148.839 76.9637 M147.612 72.8897 L153.492 72.8897 L153.492 95.4127 L158.422 95.4127 L158.422 99.3016 L153.492 99.3016 L153.492 107.45 L148.839 107.45 L148.839 99.3016 L133.237 99.3016 L133.237 94.7877 L147.612 72.8897 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><circle clip-path=\"url(#clip942)\" cx=\"878.42\" cy=\"274.631\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1949.49\" cy=\"688.238\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"255.507\" cy=\"87.9763\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"279.093\" cy=\"893.802\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1345.4\" cy=\"477.594\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1128.39\" cy=\"848.748\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"2098.61\" cy=\"576.712\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1471.44\" cy=\"909.117\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1867.95\" cy=\"567.3\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"2202.9\" cy=\"259.661\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1273.67\" cy=\"688.936\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1523.39\" cy=\"755.412\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1943.63\" cy=\"1037.51\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"987.102\" cy=\"622.602\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1882.78\" cy=\"816.455\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"731.028\" cy=\"1049.63\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1607.37\" cy=\"989.057\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1593.94\" cy=\"1317.01\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1243.06\" cy=\"1014.47\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1831.29\" cy=\"1048.37\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1027.05\" cy=\"1445.72\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1683.07\" cy=\"795.065\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"736.947\" cy=\"639.987\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1210.38\" cy=\"606.233\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1030.1\" cy=\"753.648\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1448.31\" cy=\"823.228\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"2291.67\" cy=\"484.085\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1595.25\" cy=\"610.296\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"844.006\" cy=\"998.265\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"1643.77\" cy=\"381.646\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"<circle clip-path=\"url(#clip942)\" cx=\"490.294\" cy=\"596.875\" r=\"14\" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
"</svg>\n"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scatter(s.U[:,1],s.U[:,2],label=\"\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.7.2",
"language": "julia",
"name": "julia-1.7"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment