This is an automated email from the ASF dual-hosted git repository. ovilia pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/echarts-custom-series.git
The following commit(s) were added to refs/heads/main by this push: new ffeb026 chore: add screenshots ffeb026 is described below commit ffeb0264877c182d73c53c170538ea4bec59f475 Author: Ovilia <zwl.s...@gmail.com> AuthorDate: Fri Sep 13 14:53:46 2024 +0800 chore: add screenshots --- README.md | 19 ++- custom-series/barRange/README.md | 73 ++++++++ custom-series/barRange/src/index.ts | 6 +- custom-series/violin/README.md | 60 +++++++ custom-series/violin/src/index.ts | 5 +- package-lock.json | 26 +++ package.json | 6 +- screenshots/barRange.svg | 62 +++++++ screenshots/violin.svg | 331 ++++++++++++++++++++++++++++++++++++ scripts/template/README.md | 23 +++ scripts/thumbnail.js | 104 +++++++++++ 11 files changed, 709 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4b1f680..086757c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ This repo provides some custom series for [Apache ECharts](https://github.com/ap ## List of Custom Series -TODO +| [barRange](custom-series/barRange) <br>  | [violin](custom-series/violin) <br>  | +| ----------------------------------------------------------------------------- | --------------------------------------------------------------------- | ## Setup @@ -25,10 +26,10 @@ npm link echarts ## Create A New Custom Series ```bash -npm run create <series-name> +npm run generate <series-name> ``` -The generated files are in `custom-series/<series-name>`. Note that if there are multiple words in the series name, they should be in camel case like `npm run create barRange`. +The generated files are in `custom-series/<series-name>`. Note that if there are multiple words in the series name, they should be in camel case like `npm run generate barRange`. ## Build @@ -51,3 +52,15 @@ For example, to build `custom-series/violin`, run: ```bash npm run build violin ``` + +## Generate Thumbnails + +```bash +npm run thumbnail +# or +npm run thumbnail <series-name> +``` + +## Publish to the npm registry + +TODO diff --git a/custom-series/barRange/README.md b/custom-series/barRange/README.md new file mode 100644 index 0000000..7a96eda --- /dev/null +++ b/custom-series/barRange/README.md @@ -0,0 +1,73 @@ +# barRange + +`barRange` is a custom series for [Apache ECharts](https://github.com/apache/echarts). It's typically used to display the range of data using bars. + + + +## Usage + +Import the custom series JavaScript file and ECharts, then use `echarts.use` to install it. + +```html +<script src="./node_modules/echarts/dist/echarts.js"></script> +<script src="./dist/index.js"></script> +<script> + echarts.use(window.barRangeCustomSeriesInstaller); + const chart = echarts.init(...); + // ... +</script> +``` + +Or, if using module bundler, install the package from npm and import it. + +```bash +npm install @echarts/custom-bar-range +``` + +```js +import echarts from 'echarts'; +import barRangeCustomSeriesInstaller from '@echarts/custom-bar-range'; + +echarts.use(barRangeCustomSeriesInstaller); +``` + +See [test](./test/index.html) for more details. + +## API + +### series.data + +The data of the series is an array of arrays. Each sub-array represents a bar. + +```js +const data = [ + [0, 26.7, 32.5], + [1, 25.3, 32.4], +]; +``` + +The first element of the sub-array is the x value. The second and third elements are the lower and upper bounds of the bar. + +### series.itemPayload + +The `itemPayload` is an object that contains the following properties: + +| Property | Type | Default | Description | +| -------------- | -------- | ------- | ----------------------------------------- | --------------------- | +| `barWidth` | `number | string` | `70%` | The width of the bar. | +| `borderRadius` | `number` | `0` | The border radius of the bar. | +| `margin` | `number` | `10` | The margin between the bars and the text. | + +### series.encode + +To make sure the value axis and tooltip take the correct range, `encode` should be set as follows: + +```js +encode: { + x: 0, + y: [1, 2], + tooltip: [1, 2] +} +``` + +See [test](./test/index.html) for more details. diff --git a/custom-series/barRange/src/index.ts b/custom-series/barRange/src/index.ts index 1d209d2..9ba2c3f 100644 --- a/custom-series/barRange/src/index.ts +++ b/custom-series/barRange/src/index.ts @@ -34,7 +34,11 @@ const renderItem = ( const valueEnd = api.value(2); const coordEnd = api.coord([x, valueEnd]); const bandWidth = api.coord([1, 0])[0] - api.coord([0, 0])[0]; - const barWidthRaw = params.itemPayload.barWidth as number | string; + + let barWidthRaw = params.itemPayload.barWidth as number | string; + if (barWidthRaw == null) { + barWidthRaw = '70%'; + } const barWidth: number = typeof barWidthRaw === 'string' && barWidthRaw.endsWith('%') ? (parseFloat(barWidthRaw) / 100) * bandWidth diff --git a/custom-series/violin/README.md b/custom-series/violin/README.md new file mode 100644 index 0000000..a6f85d2 --- /dev/null +++ b/custom-series/violin/README.md @@ -0,0 +1,60 @@ +# violin + +`violin` is a custom series for [Apache ECharts](https://github.com/apache/echarts). It's typically used to display the distribution of data using violin plots. + + + +## Usage + +Import the custom series JavaScript file and ECharts, then use `echarts.use` to install it. + +```html +<script src="./node_modules/echarts/dist/echarts.js"></script> +<script src="./dist/index.js"></script> +<script> + echarts.use(window.violinCustomSeriesInstaller); + const chart = echarts.init(...); + // ... +</script> +``` + +Or, if using module bundler, install the package from npm and import it. + +```bash +npm install @echarts/custom-violin +``` + +```js +import echarts from 'echarts'; +import violinCustomSeriesInstaller from '@echarts/custom-violin'; + +echarts.use(violinCustomSeriesInstaller); +``` + +See [test](./test/index.html) for more details. + +## API + +### series.data + +The data of the series is an array of arrays. Each sub-array represents a scatter point. + +```js +const data = [ + [0, 26.7], + [1, 25.3], +]; +``` + +The first element of the sub-array is the x value. The second element is the y value. The data with the same x value will be grouped into a violin. + +### series.itemPayload + +The `itemPayload` is an object that contains the following properties: + +| Property | Type | Default | Description | +| ---------------- | -------- | ------- | ------------------------------------------------------------------------------------------------- | +| `symbolSize` | `number` | `10` | The size of the symbol. | +| `areaOpacity` | `number` | `0.5` | The opacity of the area. | +| `bandWidthScale` | `number` | `1` | The scale of the amplitude of the violin. | +| `binCount` | `number` | `100` | The number of bins for the violin plot. The more bins, the more detailed the violin plot will be. | diff --git a/custom-series/violin/src/index.ts b/custom-series/violin/src/index.ts index 052af4a..e92de15 100644 --- a/custom-series/violin/src/index.ts +++ b/custom-series/violin/src/index.ts @@ -66,7 +66,10 @@ const renderItem = ( } else { violins = params.context.violins as any; } - const symbolSize = params.itemPayload.symbolSize; + let symbolSize = params.itemPayload.symbolSize; + if (symbolSize == null) { + symbolSize = 10; + } const xValue = api.value(0) as number; const yValue = api.value(1) as number; const coord = api.coord([xValue, yValue]); diff --git a/package-lock.json b/package-lock.json index 0dca759..e4ed38d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ }, "devDependencies": { "chokidar": "^3.6.0", + "echarts": "^5.5.1", "http-server": "^14.1.1", "rollup": "^4.21.2", "terser": "^5.31.6", @@ -496,6 +497,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/echarts": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.1.tgz", + "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", + "dev": true, + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.6.0" + } + }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", @@ -1075,6 +1086,12 @@ "node": ">=8.0" } }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + }, "node_modules/typescript": { "version": "5.5.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", @@ -1117,6 +1134,15 @@ "engines": { "node": ">=12" } + }, + "node_modules/zrender": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.0.tgz", + "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", + "dev": true, + "dependencies": { + "tslib": "2.3.0" + } } } } diff --git a/package.json b/package.json index ad27c02..e0cb2f1 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,11 @@ "scripts": { "build": "node scripts/build.js", "generate": "node scripts/generate.js", + "thumbnail": "node scripts/thumbnail.js", "serve": "node scripts/serve.js", - "g": "npm run generate" + "g": "npm run generate", + "t": "npm run thumbnail", + "s": "npm run serve" }, "repository": { "type": "git", @@ -20,6 +23,7 @@ "homepage": "https://github.com/apache/echarts-custom-series#readme", "devDependencies": { "chokidar": "^3.6.0", + "echarts": "^5.5.1", "http-server": "^14.1.1", "rollup": "^4.21.2", "terser": "^5.31.6", diff --git a/screenshots/barRange.svg b/screenshots/barRange.svg new file mode 100644 index 0000000..f881ea3 --- /dev/null +++ b/screenshots/barRange.svg @@ -0,0 +1,62 @@ +<svg width="600" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" viewBox="0 0 600 400"> +<rect width="600" height="400" x="0" y="0" fill="#fff"></rect> +<path d="M60 330.5L540 330.5" fill="transparent" stroke="#E0E6F1" class="zr0-cls-0"></path> +<path d="M60 262.5L540 262.5" fill="transparent" stroke="#E0E6F1" class="zr0-cls-0"></path> +<path d="M60 195.5L540 195.5" fill="transparent" stroke="#E0E6F1" class="zr0-cls-0"></path> +<path d="M60 127.5L540 127.5" fill="transparent" stroke="#E0E6F1" class="zr0-cls-0"></path> +<path d="M60 60.5L540 60.5" fill="transparent" stroke="#E0E6F1" class="zr0-cls-0"></path> +<path d="M60 330.5L540 330.5" fill="transparent" stroke="#6E7079" stroke-linecap="round" class="zr0-cls-0"></path> +<path d="M60.5 330L60.5 335" fill="transparent" stroke="#6E7079" class="zr0-cls-0"></path> +<path d="M128.5 330L128.5 335" fill="transparent" stroke="#6E7079" class="zr0-cls-0"></path> +<path d="M197.5 330L197.5 335" fill="transparent" stroke="#6E7079" class="zr0-cls-0"></path> +<path d="M265.5 330L265.5 335" fill="transparent" stroke="#6E7079" class="zr0-cls-0"></path> +<path d="M334.5 330L334.5 335" fill="transparent" stroke="#6E7079" class="zr0-cls-0"></path> +<path d="M403.5 330L403.5 335" fill="transparent" stroke="#6E7079" class="zr0-cls-0"></path> +<path d="M471.5 330L471.5 335" fill="transparent" stroke="#6E7079" class="zr0-cls-0"></path> +<path d="M540.5 330L540.5 335" fill="transparent" stroke="#6E7079" class="zr0-cls-0"></path> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 330)" fill="#6E7079">0</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 262.5)" fill="#6E7079">10</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 195)" fill="#6E7079">20</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 127.5)" fill="#6E7079">30</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 60)" fill="#6E7079">40</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(94.2857 338)" fill="#6E7079">Sun</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(162.8571 338)" fill="#6E7079">Mon</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(231.4286 338)" fill="#6E7079">Tue</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(300 338)" fill="#6E7079">Wed</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(368.5714 338)" fill="#6E7079">Thu</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(437.1429 338)" fill="#6E7079">Fri</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(505.7143 338)" fill="#6E7079">Sat</text> +<path d="M94.3 110.6A5 5 0 0 1 99.3 115.6L99.3 144.8A5 5 0 0 1 94.3 149.8A5 5 0 0 1 89.3 144.8L89.3 115.6A5 5 0 0 1 94.3 110.6" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="0" ecmeta_ssr_type="chart" class="zr0-cls-1"></path> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="-6" transform="translate(94.2857 100.625)" fill="#333">32.5℃</text> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="6" transform="translate(94.2857 159.775)" fill="#333">26.7℃</text> +<path d="M162.9 111.3A5 5 0 0 1 167.9 116.3L167.9 154.2A5 5 0 0 1 162.9 159.2A5 5 0 0 1 157.9 154.2L157.9 116.3A5 5 0 0 1 162.9 111.3" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="1" ecmeta_ssr_type="chart" class="zr0-cls-1"></path> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="-6" transform="translate(162.8571 101.3)" fill="#333">32.4℃</text> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="6" transform="translate(162.8571 169.225)" fill="#333">25.3℃</text> +<path d="M231.4 109.3A5 5 0 0 1 236.4 114.3L236.4 159A5 5 0 0 1 231.4 164A5 5 0 0 1 226.4 159L226.4 114.3A5 5 0 0 1 231.4 109.3" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="2" ecmeta_ssr_type="chart" class="zr0-cls-1"></path> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="-6" transform="translate(231.4286 99.275)" fill="#333">32.7℃</text> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="6" transform="translate(231.4286 173.95)" fill="#333">24.6℃</text> +<path d="M300 88.4A5 5 0 0 1 305 93.4L305 144.1A5 5 0 0 1 300 149.1A5 5 0 0 1 295 144.1L295 93.4A5 5 0 0 1 300 88.4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="3" ecmeta_ssr_type="chart" class="zr0-cls-1"></path> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="-6" transform="translate(300 78.35)" fill="#333">35.8℃</text> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="6" transform="translate(300 159.1)" fill="#333">26.8℃</text> +<path d="M368.6 106.6A5 5 0 0 1 373.6 111.6L373.6 148.2A5 5 0 0 1 368.6 153.2A5 5 0 0 1 363.6 148.2L363.6 111.6A5 5 0 0 1 368.6 106.6" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="4" ecmeta_ssr_type="chart" class="zr0-cls-1"></path> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="-6" transform="translate(368.5714 96.575)" fill="#333">33.1℃</text> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="6" transform="translate(368.5714 163.15)" fill="#333">26.2℃</text> +<path d="M437.1 118.1A5 5 0 0 1 442.1 123.1L442.1 156.9A5 5 0 0 1 437.1 161.9A5 5 0 0 1 432.1 156.9L432.1 123.1A5 5 0 0 1 437.1 118.1" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="5" ecmeta_ssr_type="chart" class="zr0-cls-1"></path> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="-6" transform="translate(437.1429 108.05)" fill="#333">31.4℃</text> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="6" transform="translate(437.1429 171.925)" fill="#333">24.9℃</text> +<path d="M505.7 107.9A5 5 0 0 1 510.7 112.9L510.7 154.2A5 5 0 0 1 505.7 159.2A5 5 0 0 1 500.7 154.2L500.7 112.9A5 5 0 0 1 505.7 107.9" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="6" ecmeta_ssr_type="chart" class="zr0-cls-1"></path> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="-6" transform="translate(505.7143 97.925)" fill="#333">32.9℃</text> +<text dominant-baseline="central" text-anchor="middle" style="font: 12px sans-serif" y="6" transform="translate(505.7143 169.225)" fill="#333">25.3℃</text> +<style ><![CDATA[ +.zr0-cls-0:hover { +pointer-events:none; +} +.zr0-cls-1:hover { +cursor:pointer; +fill:rgba(92,123,217,1); +} + +]]> + +</style> +</svg> \ No newline at end of file diff --git a/screenshots/violin.svg b/screenshots/violin.svg new file mode 100644 index 0000000..6f2a43d --- /dev/null +++ b/screenshots/violin.svg @@ -0,0 +1,331 @@ +<svg width="600" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" viewBox="0 0 600 400"> +<rect width="600" height="400" x="0" y="0" fill="#fff"></rect> +<path d="M60 330.5L540 330.5" fill="transparent" stroke="#E0E6F1" class="zr2-cls-2"></path> +<path d="M60 285.5L540 285.5" fill="transparent" stroke="#E0E6F1" class="zr2-cls-2"></path> +<path d="M60 240.5L540 240.5" fill="transparent" stroke="#E0E6F1" class="zr2-cls-2"></path> +<path d="M60 195.5L540 195.5" fill="transparent" stroke="#E0E6F1" class="zr2-cls-2"></path> +<path d="M60 150.5L540 150.5" fill="transparent" stroke="#E0E6F1" class="zr2-cls-2"></path> +<path d="M60 105.5L540 105.5" fill="transparent" stroke="#E0E6F1" class="zr2-cls-2"></path> +<path d="M60 60.5L540 60.5" fill="transparent" stroke="#E0E6F1" class="zr2-cls-2"></path> +<path d="M60 330.5L540 330.5" fill="transparent" stroke="#6E7079" stroke-linecap="round" class="zr2-cls-2"></path> +<path d="M60.5 330L60.5 335" fill="transparent" stroke="#6E7079" class="zr2-cls-2"></path> +<path d="M128.5 330L128.5 335" fill="transparent" stroke="#6E7079" class="zr2-cls-2"></path> +<path d="M197.5 330L197.5 335" fill="transparent" stroke="#6E7079" class="zr2-cls-2"></path> +<path d="M265.5 330L265.5 335" fill="transparent" stroke="#6E7079" class="zr2-cls-2"></path> +<path d="M334.5 330L334.5 335" fill="transparent" stroke="#6E7079" class="zr2-cls-2"></path> +<path d="M403.5 330L403.5 335" fill="transparent" stroke="#6E7079" class="zr2-cls-2"></path> +<path d="M471.5 330L471.5 335" fill="transparent" stroke="#6E7079" class="zr2-cls-2"></path> +<path d="M540.5 330L540.5 335" fill="transparent" stroke="#6E7079" class="zr2-cls-2"></path> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 330)" fill="#6E7079">0</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 285)" fill="#6E7079">1</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 240)" fill="#6E7079">2</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 195)" fill="#6E7079">3</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 150)" fill="#6E7079">4</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 105)" fill="#6E7079">5</text> +<text dominant-baseline="central" text-anchor="end" style="font-size:12px;font-family:sans-serif;" transform="translate(52 60)" fill="#6E7079">6</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(94.2857 338)" fill="#6E7079">Mon</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(162.8571 338)" fill="#6E7079">Tue</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(231.4286 338)" fill="#6E7079">Wed</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(300 338)" fill="#6E7079">Thu</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(368.5714 338)" fill="#6E7079">Fri</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(437.1429 338)" fill="#6E7079">Sat</text> +<text dominant-baseline="central" text-anchor="middle" style="font-size:12px;font-family:sans-serif;" y="6" transform="translate(505.7143 338)" fill="#6E7079">Sun</text> +<circle cx="94.3" cy="205" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="0" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<polygon points="94.8 280 95.4 275.5 96.1 270.9 96.8 266.4 97.9 261.8 99.6 257.3 101.7 252.7 103.6 248.2 105.3 243.6 106.9 239.1 108.4 234.5 109.8 230 111.4 225.5 112.5 220.9 113.4 216.4 114.1 211.8 114.7 207.3 115 202.7 115.1 198.2 114.9 193.6 114.8 189.1 114.4 184.5 113.4 180 112.2 175.5 111.2 170.9 110.7 166.4 110.4 161.8 109.8 157.3 109.1 152.7 108.3 148.2 107.3 143.6 106.3 139.1 105.4 134.5 104.3 130 103 125.5 101.8 120.9 100.8 116.4 99.9 111.8 99.1 107.3 98.4 102.7 97.8 98.2 97.2 9 [...] +<circle cx="94.3" cy="151.9" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="1" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="213.6" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="2" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="237.4" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="3" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="219" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="4" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="185" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="5" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="158.6" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="6" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="186" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="7" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="218.6" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="8" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="221.7" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="9" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="167.4" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="10" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="145.1" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="11" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="216.2" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="12" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="238.7" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="13" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="126.5" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="14" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="155.2" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="15" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="134" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="16" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="167.9" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="17" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="186" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="18" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="215.9" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="19" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="239.2" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="20" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="229" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="21" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="127.9" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="22" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="199.7" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="23" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="214.7" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="24" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="113" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="25" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="222.3" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="26" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="188" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="27" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="166.4" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="28" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="222" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="29" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="212.7" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="30" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="239.8" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="31" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="177" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="32" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="194.1" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="33" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="108.1" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="34" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="211.6" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="35" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="197" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="36" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="186.5" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="37" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="163.1" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="38" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="214.7" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="39" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="173.1" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="40" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="158.6" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="41" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="149.3" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="42" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="169.3" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="43" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="94.3" cy="121.5" r="4" fill="#5470c6" ecmeta_series_index="0" ecmeta_data_index="44" ecmeta_ssr_type="chart" class="zr2-cls-3"></circle> +<circle cx="162.9" cy="183.5" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="45" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<polygon points="163 239.1 163.4 234.5 164.2 230 165.3 225.5 166.5 220.9 167.5 216.4 168.8 211.8 170.2 207.3 171.9 202.7 173.5 198.2 175 193.6 176.6 189.1 177.9 184.5 179 180 179.6 175.5 179.9 170.9 179.9 166.4 179.6 161.8 179.2 157.3 178.7 152.7 178.4 148.2 178 143.6 177.7 139.1 177.9 134.5 177.8 130 177.7 125.5 178.1 120.9 178.6 116.4 179.1 111.8 179.4 107.3 179.5 102.7 179.6 98.2 179.4 93.6 178.8 89.1 177.9 84.5 176.7 80 175.2 75.5 173.5 70.9 171.9 66.4 170.4 61.8 169 57.3 167.6 52.7 [...] +<circle cx="162.9" cy="84.2" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="46" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="125" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="47" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="169.4" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="48" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="170.3" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="49" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="108.1" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="50" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="116" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="51" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="194.2" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="52" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="99.7" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="53" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="164.1" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="54" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="190.4" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="55" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="106.9" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="56" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="94.2" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="57" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="157.6" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="58" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="78.9" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="59" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="178.8" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="60" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="76.6" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="61" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="163.8" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="62" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="94.9" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="63" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="160.7" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="64" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="186.9" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="65" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="93.9" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="66" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="109.8" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="67" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="115.3" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="68" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="150.7" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="69" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="160.4" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="70" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="71.9" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="71" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="140.8" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="72" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="83.4" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="73" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="149.6" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="74" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="109.6" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="75" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="83.8" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="76" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="95.1" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="77" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="187.5" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="78" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="196.7" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="79" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="146.4" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="80" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="79.8" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="81" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="193.4" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="82" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="169.4" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="83" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="113.3" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="84" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="184.9" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="85" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="150.4" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="86" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="83.2" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="87" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="168.4" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="88" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="162.9" cy="120.3" r="4" fill="#91cc75" ecmeta_series_index="0" ecmeta_data_index="89" ecmeta_ssr_type="chart" class="zr2-cls-4"></circle> +<circle cx="231.4" cy="269.7" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="90" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<polygon points="231.9 330 232.7 325.5 233.8 320.9 235 316.4 236.6 311.8 238.3 307.3 240.4 302.7 242.7 298.2 244.7 293.6 246.5 289.1 248.2 284.5 249.6 280 250.7 275.5 251.6 270.9 252.3 266.4 252.4 261.8 252.3 257.3 251.8 252.7 251 248.2 249.8 243.6 248.6 239.1 247.4 234.5 246.3 230 245 225.5 244.1 220.9 243.2 216.4 242.8 211.8 242.9 207.3 242.7 202.7 242.5 198.2 242.6 193.6 242.4 189.1 242 184.5 241.7 180 241.3 175.5 240.6 170.9 239.9 166.4 239.2 161.8 238.6 157.3 237.9 152.7 237 148.2 2 [...] +<circle cx="231.4" cy="287.4" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="91" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="217.2" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="92" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="204.3" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="93" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="259.4" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="94" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="156.7" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="95" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="227" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="96" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="175.1" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="97" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="208.2" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="98" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="273.6" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="99" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="288.3" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="100" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="167" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="101" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="246.2" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="102" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="257.8" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="103" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="284.1" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="104" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="263.6" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="105" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="288.8" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="106" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="263.3" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="107" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="229.2" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="108" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="264.1" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="109" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="281.1" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="110" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="188.2" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="111" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="261.3" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="112" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="273.3" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="113" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="256.8" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="114" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="167.2" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="115" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="231.4" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="116" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="280.9" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="117" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="241.7" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="118" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="179.5" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="119" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="271.2" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="120" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="155.3" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="121" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="210.8" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="122" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="243.2" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="123" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="231.4" cy="190.7" r="4" fill="#fac858" ecmeta_series_index="0" ecmeta_data_index="124" ecmeta_ssr_type="chart" class="zr2-cls-5"></circle> +<circle cx="300" cy="191.1" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="125" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<polygon points="300.1 284.5 300.7 280 301.2 275.5 301.9 270.9 302.5 266.4 303.1 261.8 303.9 257.3 304.7 252.7 305.5 248.2 306.5 243.6 307.2 239.1 307.9 234.5 308.5 230 309.2 225.5 309.9 220.9 310.6 216.4 311.3 211.8 311.7 207.3 312.1 202.7 313.2 198.2 314.4 193.6 316.1 189.1 317.5 184.5 319.1 180 320.2 175.5 321 170.9 321.5 166.4 321.8 161.8 322 157.3 322.3 152.7 322 148.2 321.4 143.6 320.3 139.1 318.9 134.5 317.4 130 315.6 125.5 313.7 120.9 311.3 116.4 309 111.8 307.5 107.3 306.1 102.7 [...] +<circle cx="300" cy="111.4" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="126" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="131.7" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="127" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="158.4" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="128" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="159.9" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="129" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="155.3" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="130" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="141.4" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="131" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="158.6" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="132" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="170.2" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="133" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="239.7" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="134" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="211" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="135" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="203.1" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="136" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="113.5" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="137" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="173.7" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="138" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="179.7" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="139" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="155.2" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="140" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="155.7" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="141" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="147.2" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="142" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="229" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="143" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="183.7" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="144" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="241.3" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="145" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="147.9" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="146" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="141.1" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="147" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="118.2" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="148" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="300" cy="216.6" r="4" fill="#ee6666" ecmeta_series_index="0" ecmeta_data_index="149" ecmeta_ssr_type="chart" class="zr2-cls-6"></circle> +<circle cx="368.6" cy="139.2" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="150" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<polygon points="369 248.2 369.3 243.6 369.9 239.1 370.6 234.5 371.4 230 372.6 225.5 374.1 220.9 375.5 216.4 376.7 211.8 378.2 207.3 380 202.7 381.8 198.2 383.2 193.6 384.6 189.1 385.7 184.5 386.7 180 387.4 175.5 387.6 170.9 387.8 166.4 388.1 161.8 388.5 157.3 388.7 152.7 388.9 148.2 388.8 143.6 388.7 139.1 388.5 134.5 388.1 130 387.4 125.5 386.4 120.9 385.4 116.4 384.7 111.8 383.7 107.3 382.4 102.7 381.1 98.2 379.7 93.6 378.2 89.1 376.5 84.5 374.6 80 373.1 75.5 371.9 70.9 370.9 66.4 370 [...] +<circle cx="368.6" cy="158.8" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="151" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="177.3" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="152" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="208.1" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="153" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="125.5" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="154" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="206.4" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="155" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="142.6" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="156" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="181.9" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="157" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="123.9" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="158" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="164.9" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="159" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="125.2" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="160" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="181.2" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="161" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="161.7" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="162" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="82.5" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="163" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="168.2" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="164" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="148" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="165" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="112.7" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="166" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="149.6" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="167" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="133.9" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="168" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="166.9" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="169" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="99.5" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="170" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="117" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="171" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="99.7" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="172" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="114.8" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="173" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="105.8" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="174" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="187.2" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="175" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="161.4" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="176" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="185.7" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="177" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="198.4" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="178" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="161" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="179" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="121.1" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="180" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="108.5" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="181" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="187" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="182" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="119.9" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="183" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="368.6" cy="194.2" r="4" fill="#73c0de" ecmeta_series_index="0" ecmeta_data_index="184" ecmeta_ssr_type="chart" class="zr2-cls-7"></circle> +<circle cx="437.1" cy="188.5" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="185" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<polygon points="441.8 330 442.8 325.5 443.7 320.9 444.6 316.4 445.4 311.8 446.2 307.3 447.3 302.7 448.5 298.2 449.4 293.6 450.3 289.1 450.9 284.5 451.2 280 451.1 275.5 450.9 270.9 450.6 266.4 450.5 261.8 450.2 257.3 450.5 252.7 450.9 248.2 451.4 243.6 451.8 239.1 452.4 234.5 453.2 230 453.9 225.5 454.4 220.9 454.7 216.4 455 211.8 455.2 207.3 455 202.7 454.7 198.2 454.1 193.6 453.1 189.1 451.7 184.5 450.3 180 448.5 175.5 446.5 170.9 444.5 166.4 443.1 161.8 441.7 157.3 440.3 152.7 438.8 1 [...] +<circle cx="437.1" cy="230.2" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="186" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="209.4" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="187" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="260.8" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="188" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="314.7" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="189" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="297.8" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="190" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="312.2" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="191" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="291.1" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="192" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="191.4" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="193" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="215.4" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="194" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="213.2" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="195" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="190.6" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="196" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="211.3" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="197" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="203.4" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="198" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="211.9" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="199" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="294.2" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="200" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="291.6" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="201" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="248.2" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="202" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="257" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="203" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="299.7" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="204" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="264.7" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="205" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="263.1" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="206" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="182.5" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="207" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="191.3" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="208" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="211.8" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="209" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="192.5" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="210" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="182.3" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="211" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="209.5" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="212" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="278.1" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="213" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="188.2" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="214" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="266.5" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="215" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="313.8" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="216" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="229.7" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="217" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="194.9" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="218" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="210.7" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="219" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="287.5" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="220" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="258.2" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="221" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="243.9" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="222" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="310.1" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="223" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="249.7" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="224" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="221.8" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="225" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="196.5" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="226" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="271.8" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="227" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="259.7" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="228" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="437.1" cy="183.2" r="4" fill="#3ba272" ecmeta_series_index="0" ecmeta_data_index="229" ecmeta_ssr_type="chart" class="zr2-cls-8"></circle> +<circle cx="505.7" cy="211.9" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="230" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<polygon points="505.8 289.1 506.2 284.5 506.8 280 507.5 275.5 508.4 270.9 509.8 266.4 511.6 261.8 513.2 257.3 515.1 252.7 517.1 248.2 518.9 243.6 520.5 239.1 521.6 234.5 522.3 230 523 225.5 523.3 220.9 523.1 216.4 522.9 211.8 522.5 207.3 521.6 202.7 520.5 198.2 519.3 193.6 518.6 189.1 518 184.5 517.6 180 517.3 175.5 517.3 170.9 517 166.4 517.6 161.8 518.4 157.3 519.6 152.7 520.4 148.2 520.8 143.6 520.8 139.1 520.7 134.5 520.2 130 519.3 125.5 518.6 120.9 517.7 116.4 516.5 111.8 514.9 107 [...] +<circle cx="505.7" cy="225.8" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="231" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="227.3" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="232" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="148.7" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="233" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="184.4" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="234" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="203.8" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="235" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="245.4" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="236" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="169.9" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="237" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="122.7" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="238" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="113.1" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="239" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="241.7" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="240" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="148.9" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="241" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="119.1" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="242" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="211.7" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="243" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="141.5" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="244" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="207.5" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="245" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="149.2" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="246" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="220.3" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="247" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="227.4" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="248" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="220.6" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="249" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="169.1" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="250" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="234.6" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="251" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="112.1" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="252" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="121.8" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="253" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<circle cx="505.7" cy="141" r="4" fill="#fc8452" ecmeta_series_index="0" ecmeta_data_index="254" ecmeta_ssr_type="chart" class="zr2-cls-9"></circle> +<style ><![CDATA[ +.zr2-cls-2:hover { +pointer-events:none; +} +.zr2-cls-3:hover { +cursor:pointer; +fill:rgba(92,123,217,1); +} +.zr2-cls-4:hover { +cursor:pointer; +fill:rgba(159,224,128,1); +} +.zr2-cls-5:hover { +cursor:pointer; +fill:rgba(255,220,96,1); +} +.zr2-cls-6:hover { +cursor:pointer; +fill:rgba(255,112,112,1); +} +.zr2-cls-7:hover { +cursor:pointer; +fill:rgba(126,211,244,1); +} +.zr2-cls-8:hover { +cursor:pointer; +fill:rgba(64,178,125,1); +} +.zr2-cls-9:hover { +cursor:pointer; +fill:rgba(255,145,90,1); +} + +]]> + +</style> +</svg> \ No newline at end of file diff --git a/scripts/template/README.md b/scripts/template/README.md index 1657fa8..5737c87 100644 --- a/scripts/template/README.md +++ b/scripts/template/README.md @@ -1,5 +1,9 @@ # $CUSTOM_SERIES_NAME$ +`$CUSTOM_SERIES_NAME$` is a custom series for [Apache ECharts](https://github.com/apache/echarts). It's typically used to ... + + + ## Usage Import the custom series JavaScript file and ECharts, then use `echarts.use` to install it. @@ -26,3 +30,22 @@ import $CUSTOM_SERIES_NAME$CustomSeriesInstaller from '@echarts/custom-$CUSTOM_S echarts.use($CUSTOM_SERIES_NAME$CustomSeriesInstaller); ``` + +See [test](./test/index.html) for more details. + +## API + +### series.data + +The data of the series is an array of arrays. Each sub-array represents ... + +```js +const data = []; +``` + +### series.itemPayload + +The `itemPayload` is an object that contains the following properties: + +| Property | Type | Default | Description | +| -------- | ---- | ------- | ----------- | diff --git a/scripts/thumbnail.js b/scripts/thumbnail.js new file mode 100644 index 0000000..f915f56 --- /dev/null +++ b/scripts/thumbnail.js @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const fs = require('fs'); +const path = require('path'); +const echarts = require('echarts'); +const chalk = require('chalk'); +/** + * Generate a thumbnail for the custom series using SVG SSR. + */ +function thumbnail(seriesName) { + const seriesPath = path.join(__dirname, '..', 'custom-series', seriesName); + const testPath = path.join(seriesPath, 'test', 'index.html'); + const outputPath = path.join('./screenshots', `${seriesName}.svg`); + + // Install the custom series + const customSeries = require(`../custom-series/${seriesName}`); + echarts.use(customSeries); + + let chart = echarts.init(null, null, { + renderer: 'svg', + ssr: true, + width: 600, + height: 400, + }); + + // Load the js code from the content of the last <script></script> + // in 'test/index.html' + const html = fs.readFileSync(testPath, 'utf8'); + const lastScriptStartIndex = html.lastIndexOf('<script>'); + const lastScriptEndIndex = html.lastIndexOf('</script>'); + const jsCode = html.substring(lastScriptStartIndex + 8, lastScriptEndIndex); + + // Ignore the lines containing `echarts.use`, `echarts.init` and `.setOption` + // TODO: Not considered the case where there are multiple `chart.setOption` + // calls + const lines = jsCode.split('\n'); + const code = lines + .filter( + (line) => + !line.includes('echarts.use') && + !line.includes('echarts.init') && + !line.includes('chart.setOption') + ) + .join('\n'); + + // Run the code + try { + eval(code); + // To make sure text is readable in dark mode + option.backgroundColor = '#fff'; + chart.setOption(option); + } catch (error) { + console.error(chalk.red(error.stack)); + return; + } + + const svg = chart.renderToSVGString(); + + chart.dispose(); + chart = null; + option = null; + + // Save the SVG to file + fs.writeFileSync(outputPath, svg); +} + +const args = process.argv.slice(2); +if (args.length === 0) { + // Generate thumbnails for all custom series + const dirs = fs.readdirSync(path.join(__dirname, '..', 'custom-series')); + dirs.forEach((name) => { + if ( + fs + .statSync(path.join(__dirname, '..', 'custom-series', name)) + .isDirectory() + ) { + console.log(chalk.cyan(`Generating thumbnail for ${name}.`)); + thumbnail(name); + } + }); +} else { + // Generate thumbnail for the specified custom series + args.forEach((name) => { + console.log(`Generating thumbnail for ${name}.`); + thumbnail(name); + }); +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@echarts.apache.org For additional commands, e-mail: commits-h...@echarts.apache.org