如何在轴标签中只包装一个单词
How to wrap only one word in axis labels
我画了一个基于对象数组的柱状图,如下图所示:
var arr = [
{first: "a", second: "middle1", third: "firstVeryVeryVeryVeryLong", value: 20},
{first: "secondVeryVeryVeryVeryLong", second: "b", third: "middle2", value: 40},
{first: "middle3", second: "thirdVeryVeryVeryVeryLong", third: "c", value: 51}
]
我希望所有三个参数(first, second和third)都在我的条形图上的轴标签中,但是"first"answers"second"必须在第一行,"third"必须在第二行。我曾尝试使用换行函数http://bl.ocks.org/mbostock/7555321,但它使用长度来换行标签,因为我需要按字数
进行换行。这是我的小提琴:https://jsfiddle.net/anton9ov/pqhuuk12/
可采用https://bl.ocks.org/mbostock/7555321中的wrap
函数:
svg.append("g")
.attr("transform", "translate(" + labelLength + ", 0)")
.call(yAxis)
.selectAll('text')
.call(wrap, yScale.bandwidth());
function wrap(text, height) {
text.each(function() {
var text = d3.select(this),
words = text.text().split(/'s+/).reverse(),
word,
line = [],
lineNumber = 0,
lineHeight = 1.1, // ems
//start the text from bar top
y = text.attr("y") - (barHeight/2),
dy = parseFloat(text.attr("dy")),
tspan = text.text(null).append("tspan").attr("x", 0).attr("y", y).attr("dy", dy + "em");
while (word = words.pop()) {
line.push(word);
tspan.text(line.join(" "));
if (tspan.node().getComputedTextLength() > height) {
line.pop();
tspan.text(line.join(" "));
line = [word];
tspan = text.append("tspan").attr("x", 0).attr("y", y).attr("dy", ++lineNumber * lineHeight + dy + "em").text(word);
}
}
});
}
这是你更新的小提琴:https://jsfiddle.net/pqhuuk12/8/
相关文章:
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 如何创建一个“;表单弹出框“;在chrome中右键单击时位于突出显示的单词上方
- 从输入值中删除最后一个单词
- 如何使用Javascript在给定的句子中找到大写单词并在其前面添加一个字符
- 当两个单独的单词被放在目标上时,使用Jquery获取一个值
- 在表单中创建一个黑名单过滤器以避免某些单词
- 如何查找一个单词在动态创建的html表行中出现的次数
- Regex或javascript每X个连续单词中有一个单词
- Javascript:当这个单词被点击5次时,下面会显示另一个单词
- Javascript/jQuery替换tamil语言输入框中的最后一个单词
- AJAX数据包含一个或多个单词.
- 如何使用d3.layout.cloud.js创建一个包含单词及其权重的csv的单词云
- Javascript-在一个数组中搜索整个单词,并创建一个符合条件的新数组
- Javascript(如果var包含一个单词,则仅更改该单词的颜色)
- 为什么javascript函数名称custom是一个小写的单词,后跟一个大写的单词,就像'orangeCost'一样
- 使用Javascript双击HTML中的空格时,选择上一个和下一个单词
- 检查字符串是否等于一个单词和一个数字
- 有没有一个网站可以生成所有可能的显示单词的方式
- Regex:使用javascript测试最后一个单词后的url中是否存在最后一个斜杠