이전 포스팅에 이어서
2024.09.29 - [코딩/ECharts] - ECharts 에서 Spec 값을 사각형으로 각 포인트 별로 표시하기
spec 값으로 y 축 min, max 값을 조정하기 위해 밖에서 Data 선언 하여 min, max 값을 지정하였습니다.
조정하지 않은 경우 spec 값이 실데이터 범위보다 벗어나는 경우 MarkLine 이 표시되지 않습니다.
또한 MarkLine 값을 지정할때도 map 을 이용해 data 에서 뽑아 쓸 수 있게 하였습니다.
var data = [
['A', '2023-01-01 08:00:00', 100, 130, 70],
['A', '2023-01-01 09:00:00', 110, 125, 75],
['A', '2023-01-01 10:00:00', 90, 140, 60],
['B', '2023-01-01 11:00:00', 105, 135, 65],
['B', '2023-01-01 12:00:00', 115, 128, 72]
];
var specUpperMax = Math.max(...data.map(item => item[3]));
var specLowerMin = Math.min(...data.map(item => item[4]));
option = {
dataset: {
source: data
//[
// category, xtime, yvalue, specupper, speclower
//['A', '2023-01-01 08:00:00', 100, 130, 70],
//['A', '2023-01-01 09:00:00', 110, 125, 75],
//['A', '2023-01-01 10:00:00', 90, 140, 60],
//['B', '2023-01-01 11:00:00', 105, 135, 65],
//['B', '2023-01-01 12:00:00', 115, 128, 72],
//]
},
xAxis: {
type: 'time'
},
yAxis: {
type: 'value',
min: Math.floor(specLowerMin * 0.9),
max: Math.ceil(specUpperMax * 1.1),
name: '측정값',
nameLocation: 'middle',
nameGap: 40
},
series: [
{
type: 'scatter',
symbol: 'triangle',
encode: {
x: 1,
y: 2
},
symbolSize: 10,
itemStyle: {
color: '#4169E1'
},
markLine: {
silent: true,
symbol : 'none',
data: data.map(item => [{
xAxis: item[1],
yAxis: item[3]
}, {
xAxis: item[1],
yAxis: item[4]
}]),
//data: [
// [
// { xAxis: '2023-01-01 08:00:00', yAxis: 130 },
// { xAxis: '2023-01-01 08:00:00', yAxis: 70 }
// ],
// [
// { xAxis: '2023-01-01 09:00:00', yAxis: 125 },
// { xAxis: '2023-01-01 09:00:00', yAxis: 75 }
// ],
// [
// { xAxis: '2023-01-01 10:00:00', yAxis: 140 },
// { xAxis: '2023-01-01 10:00:00', yAxis: 60 }
// ],
// [
// { xAxis: '2023-01-01 11:00:00', yAxis: 135 },
// { xAxis: '2023-01-01 11:00:00', yAxis: 65 }
// ],
// [
// { xAxis: '2023-01-01 12:00:00', yAxis: 128 },
// { xAxis: '2023-01-01 12:00:00', yAxis: 72}
// ]
//],
lineStyle: {
color: '#FF4500',
width: 10,
opacity: 0.3,
type:'solid'
}
}
}
],
tooltip: {
trigger: 'axis',
formatter: function (params) {
var data = params[0].data;
return echarts.format.formatTime('yyyy-MM-dd HH:mm:ss', data[0]) + '<br />' +
'Value: ' + data[1] + '<br />' +
'Upper Spec: ' + data[2] + '<br />' +
'Lower Spec: ' + data[3];
}
}
};
실행결과
코드는 아래 주석이 달려진 내용을 보면 쉽게 이해가 가능합니다.
// 데이터 배열 정의: [카테고리, 시간, 측정값, 상한값, 하한값]
var data = [
['A', '2023-01-01 08:00:00', 100, 130, 70],
['A', '2023-01-01 09:00:00', 110, 125, 75],
['A', '2023-01-01 10:00:00', 90, 140, 60],
['B', '2023-01-01 11:00:00', 105, 135, 65],
['B', '2023-01-01 12:00:00', 115, 128, 72]
];
// 상한값의 최대값과 하한값의 최소값 계산
var specUpperMax = Math.max(...data.map(item => item[3]));
var specLowerMin = Math.min(...data.map(item => item[4]));
// ECharts 옵션 설정
option = {
// 데이터셋 설정
dataset: {
source: data
},
// X축 설정: 시간 타입
xAxis: {
type: 'time'
},
// Y축 설정
yAxis: {
type: 'value',
// Y축 범위를 데이터의 최소/최대값보다 약간 넓게 설정
min: Math.floor(specLowerMin * 0.9),
max: Math.ceil(specUpperMax * 1.1),
name: '측정값',
nameLocation: 'middle',
nameGap: 40
},
// 시리즈 설정
series: [
{
type: 'scatter', // 산점도 차트
symbol: 'triangle', // 데이터 포인트를 삼각형으로 표시
encode: {
x: 1, // X축에 데이터의 두 번째 항목(시간) 매핑
y: 2 // Y축에 데이터의 세 번째 항목(측정값) 매핑
},
symbolSize: 10, // 심볼 크기
itemStyle: {
color: '#4169E1' // 데이터 포인트 색상
},
// 마크라인 설정 (규격 범위 표시)
markLine: {
silent: true,
symbol: 'none',
// 각 데이터 포인트에 대해 상한값과 하한값을 연결하는 선 생성
data: data.map(item => [{
xAxis: item[1],
yAxis: item[3]
}, {
xAxis: item[1],
yAxis: item[4]
}]),
lineStyle: {
color: '#FF4500',
width: 10,
opacity: 0.3,
type: 'solid'
}
}
}
],
// 툴팁 설정
tooltip: {
trigger: 'axis',
formatter: function (params) {
var data = params[0].data;
return echarts.format.formatTime('yyyy-MM-dd HH:mm:ss', data[0]) + '<br />' +
'Value: ' + data[1] + '<br />' +
'Upper Spec: ' + data[2] + '<br />' +
'Lower Spec: ' + data[3];
}
}
};
아래 링크로 가면 예시코드가 구현된 ECharts 사이트로 이동합니다.
ECharts 에서 Spec 값을 사각형으로 각 포인트 별로 표시하기 (0) | 2024.09.29 |
---|---|
ECharts 에서 selected data 를 table 에 표시하기 (0) | 2024.07.01 |
ECharts 에서 datatables 라이브러리를 이용해 DataView 가상화 처리하기 (0) | 2024.07.01 |
ECharts 에 바인딩 된 dataset source 내용 DataView 에 표시하기 (0) | 2024.07.01 |
ECharts 스크립트 테스트 해볼 수 있는 사이트 (0) | 2024.02.20 |