顺序条形图上的 dcjs y 轴?
dcjs y axis on ordinal bar charts?
使用dc.js,我制作了一个带有数值的有序条形图。我选择序数图表是因为我想为 'unknown' 添加一个 x-tick。
问题出在 y 轴上。我想不出修复轴标签/缩放比例。如图所示,它在[00, 20, 40, 60, 80]之间交替。我希望它有一个完整的范围。我尝试手动插入 y 刻度,但似乎没有 y 轴的访问器方法。下面是我的代码和截图。
ghg2Chart /* dc.barChart('#volume-month-chart', 'chartGroup') */
.width(FULL_CHART_WIDTH)
.height(FULL_CHART_HEIGHT)
.margins({top: 10, right: 20, bottom: 40, left: 20})
.dimension(GHG2)
.group(GHG2Group)
.elasticY(true)
.centerBar(true)
.gap(5)
.round(dc.round.floor)
.alwaysUseRounding(true)
.x(d3.scale.ordinal().domain(GHG2bins))
.xUnits(dc.units.ordinal)
.renderHorizontalGridLines(true)
//Customize the filter displayed in the control span
.filterPrinter(function (filters) {
var filter = filters[0], s = '';
s += numberFormat(filter[0]) + ' -> ' + numberFormat(filter[1]);
return s;
})
.filterHandler(function (dimension, filter) {
var selectedRange = ghg2Chart.filter();
dimension.filter(function (d) {
var range;
var match = false;
// Iterate over each selected range and return if 'd' is within the range.
for (var i = 0; i < filter.length; i++) {
range = filter[i];
if (d >= range - .1 && d <= range) {
match = true;
break;
}
}
return selectedRange != null ? match : true;
});
return filter;
});
您的图表的唯一问题是没有足够的 space 刻度,因此标签被剪掉了。
默认左边距为 30 像素:
https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.marginMixin+margins
尝试增加边距。偷懒的方法是:
chart.margins().left = 40;
但这有点令人困惑,所以更常见的方式是
chart.margins({top: 10, right: 50, bottom: 30, left: 40});
dc.js 自动执行此操作会很棒:
https://github.com/dc-js/dc.js/issues/713
但是根据文本大小进行布局相当困难,所以目前所有这些东西仍然是手动的(影响图例、轴标签等)
使用dc.js,我制作了一个带有数值的有序条形图。我选择序数图表是因为我想为 'unknown' 添加一个 x-tick。
问题出在 y 轴上。我想不出修复轴标签/缩放比例。如图所示,它在[00, 20, 40, 60, 80]之间交替。我希望它有一个完整的范围。我尝试手动插入 y 刻度,但似乎没有 y 轴的访问器方法。下面是我的代码和截图。
ghg2Chart /* dc.barChart('#volume-month-chart', 'chartGroup') */
.width(FULL_CHART_WIDTH)
.height(FULL_CHART_HEIGHT)
.margins({top: 10, right: 20, bottom: 40, left: 20})
.dimension(GHG2)
.group(GHG2Group)
.elasticY(true)
.centerBar(true)
.gap(5)
.round(dc.round.floor)
.alwaysUseRounding(true)
.x(d3.scale.ordinal().domain(GHG2bins))
.xUnits(dc.units.ordinal)
.renderHorizontalGridLines(true)
//Customize the filter displayed in the control span
.filterPrinter(function (filters) {
var filter = filters[0], s = '';
s += numberFormat(filter[0]) + ' -> ' + numberFormat(filter[1]);
return s;
})
.filterHandler(function (dimension, filter) {
var selectedRange = ghg2Chart.filter();
dimension.filter(function (d) {
var range;
var match = false;
// Iterate over each selected range and return if 'd' is within the range.
for (var i = 0; i < filter.length; i++) {
range = filter[i];
if (d >= range - .1 && d <= range) {
match = true;
break;
}
}
return selectedRange != null ? match : true;
});
return filter;
});
您的图表的唯一问题是没有足够的 space 刻度,因此标签被剪掉了。
默认左边距为 30 像素:
https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.marginMixin+margins
尝试增加边距。偷懒的方法是:
chart.margins().left = 40;
但这有点令人困惑,所以更常见的方式是
chart.margins({top: 10, right: 50, bottom: 30, left: 40});
dc.js 自动执行此操作会很棒:
https://github.com/dc-js/dc.js/issues/713
但是根据文本大小进行布局相当困难,所以目前所有这些东西仍然是手动的(影响图例、轴标签等)