这是我生成的图表的图像: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;
任何帮助将不胜感激!
答案 0 :(得分:1)
该行
.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
的任何方法。