다른 데이터 세트로 여러 막 대형 차트를 동적으로 렌더링하는 백본 응용 프로그램이 있는데 표시 할 레이블 이름을 알 수있는 방법이 없습니다. 예를 들어, "strawberry", "vanilla", "chocolate"이라는 레이블 집합이 있으면 해당 범주가 그래프로 나타날 때마다 "strawberry"의 색을 분홍색으로 설정하고 싶습니다.jqplot - 레이블 이름을 기준으로 막 대형 차트의 사용자 정의 색 설정
라벨 값에 따라 막대에 특정 색상을 설정하는 방법이 있습니까? 여기
내 현재 코드입니다 :
collectCategories: function(aggregates) {
var categories = {};
_.each(aggregates, function(aggregate) {
for (var category in aggregate) {
categories[category] = true;
}
});
categories = _.keys(categories);
categories.sort();
return categories;
},
render: function() {
var container = this.$el;
container.empty();
var aggregates = this.collection.map(function(purchase) {
return purchase.aggregates();
});
var categories = this.collectCategories(aggregates);
var datasets = _.map(categories, function(category) {
var row = _.map(aggregates, function(aggregate) {
var qtyInCategory = aggregate[category];
return qtyInCategory ? qtyInCategory : 0;
});
return row;
});
var labels = this.collection.map(function(purchase) {
return purchase.get('purchase_date').substr(0, 10);
});
if (datasets.length > 0) {
this.renderPlot(datasets, labels, categories);
}
return this;
},
renderPlot: function(datasets, labels, categories) {
var seriesLabels = _.map(categories, function(category) {
return { label: category};
});
var customSeriesColors =
var plot = $.jqplot('bar-charts-container', datasets, {
stackSeries: true,
captureRightClick: true,
seriesDefaults:{
renderer:$.jqplot.BarRenderer,
rendererOptions: {
barMargin: 30,
varyBarColor: true
},
pointLabels: {
show: false
}
},
series: seriesLabels,
seriesColors:
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer,
ticks: labels
},
yaxis: {
padMin: 0
}
},
legend: {
show: true,
location: 'e',
placement: 'outside'
}
});
jqPlot에서 지원하는 것처럼 보이지 않지만 백본 코드의 어딘가에서 레이블 이름을 찾아서 레이블을 기반으로 사용자 지정 색을 추가하는 방법이 있습니다. 플롯을 구성하는 코드를 보지 않고 말하기가 어렵습니다. –
벅, 내 코드가 지금있다. 아마도 논리는 "renderPlot"아래의 "customSeriesColors"에 배치 된 다음 "seriesColors"(또한 "renderPlot"속성 아래)로 전달되어야합니다. – scj