Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HighChart堆叠列标签问题_Javascript_Jquery_Highcharts_Label_Jsfiddle - Fatal编程技术网

Javascript HighChart堆叠列标签问题

Javascript HighChart堆叠列标签问题,javascript,jquery,highcharts,label,jsfiddle,Javascript,Jquery,Highcharts,Label,Jsfiddle,我有一个带有不均匀值的图表,即:第一个值是1315,第二个值是1,依此类推,当显示图表时,标签重叠。我已经在多个论坛上搜索过了,但没有人遇到完全相同的问题。这里有一把小提琴来看看这个问题: $(函数(){ $(“#容器”)。高图({ 图表:{ 类型:“列” }, 标题:{ 文本:“堆叠柱形图” }, xAxis:{ 类别:[“问题”] }, 亚克斯:{ 分:0,, 标题:{ 正文:“水果总消费量” }, 堆叠标签:{ 启用:对, 风格:{ fontWeight:'粗体', 颜色:(Highcha

我有一个带有不均匀值的图表,即:第一个值是1315,第二个值是1,依此类推,当显示图表时,标签重叠。我已经在多个论坛上搜索过了,但没有人遇到完全相同的问题。这里有一把小提琴来看看这个问题:

$(函数(){
$(“#容器”)。高图({
图表:{
类型:“列”
},
标题:{
文本:“堆叠柱形图”
},
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]
    }]
});