Select 要在 dc.js 条形图中显示的图例名称
Select legend name to display in dc.js barchart
我正在制作 dc.js 条形图,我有以下维度:
const barDimension = ndx.dimension((d) => [d.variable1, d.variable2]);
在图表中,我想只显示第一个变量作为标签,但目前图表显示的是逗号分隔的两个变量。
chart
.dimension(barDimension)
.group(barGroup)
.renderTitle(false)
.width(width)
.height(350)
.margins({
top: 30,
right: 12,
bottom: 80,
left: 40,
})
.x(d3.scaleBand())
.xUnits(dc.units.ordinal)
.brushOn(false)
.transitionDuration(0)
.barPadding(0.4)
.outerPadding(0.2)
.ordering((d) => {
// custom order function
return -1;
})
.colorAccessor((d) => d)
.colors((d) => this.getColor(d.key, data));
这是图表定义,我尝试使用 chart.legendables 函数但似乎不起作用。
图表变量是 dc.BarChart
对象。
编辑
我想更改的不是顶部的标签,而是图表底部的标签,请参见屏幕截图。
您可以在 dc.js 图表上使用 label accessor。
您需要在每种情况下检查 d 的类型并相应地编写您的访问器。
我看不到你的图表使用的数据,所以无法完美回答。但以下代码可能对您有所帮助:
.label(function(d) { return d.key.split(',')[0]; })
chart
.dimension(barDimension)
.group(barGroup)
.renderTitle(false)
.width(width)
.height(350)
.margins({
top: 30,
right: 12,
bottom: 80,
left: 40,
})
.x(d3.scaleBand())
.xUnits(dc.units.ordinal)
.brushOn(false)
.transitionDuration(0)
.barPadding(0.4)
.outerPadding(0.2)
.ordering((d) => {
// custom order function
return -1;
})
.colorAccessor((d) => d)
.colors((d) => this.getColor(d.key, data));
.label(function(d) { return d.key.split(',')[0]; })
条形图标签旋转的解决方案
您可以简单地使用 CSS 旋转 x 轴标签。
#chartContainterId .x.axis text {
text-anchor: end !important;
transform: rotate(-45deg);
}
一般问题是"what are all the labels on a chart and how do I change them?"
这里是一般答案,以防对其他人有所帮助。
我也放了这个信息on the wiki。
要更改轴标签,请先使用 .xAxis() or .yAxis(). Then use .tickFormat()
or other d3-axis methods to change the text. Be sure to do this in a separate statement 获取轴对象,否则可能会发生混淆。
我正在制作 dc.js 条形图,我有以下维度:
const barDimension = ndx.dimension((d) => [d.variable1, d.variable2]);
在图表中,我想只显示第一个变量作为标签,但目前图表显示的是逗号分隔的两个变量。
chart
.dimension(barDimension)
.group(barGroup)
.renderTitle(false)
.width(width)
.height(350)
.margins({
top: 30,
right: 12,
bottom: 80,
left: 40,
})
.x(d3.scaleBand())
.xUnits(dc.units.ordinal)
.brushOn(false)
.transitionDuration(0)
.barPadding(0.4)
.outerPadding(0.2)
.ordering((d) => {
// custom order function
return -1;
})
.colorAccessor((d) => d)
.colors((d) => this.getColor(d.key, data));
这是图表定义,我尝试使用 chart.legendables 函数但似乎不起作用。
图表变量是 dc.BarChart
对象。
编辑
我想更改的不是顶部的标签,而是图表底部的标签,请参见屏幕截图。
您可以在 dc.js 图表上使用 label accessor。
您需要在每种情况下检查 d 的类型并相应地编写您的访问器。
我看不到你的图表使用的数据,所以无法完美回答。但以下代码可能对您有所帮助:
.label(function(d) { return d.key.split(',')[0]; })
chart
.dimension(barDimension)
.group(barGroup)
.renderTitle(false)
.width(width)
.height(350)
.margins({
top: 30,
right: 12,
bottom: 80,
left: 40,
})
.x(d3.scaleBand())
.xUnits(dc.units.ordinal)
.brushOn(false)
.transitionDuration(0)
.barPadding(0.4)
.outerPadding(0.2)
.ordering((d) => {
// custom order function
return -1;
})
.colorAccessor((d) => d)
.colors((d) => this.getColor(d.key, data));
.label(function(d) { return d.key.split(',')[0]; })
条形图标签旋转的解决方案
您可以简单地使用 CSS 旋转 x 轴标签。
#chartContainterId .x.axis text {
text-anchor: end !important;
transform: rotate(-45deg);
}
一般问题是"what are all the labels on a chart and how do I change them?"
这里是一般答案,以防对其他人有所帮助。
我也放了这个信息on the wiki。
要更改轴标签,请先使用 .xAxis() or .yAxis(). Then use .tickFormat()
or other d3-axis methods to change the text. Be sure to do this in a separate statement 获取轴对象,否则可能会发生混淆。