| <!DOCTYPE html> |
| <!-- |
| 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. |
| --> |
| |
| |
| <html> |
| |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> |
| <script src="lib/simpleRequire.js"></script> |
| <script src="lib/config.js"></script> |
| <script src="lib/jquery.min.js"></script> |
| <script src="lib/facePrint.js"></script> |
| <script src="lib/testHelper.js"></script> |
| <link rel="stylesheet" href="lib/reset.css" /> |
| </head> |
| |
| <body> |
| <style> |
| .chart { |
| height: 350px; |
| margin: 20px 0; |
| } |
| </style> |
| |
| <div id="main0" class="chart"></div> |
| <div id="main1" class="chart"></div> |
| <div id="main2" class="chart"></div> |
| <div id="main3" class="chart"></div> |
| <div id="main4" class="chart"></div> |
| <div id="main5" class="chart"></div> |
| <div id="main6" class="chart"></div> |
| <div id="main7" class="chart"></div> |
| <div id="main8" class="chart"></div> |
| <div id="main9" class="chart"></div> |
| |
| <script> |
| require(['echarts'], function (echarts) { |
| // Basic data |
| var baseData = [820, 932, 901, 934, 1290, 1330, 1320]; |
| var days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; |
| |
| // Data with negative values |
| var negativeData = [120, -132, 201, -234, 290, -330, 320]; |
| |
| // Log axis data (must be positive) |
| var logData = [5, 20, 36, 100, 500, 1200, 3500]; |
| |
| // Test 1: Basic dataMax usage (dataMax > actual data maximum) |
| var chart1 = testHelper.create(echarts, 'main0', { |
| title: 'dataMax > actual data', |
| option: { |
| xAxis: { |
| type: 'category', |
| data: days |
| }, |
| yAxis: { |
| type: 'value', |
| dataMax: 1555, // Greater than actual data maximum 1330 |
| }, |
| series: [ |
| { |
| data: baseData, |
| type: 'line', |
| smooth: true |
| } |
| ], |
| tooltip: { |
| trigger: 'axis' |
| } |
| } |
| }); |
| |
| // Test 2: dataMax < actual data maximum (should not affect range) |
| var chart2 = testHelper.create(echarts, 'main1', { |
| title: 'dataMax < actual data (no effect on range)', |
| option: { |
| xAxis: { |
| type: 'category', |
| data: days |
| }, |
| yAxis: { |
| type: 'value', |
| dataMax: 1000, // Less than actual data maximum 1330, should not affect |
| }, |
| series: [ |
| { |
| data: baseData, |
| type: 'line', |
| smooth: true |
| } |
| ], |
| tooltip: { |
| trigger: 'axis' |
| } |
| } |
| }); |
| |
| // Test 3: Negative data + dataMin usage (dataMin < actual data minimum) |
| var chart3 = testHelper.create(echarts, 'main2', { |
| title: 'Negative data + dataMin < actual data', |
| option: { |
| xAxis: { |
| type: 'category', |
| data: days |
| }, |
| yAxis: { |
| type: 'value', |
| dataMin: -500, // Less than actual data minimum -330 |
| }, |
| series: [ |
| { |
| data: negativeData, |
| type: 'line', |
| smooth: true |
| } |
| ], |
| tooltip: { |
| trigger: 'axis' |
| } |
| } |
| }); |
| |
| // Test 4: Negative data + dataMin > actual data minimum (should not affect range) |
| var chart4 = testHelper.create(echarts, 'main3', { |
| title: 'Negative data + dataMin > actual data (no effect on range)', |
| option: { |
| xAxis: { |
| type: 'category', |
| data: days |
| }, |
| yAxis: { |
| type: 'value', |
| dataMin: -100, // Greater than actual data minimum -330, should not affect |
| }, |
| series: [ |
| { |
| data: negativeData, |
| type: 'line', |
| smooth: true |
| } |
| ], |
| tooltip: { |
| trigger: 'axis' |
| } |
| } |
| }); |
| |
| // Test 5: Negative data + using both dataMin and dataMax |
| var chart5 = testHelper.create(echarts, 'main4', { |
| title: 'Negative data + using both dataMin and dataMax', |
| option: { |
| xAxis: { |
| type: 'category', |
| data: days |
| }, |
| yAxis: { |
| type: 'value', |
| dataMin: -500, |
| dataMax: 500, |
| }, |
| series: [ |
| { |
| data: negativeData, |
| type: 'line', |
| smooth: true |
| } |
| ], |
| tooltip: { |
| trigger: 'axis' |
| } |
| } |
| }); |
| |
| // Test 6: Comparing with min/max properties |
| var chart6 = testHelper.create(echarts, 'main5', { |
| title: 'min/max vs dataMin/dataMax (negative data)', |
| option: { |
| xAxis: { |
| type: 'category', |
| data: days |
| }, |
| yAxis: { |
| type: 'value', |
| min: -500, |
| max: 500, |
| }, |
| series: [ |
| { |
| data: negativeData, |
| type: 'line', |
| smooth: true |
| } |
| ], |
| tooltip: { |
| trigger: 'axis' |
| } |
| } |
| }); |
| |
| // Test 7: Using dataMin/dataMax on category axis (should have no effect) |
| var chart7 = testHelper.create(echarts, 'main6', { |
| title: 'dataMin/dataMax on category axis (no effect)', |
| option: { |
| yAxis: { |
| type: 'category', |
| data: days, |
| dataMin: 2, // No effect on category axis |
| dataMax: 5, // No effect on category axis |
| }, |
| xAxis: { |
| type: 'value' |
| }, |
| series: [ |
| { |
| data: negativeData, |
| type: 'bar' |
| } |
| ], |
| tooltip: { |
| trigger: 'axis' |
| } |
| } |
| }); |
| |
| // Test 8: Log axis + dataMin usage |
| var chart8 = testHelper.create(echarts, 'main7', { |
| title: 'Log axis + dataMin usage', |
| option: { |
| xAxis: { |
| type: 'category', |
| data: days |
| }, |
| yAxis: { |
| type: 'log', |
| dataMin: 0.5, // Using a smaller fraction, much less than actual data minimum 5 |
| }, |
| series: [ |
| { |
| data: logData, |
| type: 'line', |
| smooth: true |
| } |
| ], |
| tooltip: { |
| trigger: 'axis' |
| } |
| } |
| }); |
| |
| // Test 9: Log axis + dataMax usage |
| var chart9 = testHelper.create(echarts, 'main8', { |
| title: 'Log axis + dataMax usage', |
| option: { |
| xAxis: { |
| type: 'category', |
| data: days |
| }, |
| yAxis: { |
| type: 'log', |
| dataMax: 100000, // Greater than actual data maximum 3500 |
| }, |
| series: [ |
| { |
| data: logData, |
| type: 'line', |
| smooth: true |
| } |
| ], |
| tooltip: { |
| trigger: 'axis' |
| } |
| } |
| }); |
| |
| // Test 10: Time axis + dataMin/dataMax usage |
| var timeData = []; |
| var timeLabels = []; |
| var baseTime = new Date('2024-01-01').getTime(); |
| for (let i = 0; i < 7; i++) { |
| var time = baseTime + i * 24 * 3600 * 1000; // Add days |
| timeLabels.push(time); |
| timeData.push([time, 820 + Math.random() * 500]); |
| } |
| |
| var chart10 = testHelper.create(echarts, 'main9', { |
| title: 'Time axis + dataMin/dataMax usage', |
| option: { |
| xAxis: { |
| type: 'time', |
| dataMin: baseTime - 2 * 24 * 3600 * 1000, // 2 days before first data point |
| dataMax: baseTime + 8 * 24 * 3600 * 1000, // 1 day after last data point |
| }, |
| yAxis: { |
| type: 'value' |
| }, |
| series: [ |
| { |
| data: timeData, |
| type: 'line', |
| smooth: true |
| } |
| ], |
| tooltip: { |
| trigger: 'axis', |
| formatter: function (params) { |
| var date = new Date(params[0].value[0]); |
| return date.toLocaleDateString() + '<br/>' + |
| params[0].seriesName + ': ' + params[0].value[1].toFixed(2); |
| } |
| } |
| } |
| }); |
| }); |
| </script> |
| </body> |
| |
| </html> |