DC JS:删除带有序号 x 轴的折线图的外部填充?
DC JS: remove outer padding for line charts with an ordinal scale x-axis?
我使用 DC JS 构建了一个带有顺序 x 轴的折线图。它有效,只是 x 轴上有一些我似乎无法摆脱的外部填充。我希望最左边和最右边的数据点与图表的边缘齐平,没有填充。希望我没有漏掉一些明显的东西。
我想我设置的 x 轴刻度不正确。给定这样的数据集:
var data = [
{ key: 'Monday', value: 3000000 },
{ key: 'Tuesday', value: 3100000 },
{ key: 'Wednesday', value: 3500000 },
{ key: 'Thursday', value: 3070000 },
{ key: 'Friday', value: 4500000 },
{ key: 'Saturday', value: 3003030 },
{ key: 'Sunday', value: 5010000 }
];
这是我在 x 轴刻度上所做的:
var ordinalScale = d3.scale.ordinal().domain(['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']).rangeRoundBands([0,chartWidth]);
chart.x(ordinalScale).xUnits(dc.units.ordinal);
我还查看了有关序数尺度的 D3 文档,但这还没有帮助。
这是一个屏幕截图(多余的填充标记为红色):
http://imgur.com/a/zmfF4
这是一个演示问题的有效 JS fiddle:
https://jsfiddle.net/qvp4fpzy/4/
处理范围波段周围的 dc.js 和 d3.js 特征有点令人困惑。
dc.js 对 bar/line x 位置有自己的内置计算,但如果 x 尺度是有序的,它会自动选择 .rangeBands
:
if (_chart.isOrdinal()) {
_x.rangeBands([0, _chart.xAxisLength()], _rangeBandPadding,
_chart._useOuterPadding() ? _outerRangeBandPadding : 0);
} else // ...
所以我认为您对 .rangeRoundBands
的调用没有任何效果。 (dc.js 应该使用 rangeRoundBands
而不是 rangeBands
吗?也许吧,但这对这个问题没有影响。)
你想影响的是third parameter to rangeBands
,而那是chart._outerRangeBandPadding()
控制的。 (忽略 chart._useOuterPadding()
- 这是向后兼容的事情。)
所以你只需要
chart._outerRangeBandPadding(0);
我使用 DC JS 构建了一个带有顺序 x 轴的折线图。它有效,只是 x 轴上有一些我似乎无法摆脱的外部填充。我希望最左边和最右边的数据点与图表的边缘齐平,没有填充。希望我没有漏掉一些明显的东西。
我想我设置的 x 轴刻度不正确。给定这样的数据集:
var data = [
{ key: 'Monday', value: 3000000 },
{ key: 'Tuesday', value: 3100000 },
{ key: 'Wednesday', value: 3500000 },
{ key: 'Thursday', value: 3070000 },
{ key: 'Friday', value: 4500000 },
{ key: 'Saturday', value: 3003030 },
{ key: 'Sunday', value: 5010000 }
];
这是我在 x 轴刻度上所做的:
var ordinalScale = d3.scale.ordinal().domain(['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']).rangeRoundBands([0,chartWidth]);
chart.x(ordinalScale).xUnits(dc.units.ordinal);
我还查看了有关序数尺度的 D3 文档,但这还没有帮助。
这是一个屏幕截图(多余的填充标记为红色): http://imgur.com/a/zmfF4
这是一个演示问题的有效 JS fiddle: https://jsfiddle.net/qvp4fpzy/4/
处理范围波段周围的 dc.js 和 d3.js 特征有点令人困惑。
dc.js 对 bar/line x 位置有自己的内置计算,但如果 x 尺度是有序的,它会自动选择 .rangeBands
:
if (_chart.isOrdinal()) {
_x.rangeBands([0, _chart.xAxisLength()], _rangeBandPadding,
_chart._useOuterPadding() ? _outerRangeBandPadding : 0);
} else // ...
所以我认为您对 .rangeRoundBands
的调用没有任何效果。 (dc.js 应该使用 rangeRoundBands
而不是 rangeBands
吗?也许吧,但这对这个问题没有影响。)
你想影响的是third parameter to rangeBands
,而那是chart._outerRangeBandPadding()
控制的。 (忽略 chart._useOuterPadding()
- 这是向后兼容的事情。)
所以你只需要
chart._outerRangeBandPadding(0);