Javascript HighChart堆叠列标签问题
我有一个带有不均匀值的图表,即:第一个值是1315,第二个值是1,依此类推,当显示图表时,标签重叠。我已经在多个论坛上搜索过了,但没有人遇到完全相同的问题。这里有一把小提琴来看看这个问题:Javascript HighChart堆叠列标签问题,javascript,jquery,highcharts,label,jsfiddle,Javascript,Jquery,Highcharts,Label,Jsfiddle,我有一个带有不均匀值的图表,即:第一个值是1315,第二个值是1,依此类推,当显示图表时,标签重叠。我已经在多个论坛上搜索过了,但没有人遇到完全相同的问题。这里有一把小提琴来看看这个问题: $(函数(){ $(“#容器”)。高图({ 图表:{ 类型:“列” }, 标题:{ 文本:“堆叠柱形图” }, xAxis:{ 类别:[“问题”] }, 亚克斯:{ 分:0,, 标题:{ 正文:“水果总消费量” }, 堆叠标签:{ 启用:对, 风格:{ fontWeight:'粗体', 颜色:(Highcha
$(函数(){
$(“#容器”)。高图({
图表:{
类型:“列”
},
标题:{
文本:“堆叠柱形图”
},
xAxis:{
类别:[“问题”]
},
亚克斯:{
分:0,,
标题:{
正文:“水果总消费量”
},
堆叠标签:{
启用:对,
风格:{
fontWeight:'粗体',
颜色:(Highcharts.theme&&Highcharts.theme.textColor)| |“灰色”
}
}
},
图例:{
对齐:“右”,
x:-30,
垂直排列:“顶部”,
y:25,
浮动:是的,
背景颜色:(Highcharts.theme&&Highcharts.theme.background2)| |“白色”,
边框颜色:“#CCC”,
边框宽度:1,
影子:错
},
工具提示:{
格式化程序:函数(){
返回“+this.x+”
+
this.series.name+':'+this.y+'
+
“总计:”+this.point.stackTotal;
}
},
打印选项:{
专栏:{
堆叠:“正常”,
数据标签:{
启用:对,
颜色:(Highcharts.theme&&Highcharts.theme.dataLabelsColor)| |“白色”,
风格:{
textShadow:'0 0 3px黑色'
}
}
}
},
系列:[{
姓名:'约翰',
数据:[1235]
}, {
名称:“Toto”,
数据:[2]
}, {
姓名:'马特',
数据:[1]
}, {
姓名:'简',
数据:[72]
}, {
名字:'乔',
数据:[3]
}]
});
}))
我需要编写的代码是给值1一个框,在这个框中,标签可以插入,就像highchart中的任何其他示例一样
提前感谢您的帮助 如果您的客户要求使用这种图形样式,您可以通过修改dataLabel设置来获得更好的结果。将overflow设置为false,并添加一个格式化程序函数,该函数仅在当前总数至少为7%(或对您最合适的百分比)时返回一个值,这将有所帮助。见下文:
数据标签:{
启用:对,
溢出:错误,
颜色:(Highcharts.theme&&Highcharts.theme.dataLabelsColor)| |“白色”,
风格:{
textShadow:'0 0 3px黑色'
},
格式化程序:函数(){
如果(this.percentage>=7)返回此.y;
}
}
我不知道你在期待什么。当你“像其他任何人一样…”你的意思是这个系列足够大,可以容纳里面的数据标签?唯一的办法就是把图表放大,或者篡改数据,把序列放大。这两个听起来都不是个好主意。我不得不想象,如果这是您遇到的问题,那么有更好的方法来可视化您的数据……例如,我建议不要使用堆叠图,而是使用普通条形图。是的,这就是我的意思。我已经建议了另一种图表格式,但客户特别想要它。然后,问题是,你到底想要什么?使数据点足够大以适合标签意味着要么使图表更大以分散数据,要么为数据点设置一个最大程度扭曲数据的最小大小,或者不允许值如此小……只是为了在同一页上:Highcharts library不提供防止数据标签重叠的逻辑。您可以尝试编写自己的逻辑:(适用于两个系列)。这解决了我的问题。不仅是我想做的,而且对我的客户来说已经足够了。谢谢!请延迟,将您的回答标记为已接受的答案。没问题,很高兴它有所帮助!
$(function () {
$('#container').highcharts({
chart: {
type: 'column'
},
title: {
text: 'Stacked column chart'
},
xAxis: {
categories: ['Issue']
},
yAxis: {
min: 0,
title: {
text: 'Total fruit consumption'
},
stackLabels: {
enabled: true,
style: {
fontWeight: 'bold',
color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
}
}
},
legend: {
align: 'right',
x: -30,
verticalAlign: 'top',
y: 25,
floating: true,
backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || 'white',
borderColor: '#CCC',
borderWidth: 1,
shadow: false
},
tooltip: {
formatter: function () {
return '<b>' + this.x + '</b><br/>' +
this.series.name + ': ' + this.y + '<br/>' +
'Total: ' + this.point.stackTotal;
}
},
plotOptions: {
column: {
stacking: 'normal',
dataLabels: {
enabled: true,
color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white',
style: {
textShadow: '0 0 3px black'
}
}
}
},
series: [{
name: 'John',
data: [1235]
}, {
name: 'Toto',
data: [2]
}, {
name: 'Matt',
data: [1]
}, {
name: 'Jane',
data: [72]
}, {
name: 'Joe',
data: [3]
}]
});