use*_*678 23 charts radar-chart chart.js
我使用Chart.js来显示雷达图.我的问题是有些标签很长:图表无法显示或显得非常小.
那么,有没有办法打破线条或为标签分配最大宽度?
谢谢您的帮助!
Ari*_*tos 42
对于Chart.js 2.0+,您可以使用数组作为标签:
引用DOC: "用法:如果标签是一个数组而不是一个字符串,即[["June","2015"],"July"]那么每个元素都被视为一个单独的行."
var data = {
labels: [["My", "long", "long", "long", "label"], "another label",...],
...
}
Run Code Online (Sandbox Code Playgroud)
Fer*_*ano 22
使用ChartJS 2.1.6并使用@ArivanBastos 答案
只需将您的长标签传递给以下函数,它将以数组形式返回您的标签,每个元素都遵循指定的maxWidth.
/* takes a string phrase and breaks it into separate phrases
no bigger than 'maxwidth', breaks are made at complete words.*/
function formatLabel(str, maxwidth){
var sections = [];
var words = str.split(" ");
var temp = "";
words.forEach(function(item, index){
if(temp.length > 0)
{
var concat = temp + ' ' + item;
if(concat.length > maxwidth){
sections.push(temp);
temp = "";
}
else{
if(index == (words.length-1))
{
sections.push(concat);
return;
}
else{
temp = concat;
return;
}
}
}
if(index == (words.length-1))
{
sections.push(item);
return;
}
if(item.length < maxwidth) {
temp = item;
}
else {
sections.push(item);
}
});
return sections;
}
Run Code Online (Sandbox Code Playgroud)
要包装 xAxes 标签,请将以下代码放入 optoins。(这将从空白处拆分并包装成多行)
scales: {
xAxes: [
{
ticks: {
callback: function(label) {
if (/\s/.test(label)) {
return label.split(" ");
}else{
return label;
}
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
您可以编写一个 javascript 函数来自定义标签:
// Interpolated JS string - can access value
scaleLabel: "<%=value%>",
请参阅http://www.chartjs.org/docs/#getting-started-global-chart-configuration