显示 D3.js将文本标记为两行
Display D3.js label text into two lines
我正在尝试使用 D3Funnel 库创建一个漏斗图。我能够渲染图表并显示我的数据,但由于我在宽度上以非常小的尺寸绘制它,因此类别的文本标签经常溢出漏斗。这看起来不是很令人愉快。所以现在我的想法是用两行显示标签;第一行是分类,第二行我想显示金额。
为了能够做到这一点,我尝试按照此处提供的各种示例对标签/文本进行文本换行,但我无法取得任何进展。所以如果有人能在这里帮助我,那就太好了。
http://jsfiddle.net/NewMonk/s76oap3d/1/
我觉得我需要进行更改的相关位置在代码的以下部分的某个地方,但无法弄清楚我该怎么做:
{
key: '_addBlockLabel',
value: function _addBlockLabel(group, index) {
var paths = this.blockPaths[index];
var label = this._getBlockData(index)[0].formatted;
var fill = this.data[index][3] || this.label.fill;
var x = this.width / 2; // Center the text
var y = this._getTextY(paths);
group.append('text').text(label).attr({
'x': x,
'y': y,
'text-anchor': 'middle',
'dominant-baseline': 'middle',
'fill': fill,
'pointer-events': 'none'
}).style('font-size', this.label.fontSize);
}
/**
* Returns the y position of the given label's text. This is determined by
* taking the mean of the bases.
*
* @param {Array} paths
*
* @return {Number}
*/
}, {
key: '_getTextY',
value: function _getTextY(paths) {
if (this.isCurved) {
return (paths[2][1] + paths[3][1]) / 2 + this.curveHeight / this.data.length;
}
return (paths[1][1] + paths[2][1]) / 2;
}
}]);
问候
您可以追加两个text
元素,而不是一个。
使用代码似乎您可以访问标签和值,因此只需使用dy
属性分别附加它们即可垂直分隔它们:
key: '_addBlockLabel',
value: function _addBlockLabel(group, index) {
var paths = this.blockPaths[index];
var text = this.blocks[index].label.raw;
var value = this.blocks[index].value;
var fill = this.blocks[index].label.color;
var x = this.width / 2; // Center the text
var y = this._getTextY(paths);
group.append('text').text(text).attr({
x: x,
y: y,
dy: -10,
fill: fill,
'text-anchor': 'middle',
'dominant-baseline': 'middle',
'pointer-events': 'none'
}).style('font-size', this.label.fontSize);
group.append('text').text(value).attr({
x: x,
y: y,
dy: 10,
fill: fill,
'text-anchor': 'middle',
'dominant-baseline': 'middle',
'pointer-events': 'none'
}).style('font-size', this.label.fontSize);
}
工作小提琴:http://jsfiddle.net/38kkctqh/
相关文章:
- 我怎么能用css或(angular)javascript把句子分成两行,只在特定单词后面
- Jquery顶部的两行Javascript不起作用
- Javascript赢得'Don’不要跳过前两行代码
- 类型错误:无法读取属性'行'使用javascript删除行时为null
- 这两行jQuery是否等效
- 一行或两行后的CSS单词省略号('..')
- json将多行读取为新的onces
- 将鼠标悬停在图像上,图像的不透明度和图像下方标题的颜色会发生变化..同样,当标题变成两行时,它会破坏格式
- 将CSV行转换为Javascript对象
- 将两行代码与JavaScript组合在一个函数中
- 将新行更改为<p>包裹在iFrame中
- CSS 为 JSON 数据添加两行字符
- 将列表项换行/拆分为两个 ul
- 显示 D3.js将文本标记为两行
- 刷新行并将行的两列替换为来自操作类的响应
- 溢出隐藏的问号将单词拆分为两行
- 如果在移动设备上,将数组(索引列表)拆分为两行
- 如何将带有日期的刻度拆分为两行
- 这个两行jquery可以缩短为一行吗?
- 为什么我的主导航在移动设备上显示为两行而不是一行