나는이 차트에 내가 원하는 방식으로 표시되도록 3 일 동안 노력했습니다. 그룹화 된 막 대형 차트 번호가 꺼질 때까지 모든 것이 100 % 작동했습니다.C3.js 시계열 조합 차트 - 툴팁이 작동하지 않습니다.
예 : 하단 막대 값이 10이고 상단 막대 값이 20 인 경우 그룹화 된 막대 상단이 30을 읽습니다. 이것은 기본 동작이지만 내 데이터를 어떻게 나타내려고하지는 않습니다. 그룹화 된 막대의 상단에 가장 높은 숫자가 무엇이든간에 읽으려는 경우, 정확히 내가 원하는 방식으로 데이터를 나타내는 this fiddle으로 연결됩니다.
내 논리를 리팩터링 한 후 this이 내가 지금까지 가지고있는 것입니다. 보시다시피 timeseries 행이 분리되어 툴팁이 데이터 그룹을 렌더링하지 않습니다.
내 질문 : 세 개의 데이터 포인트 (렌더링하는 툴팁을 얻을 수있는 방법
1) 수량, 가격, 검색)이
를 연결 아니에요 있도록 시계열 라인을 공고히하는 방법2)
나는이 3 일간의 두통에서 벗어날 수 있도록 도움을 주시면 대단히 감사하겠습니다!
다음은 위의 jsfiddle 링크에서 얻을 수있는 JSON 배열을 제외한 대부분의 코드입니다. 시간 내 미리 감사드립니다.
var chart = c3.generate({
bindto: '#chart',
data: {
x: 'x-axis',
type: 'bar',
json: json,
xFormat: '%Y-%m-%d',
keys: {
x: 'x-axis',
y: 'searches',
value: ['qty', 'searches', 'price']
},
types: {
searches: 'line'
},
groups: [
['qty', 'price']
],
axes: {
qty: 'y',
searches: 'y2'
},
names: {
qty: 'Quantity',
searches: 'Searches',
price: 'Price ($)'
},
colors: {
price: 'rgb(153, 153, 153)',
qty: 'rgb(217, 217, 217)',
searches: 'rgb(255, 127, 14)'
}
},
bar: {
width: {
ratio: 0.60
}
},
axis: {
x: {
type: 'timeseries',
label: { text: 'Timeline', position: 'outer-right' },
tick: {
format: '%Y-%m-%d'
}
},
y: {
type: 'bar',
label: {
text: 'Quantity/Price',
position: 'outer-middle'
}
},
y2: {
show: true,
label: {
text: 'Searches',
position: 'outer-middle'
}
}
},
tooltip: {
grouped: true,
contents: function(d, defaultTitleFormat, defaultValueFormat, color) {
var data = this.api.data.shown().map(function(series) {
var matchArr = series.values.filter(function(datum) {
return datum.value != undefined && datum.x === d[0].x;
});
if (matchArr.length > 0) {
matchArr[0].name = series.id;
return matchArr[0];
}
});
return this.getTooltipContent(data, defaultTitleFormat, defaultValueFormat, color);
}
}
});
매우 가까이에있는 남자 와우에 와우! 나는 connectNull 옵션을 좋아하는데, 그것은 잘 작동하고 툴팁은 실제로 표시 중입니다! 그러나 명확하지 않은 것에 대해 사과드립니다. 그러나 툴팁에 null 값을 반환하고 싶지 않습니다.필터 메소드의 목적은 nullum 값을 제거하고 datum.x가 d [0] .x와 같지 않은 경우 데이터 포인트를 포함하지 않는다고 생각합니다. (하나는 날짜 값을 유지하고 다른 값은 차트의 모든 데이터 포인트). 막대 위에 마우스를 올리면 해당 날짜의 수량, 가격 및 검색을 툴팁에 그룹화하는 것이 이상적입니다. – NightOwlPrgmr
유일한 방법은 json 키를 고유하게 만드는 것입니다. 업데이트를 참조하십시오. –
예, 이것은 원래 json을 구조화 한 것입니다. 그러나 바는 잘못 읽혔습니다 (IMO). 이것이 "스택 된"막 대형 차트의 기본 동작이라고 이해하지만이 두 개 (수량 및 가격)를 "추가"하여 원하지 않습니다. 오버레이를 서로 겹치기를 원하면 2017-07-17 막대의 밝은 회색 막대가 100이어야하고 짙은 회색은 211이 아닌 111이어야합니다. 이것이 가능한지 확실하지 않지만 그것이 OP에 링크 된 바이올린을 위해 작동하는 것을 보았습니다. 그래서 나는 그것을 시도해 볼 것이라고 생각했습니다. 이것에 대한 어떤 생각? – NightOwlPrgmr