dataset-charts.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <script src="lib/esl.js"></script>
  6. <script src="lib/config.js"></script>
  7. <script src="lib/jquery.min.js"></script>
  8. <script src="lib/testHelper.js"></script>
  9. <meta name="viewport" content="width=device-width, initial-scale=1" />
  10. <link rel="stylesheet" href="lib/reset.css" />
  11. </head>
  12. <body>
  13. <style>
  14. .test-title {
  15. background: rgb(182, 120, 7);
  16. color: #fff;
  17. }
  18. .test-chart {
  19. height: 250px;
  20. }
  21. </style>
  22. <div id="layout0"></div>
  23. <div id="layout1"></div>
  24. <div id="layout2"></div>
  25. <div id="layout3"></div>
  26. <div id="layout4"></div>
  27. <div id="layout5"></div>
  28. <div id="layout6"></div>
  29. <div id="layout7"></div>
  30. <div id="layout8"></div>
  31. <div id="layout9"></div>
  32. <div id="layout10"></div>
  33. <div id="layout11"></div>
  34. <script>
  35. var arrayRows0 = [
  36. ['product', '2015', '2016', '2017'],
  37. ['Matcha Latte', 43.3, 85.8, 93.7],
  38. ['Milk Tea', 83.1, 73.4, 55.1],
  39. ['Cheese Cocoa', 86.4, 65.2, 82.5],
  40. ['Walnut Brownie', 72.4, 53.9, 39.1]
  41. ];
  42. var arrayRows1 = [
  43. ['product', '2012', '2013', '2014', '2015', '2016', '2017'],
  44. ['Matcha Latte', 41.1, 30.4, 65.1, 53.3, 83.8, 98.7],
  45. ['Milk Tea', 86.5, 92.1, 85.7, 83.1, 73.4, 55.1],
  46. ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4, 65.2, 82.5],
  47. ['Walnut Brownie', 55.2, 67.1, 69.2, 72.4, 53.9, 39.1]
  48. ];
  49. var arrayRowsNoColumnHeader = [
  50. ['Matcha Latte', 41.1, 30.4, 65.1, 53.3, 83.8, 98.7],
  51. ['Milk Tea', 86.5, 92.1, 85.7, 83.1, 73.4, 55.1],
  52. ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4, 65.2, 82.5],
  53. ['Walnut Brownie', 55.2, 67.1, 69.2, 72.4, 53.9, 39.1]
  54. ];
  55. var arrayRowsNoRowHeader = [
  56. ['2012', '2013', '2014', '2015', '2016', '2017'],
  57. [41.1, 30.4, 65.1, 53.3, 83.8, 98.7],
  58. [86.5, 92.1, 85.7, 83.1, 73.4, 55.1],
  59. [24.1, 67.2, 79.5, 86.4, 65.2, 82.5],
  60. [55.2, 67.1, 69.2, 72.4, 53.9, 39.1]
  61. ];
  62. var arrayRowsPairValueColumns = [
  63. ['2012', null, '2013', null, '2014', 'amount'],
  64. [41.1, 2585, 30.4, 2473, 65.1, 3418],
  65. [86.5, 2316, 92.1, 3255, 85.7, 2485],
  66. [24.1, 1532, 67.2, 1452, 79.5, 4689],
  67. [55.2, 5312, 67.1, 3266, 69.2, 1354]
  68. ];
  69. var errorData = [
  70. ['name', 'Price', 'Prime cost', 'Prime cost min', 'Prime cost max', 'Price min', 'Price max'],
  71. ['Blouse "Blue Viola"', 101.88, 99.75, 76.75, 116.75, 69.88, 119.88],
  72. ['Dress "Daisy"', 155.8, 144.03, 126.03, 156.03, 129.8, 188.8],
  73. ['Trousers "Cutesy Classic"', 203.25, 173.56, 151.56, 187.56, 183.25, 249.25],
  74. ['Dress "Morning Dew"', 256, 120.5, 98.5, 136.5, 236, 279],
  75. ['Turtleneck "Dark Chocolate"', 408.89, 294.75, 276.75, 316.75, 385.89, 427.89],
  76. ['Jumper "Early Spring"', 427.36, 430.24, 407.24, 452.24, 399.36, 461.36],
  77. ['Breeches "Summer Mood"', 356, 135.5, 123.5, 151.5, 333, 387],
  78. ['Dress "Mauve Chamomile"', 406, 95.5, 73.5, 111.5, 366, 429],
  79. ['Dress "Flying Tits"', 527.36, 503.24, 488.24, 525.24, 485.36, 551.36],
  80. ['Dress "Singing Nightingales"', 587.36, 543.24, 518.24, 555.24, 559.36, 624.36],
  81. ['Sundress "Cloudy weather"', 603.36, 407.24, 392.24, 419.24, 581.36, 627.36],
  82. ['Sundress "East motives"', 633.36, 477.24, 445.24, 487.24, 594.36, 652.36],
  83. ['Sweater "Cold morning"', 517.36, 437.24, 416.24, 454.24, 488.36, 565.36],
  84. ['Trousers "Lavender Fields"', 443.36, 387.24, 370.24, 413.24, 412.36, 484.36],
  85. ['Jumper "Coffee with Milk"', 543.36, 307.24, 288.24, 317.24, 509.36, 574.36],
  86. ['Blouse "Blooming Cactus"', 790.36, 277.24, 254.24, 295.24, 764.36, 818.36],
  87. ['Sweater "Fluffy Comfort"', 790.34, 678.34, 660.34, 690.34, 762.34, 824.34]
  88. ];
  89. // No 北京 上海 江苏
  90. var nameValueGeo0 = [
  91. {name: '天津', value: 514},
  92. {name: '上海', value: 863},
  93. {name: '重庆', value: 224},
  94. {name: '河北', value: 671},
  95. {name: '河南', value: 888},
  96. {name: '云南', value: 992},
  97. {name: '辽宁', value: 136},
  98. {name: '黑龙江', value: 406},
  99. {name: '湖南', value: 101},
  100. {name: '安徽', value: 885},
  101. {name: '新疆', value: 187},
  102. {name: '浙江', value: 1},
  103. {name: '江西', value: 138},
  104. {name: '湖北', value: 337},
  105. {name: '广西', value: 410},
  106. {name: '甘肃', value: 22},
  107. {name: '山西', value: 814},
  108. {name: '内蒙古', value: 449},
  109. {name: '陕西', value: 324},
  110. {name: '吉林', value: 429},
  111. {name: '福建', value: 377},
  112. {name: '贵州', value: 811},
  113. {name: '广东', value: 954},
  114. {name: '青海', value: 653},
  115. {name: '西藏', value: 297},
  116. {name: '四川', value: 981},
  117. {name: '宁夏', value: 66},
  118. {name: '海南', value: 667},
  119. {name: '台湾', value: 345},
  120. {name: '香港', value: 970},
  121. {name: '澳门', value: 683}
  122. ];
  123. var nameValueGeo1 = [
  124. {name: '北京', value: 507},
  125. {name: '天津', value: 263},
  126. {name: '上海', value: 732},
  127. {name: '重庆', value: 976},
  128. {name: '河北', value: 299},
  129. {name: '安徽', value: 465},
  130. {name: '新疆', value: 259},
  131. {name: '浙江', value: 822},
  132. {name: '江西', value: 922},
  133. {name: '山西', value: 379},
  134. {name: '内蒙古', value: 544},
  135. {name: '吉林', value: 190},
  136. {name: '福建', value: 66},
  137. {name: '广东', value: 842},
  138. {name: '西藏', value: 827},
  139. {name: '四川', value: 71},
  140. {name: '宁夏', value: 428},
  141. {name: '香港', value: 466},
  142. {name: '澳门', value: 119}
  143. ]
  144. </script>
  145. <script>
  146. require(['echarts'], function (echarts) {
  147. var option = {
  148. legend: {},
  149. tooltip: {},
  150. dataset: {
  151. source: arrayRows0
  152. },
  153. series: [
  154. {type: 'pie', id: 'pie'}
  155. ]
  156. };
  157. testHelper.create(echarts, 'layout0', {
  158. title: 'pie, default encoding, legend',
  159. option: option
  160. });
  161. });
  162. </script>
  163. <script>
  164. require(['echarts'], function (echarts) {
  165. var encode = {
  166. value: '2016',
  167. itemName: 'product'
  168. };
  169. var option = {
  170. legend: {},
  171. tooltip: {},
  172. dataset: {
  173. source: arrayRows0
  174. },
  175. series: [
  176. {type: 'pie', id: 'pie', encode: encode}
  177. ]
  178. };
  179. testHelper.create(echarts, 'layout1', {
  180. title: 'pie, give encoding, default legend',
  181. option: option,
  182. dataTable: arrayRows0,
  183. infoKey: 'encode',
  184. info: encode
  185. });
  186. });
  187. </script>
  188. <script>
  189. require(['echarts'], function (echarts) {
  190. var option = {
  191. legend: {},
  192. tooltip: {},
  193. dataset: {
  194. source: arrayRows0
  195. },
  196. series: [
  197. {
  198. type: 'pie',
  199. id: 'pie',
  200. seriesLayoutBy: 'row',
  201. encode: {
  202. value: 'Milk Tea',
  203. itemName: 'product',
  204. tooltip: 'Milk Tea'
  205. }
  206. }
  207. ]
  208. };
  209. testHelper.create(echarts, 'layout2', {
  210. title: 'pie, give encoding, default legend',
  211. option: option,
  212. dataTable: arrayRows0,
  213. info: {
  214. legend: '<default>',
  215. series: option.series
  216. }
  217. });
  218. });
  219. </script>
  220. <script>
  221. require(['echarts'], function (echarts) {
  222. var option = {
  223. legend: {},
  224. tooltip: {},
  225. dataset: [{
  226. source: arrayRowsNoColumnHeader
  227. }, {
  228. source: arrayRowsNoRowHeader
  229. }],
  230. series: [{
  231. type: 'pie',
  232. radius: 50,
  233. center: ['25%', '25%'],
  234. sourceHeader: false
  235. }, {
  236. type: 'pie',
  237. radius: 50,
  238. center: ['50%', '25%']
  239. }, {
  240. type: 'pie',
  241. radius: 50,
  242. center: ['75%', '25%'],
  243. sourceHeader: true
  244. }, {
  245. type: 'pie',
  246. radius: 50,
  247. center: ['25%', '75%'],
  248. seriesLayoutBy: 'row',
  249. sourceHeader: false,
  250. datasetIndex: 1
  251. }, {
  252. type: 'pie',
  253. radius: 50,
  254. center: ['50%', '75%'],
  255. seriesLayoutBy: 'row',
  256. datasetIndex: 1
  257. }, {
  258. type: 'pie',
  259. radius: 50,
  260. center: ['75%', '75%'],
  261. seriesLayoutBy: 'row',
  262. sourceHeader: true,
  263. datasetIndex: 1
  264. }]
  265. };
  266. testHelper.create(echarts, 'layout3', {
  267. title: 'no sourceHeader',
  268. height: 400,
  269. option: option,
  270. dataTables: [
  271. arrayRowsNoColumnHeader,
  272. arrayRowsNoRowHeader
  273. ],
  274. info: {
  275. legend: '<default>',
  276. series: option.series
  277. }
  278. });
  279. });
  280. </script>
  281. <script>
  282. require(['echarts', 'map/js/china'], function (echarts) {
  283. var option = {
  284. legend: {},
  285. tooltip: {},
  286. dataset: [{
  287. source: nameValueGeo0
  288. }, {
  289. source: nameValueGeo1
  290. }],
  291. visualMap: {
  292. min: 0,
  293. max: 1500,
  294. calculable : true
  295. },
  296. series: [{
  297. name: 'A',
  298. type: 'map',
  299. mapType: 'china'
  300. }, {
  301. name: 'B',
  302. type: 'map',
  303. mapType: 'china',
  304. datasetIndex: 1
  305. }]
  306. };
  307. testHelper.create(echarts, 'layout4', {
  308. option: option,
  309. height: 400,
  310. dataTables: [
  311. nameValueGeo0,
  312. nameValueGeo1
  313. ],
  314. info: {
  315. legend: option.legend,
  316. tooltip: option.tooltip,
  317. series: option.series
  318. }
  319. });
  320. });
  321. </script>
  322. <script>
  323. require(['echarts'], function (echarts) {
  324. var option = {
  325. legend: {},
  326. tooltip: {},
  327. xAxis: {},
  328. yAxis: {},
  329. dataset: [{
  330. source: arrayRowsPairValueColumns
  331. }],
  332. series: [{
  333. type: 'scatter'
  334. }, {
  335. type: 'scatter'
  336. }, {
  337. type: 'scatter'
  338. }]
  339. };
  340. testHelper.create(echarts, 'layout5', {
  341. title: 'column (dimension name duplicated)',
  342. height: 400,
  343. option: option,
  344. dataTables: [
  345. arrayRowsPairValueColumns
  346. ],
  347. info: {
  348. legend: '<default>',
  349. series: option.series
  350. }
  351. });
  352. });
  353. </script>
  354. <script>
  355. require(['echarts'], function (echarts) {
  356. function renderItem(params, api) {
  357. var children = [];
  358. var coordDims = ['x', 'y'];
  359. for (var baseDimIdx = 0; baseDimIdx < 2; baseDimIdx++) {
  360. var otherDimIdx = 1 - baseDimIdx;
  361. var encode = params.encode;
  362. var baseValue = api.value(encode[coordDims[baseDimIdx]][0]);
  363. var param = [];
  364. param[baseDimIdx] = baseValue;
  365. param[otherDimIdx] = api.value(encode[coordDims[otherDimIdx]][1]);
  366. var highPoint = api.coord(param);
  367. param[otherDimIdx] = api.value(encode[coordDims[otherDimIdx]][2]);
  368. var lowPoint = api.coord(param);
  369. var halfWidth = 5;
  370. var style = api.style({
  371. stroke: api.visual('color'),
  372. fill: null
  373. });
  374. children.push({
  375. type: 'line',
  376. shape: makeShape(
  377. baseDimIdx,
  378. highPoint[baseDimIdx] - halfWidth, highPoint[otherDimIdx],
  379. highPoint[baseDimIdx] + halfWidth, highPoint[otherDimIdx]
  380. ),
  381. style: style
  382. }, {
  383. type: 'line',
  384. shape: makeShape(
  385. baseDimIdx,
  386. highPoint[baseDimIdx], highPoint[otherDimIdx],
  387. lowPoint[baseDimIdx], lowPoint[otherDimIdx]
  388. ),
  389. style: style
  390. }, {
  391. type: 'line',
  392. shape: makeShape(
  393. baseDimIdx,
  394. lowPoint[baseDimIdx] - halfWidth, lowPoint[otherDimIdx],
  395. lowPoint[baseDimIdx] + halfWidth, lowPoint[otherDimIdx]
  396. ),
  397. style: style
  398. });
  399. }
  400. function makeShape(baseDimIdx, base1, value1, base2, value2) {
  401. var shape = {};
  402. shape[coordDims[baseDimIdx] + '1'] = base1;
  403. shape[coordDims[1 - baseDimIdx] + '1'] = value1;
  404. shape[coordDims[baseDimIdx] + '2'] = base2;
  405. shape[coordDims[1 - baseDimIdx] + '2'] = value2;
  406. return shape;
  407. }
  408. return {
  409. type: 'group',
  410. children: children
  411. };
  412. }
  413. var option = {
  414. dataset: {
  415. source: errorData
  416. },
  417. tooltip: {
  418. },
  419. legend: {
  420. },
  421. dataZoom: [{
  422. type: 'slider'
  423. }, {
  424. type: 'inside'
  425. }],
  426. visualMap: {
  427. min: 0,
  428. max: 1000,
  429. dimension: 1,
  430. calculable: true
  431. },
  432. xAxis: {},
  433. yAxis: {},
  434. series: [{
  435. type: 'scatter',
  436. name: 'error',
  437. encode: {
  438. x: 2,
  439. y: 1,
  440. tooltip: [2, 1, 3, 4, 5, 6],
  441. itemName: 0
  442. },
  443. itemStyle: {
  444. normal: {
  445. color: '#77bef7'
  446. }
  447. }
  448. }, {
  449. type: 'custom',
  450. name: 'error',
  451. renderItem: renderItem,
  452. encode: {
  453. x: [2, 3, 4],
  454. y: [1, 5, 6],
  455. tooltip: [2, 1, 3, 4, 5, 6],
  456. itemName: 0
  457. },
  458. z: 100
  459. }]
  460. };
  461. testHelper.create(echarts, 'layout6', {
  462. title: 'error data (custom)',
  463. height: 400,
  464. dataTables: [
  465. errorData
  466. ],
  467. option: option
  468. });
  469. });
  470. </script>
  471. <script>
  472. require(['echarts', 'data/stock-DJI.json'], function (echarts, source) {
  473. var option = {
  474. legend: {},
  475. tooltip: {trigger: 'axis'},
  476. xAxis: {type: 'category'},
  477. yAxis: {},
  478. dataset: [{
  479. source: source
  480. }],
  481. dataZoom: [{}, {type: 'inside'}],
  482. animation: false,
  483. series: [{
  484. type: 'candlestick',
  485. encode: {
  486. x: 0,
  487. y: [1, 2, 3, 4]
  488. }
  489. }]
  490. };
  491. testHelper.create(echarts, 'layout7', {
  492. height: 400,
  493. option: option,
  494. dataTables: [source],
  495. info: {
  496. series: option.series
  497. }
  498. });
  499. });
  500. </script>
  501. <script>
  502. require(['echarts', 'data/stock-DJI.json'], function (echarts, source) {
  503. var option = {
  504. legend: {},
  505. tooltip: {trigger: 'axis'},
  506. xAxis: {type: 'time'},
  507. yAxis: {},
  508. dataset: [{
  509. source: source
  510. }],
  511. dataZoom: [{}, {type: 'inside'}],
  512. animation: false,
  513. series: [{
  514. type: 'candlestick',
  515. encode: {
  516. x: 0,
  517. y: [1, 2, 3, 4]
  518. }
  519. }]
  520. };
  521. testHelper.create(echarts, 'layout8', {
  522. title: 'time axis',
  523. height: 400,
  524. option: option,
  525. dataTables: [source],
  526. info: {
  527. series: option.series
  528. }
  529. });
  530. });
  531. </script>
  532. <script>
  533. require(['echarts'], function (echarts, source) {
  534. var option = {
  535. legend: {},
  536. dataset: [{
  537. source: arrayRows1
  538. }],
  539. parallelAxis: [
  540. {dim: 0, type: 'category'},
  541. {dim: 1},
  542. {dim: 2},
  543. {dim: 3}
  544. ],
  545. parallel: {
  546. axisExpandable: true,
  547. axisExpandCenter: 15,
  548. axisExpandCount: 10,
  549. axisExpandWidth: 60,
  550. axisExpandTriggerOn: 'mousemove',
  551. parallelAxisDefault: {
  552. type: 'value',
  553. nameLocation: 'end',
  554. nameGap: 20,
  555. tooltip: {
  556. show: true
  557. },
  558. nameTextStyle: {
  559. fontSize: 14
  560. },
  561. splitLine: {
  562. show: false
  563. }
  564. }
  565. },
  566. series: [{
  567. type: 'parallel'
  568. }]
  569. };
  570. testHelper.create(echarts, 'layout9', {
  571. height: 400,
  572. option: option,
  573. dataTables: [arrayRows1]
  574. });
  575. });
  576. </script>
  577. <script>
  578. require(['echarts'], function (echarts) {
  579. var option = {
  580. legend: {},
  581. tooltip: {},
  582. dataset: {
  583. source: arrayRows0
  584. },
  585. series: [
  586. {
  587. label: {
  588. formatter: '{@product} {@[1]}'
  589. },
  590. type: 'funnel',
  591. id: 'pie'
  592. }
  593. ]
  594. };
  595. testHelper.create(echarts, 'layout10', {
  596. option: option,
  597. dataTable: arrayRows0
  598. });
  599. });
  600. </script>
  601. <script>
  602. require(['echarts'], function (echarts) {
  603. var option = {
  604. dataset: {
  605. source: [
  606. [12, 323, 11.2],
  607. [23, 167, 8.3],
  608. [81, 284, 12],
  609. [91, 413, 4.1],
  610. [13, 287, 13.5]
  611. ]
  612. },
  613. xAxis: {},
  614. yAxis: {},
  615. visualMap: {
  616. show: false,
  617. dimension: 2,
  618. min: 2,
  619. max: 15,
  620. inRange: {
  621. symbolSize: [5, 60]
  622. }
  623. },
  624. series: {
  625. type: 'scatter'
  626. }
  627. };
  628. testHelper.create(echarts, 'layout11', {
  629. option: option,
  630. dataTable: arrayRows0
  631. });
  632. });
  633. </script>
  634. </script>
  635. </body>
  636. </html>