这是我生成的图表图像:Current Series Chart
我已将 dashStyle 函数应用于折线图对象,该对象已将相同的模式应用于所有线条。我需要绘制一个系列图表,每条线都有不同的图案(虚线、点线、平面线等)。图表函数中的“c”对象中有很多属性。我不确定哪个属性对应于数据值。 “c”对象的 data 属性类似于“_dc/dc.baseMixin/_chart.data()” 我是 javascript 和 dc js 的新手,并不完全理解幕后发生的事情。
有没有办法在折线图中为不同的线条绘制不同的模式?
这是我当前的代码,是在引用此示例后实现的:http://dc-js.github.io/dc.js/examples/range-series.html
focusChart
.width(920)
.height(380)
.chart(function(c) { console.log(c);return dc.lineChart(c).dashStyle([2,3]).interpolate('cardinal').evadeDomainFilter(true); })
.x(d3.scale.linear().domain([1995,2017]))
.brushOn(false)
.yAxisLabel("Topic Weight")
.xAxisLabel("Year")
.elasticY(true)
.dimension(series1Dimension)
.group(series1Group)
.colorAccessor(function(d){
return d.key.split(",")[0].slice(5);
})
.colors(TopicColorScale)
focusChart.seriesAccessor(function(d) {return " " + d.key[0];})
.keyAccessor(function(d) {return +d.key[1];})
.valueAccessor(function(d) {return +d.value;})
.legend(dc.legend().x(400).itemHeight(13).gap(1).horizontal(10).legendWidth(540).itemWidth(210));
focusChart.yAxis().tickFormat(function(d) {return d3.format('d')(d);});
focusChart.xAxis().tickFormat(function(d) {return d3.format('d')(d);});
focusChart.margins().left += 20;
任何帮助将不胜感激!
最佳答案
线路
.chart(function(c) { console.log(c);return dc.lineChart(c).dashStyle([2,3]).interpolate('cardinal').evadeDomainFilter(true); })
提供生成子图的功能。该函数的参数appear to be undocumented ,但是 quick look at the source reveals
var subChart = _charts[sub.key] || _chartFunction.call(_chart, _chart, chartGroup, sub.key, i);
该函数采用以下参数:
- 综合图表
- 注册复合图表的图表组
- 子图的键
- 子图的索引
这就是您想要的第三个参数。它是您的 seriesAccessor
返回的键,您可以使用任何您想要基于该键设置 dashStyle
的方法。
关于javascript - 如何在 DC.js 系列图表中为不同的线条绘制不同的线条图案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45342928/