#latest
#demo
Candlestick을 포함한 Combination(candlestick, spline) 차트 응용 예제입니다.
* 본 예제는 2021년 삼성전자 주가 데이터를 활용하였습니다.
svg { font-family: AppleSDGothicNeo-Regular,Malgun Gothic,"sans-serif"; }
.sbchart-title { font-size: 18px; line-height: 21px; font-weight: bold; }
.sbchart-legend .sbchart-legend-item { font-size: 12px; line-height: 15px; }
.sbchart-tooltip { width: 200px; }
sb.chart.render("#chartWrap", {
global : {
color : {
pattern : ["#142664", "#00E6B3"]
}
},
data : {
types : {
openprc : "candlestick-open", closeprc : "candlestick-close",
lowprc : "candlestick-low", highprc : "candlestick-high",
trdvolume : "spline"
},
json : [
{ date:"2021-05-03", closeprc : 81700, openprc : 81000, highprc : 82400, lowprc : 81000, trdvolume : 15710336 },
{ date:"2021-05-04", closeprc : 82600, openprc : 81900, highprc : 82600, lowprc : 81800, trdvolume : 12532550 },
{ date:"2021-05-06", closeprc : 82300, openprc : 81700, highprc : 82300, lowprc : 81700, trdvolume : 17047511 },
{ date:"2021-05-07", closeprc : 81900, openprc : 81800, highprc : 82100, lowprc : 81500, trdvolume : 14154882 },
{ date:"2021-05-10", closeprc : 83200, openprc : 82300, highprc : 83500, lowprc : 81800, trdvolume : 19385027 },
{ date:"2021-05-11", closeprc : 81200, openprc : 82500, highprc : 82600, lowprc : 81100, trdvolume : 28996680 },
{ date:"2021-05-12", closeprc : 80000, openprc : 80800, highprc : 81200, lowprc : 79800, trdvolume : 35812268 },
{ date:"2021-05-13", closeprc : 78500, openprc : 78900, highprc : 79600, lowprc : 78400, trdvolume : 31490096 },
{ date:"2021-05-14", closeprc : 80100, openprc : 79000, highprc : 80300, lowprc : 78900, trdvolume : 16450920 },
{ date:"2021-05-17", closeprc : 79600, openprc : 80800, highprc : 80900, lowprc : 79200, trdvolume : 17740855 },
{ date:"2021-05-18", closeprc : 79600, openprc : 79600, highprc : 80000, lowprc : 79100, trdvolume : 17494407 },
{ date:"2021-05-20", closeprc : 79500, openprc : 79400, highprc : 79700, lowprc : 79100, trdvolume : 16541828 },
{ date:"2021-05-21", closeprc : 80100, openprc : 80100, highprc : 81500, lowprc : 79800, trdvolume : 20961714 },
{ date:"2021-05-24", closeprc : 79700, openprc : 80100, highprc : 80400, lowprc : 79500, trdvolume : 13398666 },
{ date:"2021-05-25", closeprc : 79900, openprc : 80000, highprc : 80400, lowprc : 79800, trdvolume : 13628942 },
{ date:"2021-05-26", closeprc : 79800, openprc : 80400, highprc : 80500, lowprc : 79700, trdvolume : 11984359 },
{ date:"2021-05-27", closeprc : 79600, openprc : 80000, highprc : 80000, lowprc : 79100, trdvolume : 23198510 },
{ date:"2021-05-28", closeprc : 80100, openprc : 79800, highprc : 80400, lowprc : 79400, trdvolume : 12360199 },
{ date:"2021-05-31", closeprc : 80500, openprc : 80300, highprc : 80600, lowprc : 79600, trdvolume : 13321324 },
{ date:"2021-06-01", closeprc : 80600, openprc : 80500, highprc : 81300, lowprc : 80100, trdvolume : 14058401 },
{ date:"2021-06-02", closeprc : 80800, openprc : 80400, highprc : 81400, lowprc : 80300, trdvolume : 16414644 },
{ date:"2021-06-03", closeprc : 82800, openprc : 81300, highprc : 83000, lowprc : 81100, trdvolume : 29546007 },
],
keys : {
x : "date",
value : [ "trdvolume", { open : "openprc", close : "closeprc", low : "lowprc", high : "highprc" } ]
},
legends : { openprc : "S전자", trdvolume : "거래량" }
},
axis : {
axes : {
y2 : ["trdvolume"]
},
x : {
type : "category",
tick : {
multiline : false,
format : function(i, v) {
var date = v.split("-");
return date[1]+"/"+date[2];
}
},
},
y : {
min : 78000,
tick : {
format : function(d) {
return (d/10000).toFixed(2);
},
count : 6
},
label : {
text : "단위:만원"
}
},
y2 : {
min : 10000000,
tick : {
format : function(d) {
return Math.ceil(d/10000);
},
values : [10000000, 15000000, 20000000, 25000000, 30000000, 35000000]
},
label : {
text : "단위:만주"
}
}
},
grid : {
y : {
ticks : 6
}
},
title : {
text : "S전자 Stock Price"
},
legend : {
padding : 30
},
tooltip : {
format : {
value : function(v, ratio, id, index) {
var formatStr = {
open : "시가",
close : "종가",
low : "저가",
high : "고가"
};
var returnVal = {};
if( typeof v == "object" ) {
Object.keys(formatStr).forEach( function(d, i) {
returnVal[d] = {
key : formatStr[d],
value : v[i].toLocaleString()+"원"
};
});
}
else
returnVal = v.toLocaleString()+"주";
return returnVal;
}
}
},
extend : {
candlestick : {
inColor : "#00E6B3",
deColor : "#FF2E93",
marker : {
show : true,
color : "#FFA500",
max : {
format : function(d) {
return "최고가격 "+d.high.toLocaleString();
},
},
min : {
format : function(d) {
return "최저가격 "+d.low.toLocaleString();
},
},
}
}
}
});