自定义HighCharts - 更改plotLines的高度,默认情况下在特定x和y显示标记值 [英] Custom HighCharts - change the height of plotLines , show the marker value by default at a specific x and y

查看:2304
本文介绍了自定义HighCharts - 更改plotLines的高度,默认情况下在特定x和y显示标记值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想自定义highcharts

I am trying to customize highcharts

1)我需要更改绘制线的高度

1) I need to change the height of the plotlines

2)在标记图片本身的特定位置显示标记值(在顶部的白色圆圈内)

2) Show the marker value inside the marker image itself at a specific place(Inside the white circles at the top)

这是我到目前为止所做的

This is what I have achieved so far

Highcharts.setOptions({
            global: {
                useUTC: false
            }
        });
        /*function updateData(x,y)
        {
            var series = chart.series[0];
            series.addPoint([x, y], true, true);
        }*/
var chart;

$(function () {
    var color = '#AA34FF';

    $('#container').highcharts({
        chart: {
            events: {
                load: function(event) {
                    _bindCustomEvents();
                }
            },
            backgroundColor: 'transparent'        
        },

        series: [
            {
                color: 
                {
                    linearGradient: 
                    {
                        x1: 0,
                        y1: 0,
                        x2: 0,
                        y2: 1
                    },
                    stops: 
                    [
                        /*[0, '#a83e3e'],
                                [0.21, '#d34e47'],
                                [0.40, '#edbb5a'],
                                [0.57, '#e2e57a'],
                                [0.76, '#8dcc63'],
                                [1, '#7ab237']*/
                                [0, '#7ab237'],
                                [0.21, '#8dcc63'],
                                [0.40, '#e2e57a'],
                                [0.57, '#edbb5a'],
                                [0.76, '#d34e47'],
                                [1, '#a83e3e']
                            ]
                        },
                        lineWidth: 4,
                        marker: {
                            enabled: false,
                            fillColor: '#FFFFFF',
                            lineWidth: 2,
                            lineColor: null,
                        },
                        type: 'spline',
                        data: [1, 2, 5, 3, 6, 7, 4],
                        backgroundColor: 'transparent',
                        plotShadow : false
                    },
                    {
                        name: '',
                        marker: {
                            symbol: 'diamond'
                        },
                        //same inmage for all points
                        marker: {
                            symbol: 'url(http://fc08.deviantart.net/fs71/f/2014/016/b/9/top_marker_by_skyrbe-d72ewk0.png)'
                        },
                        data: [8,8,8,8,8,8,8],
                        type:'scatter'
                    },
                    {
                        name: '',
                        marker: {
                            symbol: 'diamond'
                        },
                        //same inmage for all points
                        marker: {
                            symbol: 'url(http://fc03.deviantart.net/fs71/f/2014/016/f/a/bottom_marker_by_skyrbe-d72ew7w.png)'
                        },
                        data: [-1,-1,-1,-1,-1,-1,-1],
                        type:'scatter'
                    }
                ],
                xAxis: {
                    categories: [
                        'Sun',
                        'Mon',
                        'Tue',
                        'Wed',
                        'Thu',
                        'Fri',
                        'Sat'
                    ],
                    title: {
                        enabled: true,
                        text: null,
                    },
                    labels: {
                        style: {
                            fontFamily: 'gestaregular',
                            fontSize: '16px',
                            color:'#fff'
                        }
                    },
                    plotLines: [
                        { // mark the weekend
                            color: 'rgba(255,255,255,0.3)',
                            width: 1,
                            value: 0,
                            dashStyle: 'dash',
                            zIndex:10
                        },
                        {
                            color: 'rgba(255,255,255,0.3)',
                            width: 1,
                            value: 1,
                            dashStyle: 'dash',
                            zIndex:10
                        },
                        {
                            color: 'rgba(255,255,255,0.3)',
                            width: 1,
                            value: 2,
                            dashStyle: 'dash',
                            zIndex:10
                        },
                        {
                            color: 'rgba(255,255,255,0.3)',
                            width: 1,
                            value: 3,
                            dashStyle: 'dash',
                            zIndex:10
                        },
                        {
                            color: 'rgba(255,255,255,0.3)',
                            width: 1,
                            value: 4,
                            dashStyle: 'dash',
                            zIndex:10
                        },
                        {
                            color: 'rgba(255,255,255,0.3)',
                            width: 1,
                            value: 5,
                            dashStyle: 'dash',
                            zIndex:10
                        },
                        {
                            color: 'rgba(255,255,255,0.3)',
                            width: 1,
                            value: 6,
                            dashStyle: 'dash',
                            zIndex:10
                        }],
                    lineWidth: 0,
                    minorGridLineWidth: 0,
                    lineColor: 'transparent',
                },
                yAxis: {
                    labels: {
                        enabled: false
                    },
                    title: {
                        enabled: true,
                        text: null,
                    }
                },
                legend: {
                    enabled: false  
                },
                minorTickLength: 0,
                tickLength: 0

            });

        });

function _bindCustomEvents()
{
    var chart = $('#container').highcharts();
    chart.setTitle({ text: ''});
    $('.highcharts-axis').hide();
    $('.highcharts-grid').hide();
    $('.highcharts-axis').find('path').hide();
}

FIDDLE LINK

这是我想要的效果:在顶部圆圈中为'2',它应该是来自中心样条的对应值[1,2,5,3,6,7,4]。

This is how I want it to look like : Instead of '2' in the top circles , it should be the corresponding value from the center spline [1, 2, 5, 3, 6, 7, 4]

img src =https://i.stack.imgur.com/YypNb.pngalt =Image>

推荐答案

1) plotLines 是无限的。延伸到绘图区域。所以,为了限制这一点,你如何改变你的 yAxis max:

1) The plotLines are infinite. The extend as far as the plot area is. So, to limit this, how about you change your yAxis max:

yAxis: {
    max: 8,
    labels: {
        enabled: false
    },
    title: {
        enabled: true,
        text: null
    }
},

系列,并给他们一个确定的高度你想要的值。使列变薄以模仿 plotLines 将有助于:

Or, you could create a column series on the points you want and give them a certain value for the height you want. Making the columns thin to mimic your plotLines will help like so:

series: [{
            name: '',
            type: 'column',
            pointWidth: 1,
            borderWidth: 0,
            data: [8, 8, 8, 8, 8, 8, 8]
        },
...

2)圆圈中的哪些值(我猜)? 系列1:XX?

2) Which values in the circles (I am guessing)? The "Series 1: XX"? Or the whole tooltip?

编辑:
对于问题2,您可以使用 formatter 函数在 dataLabel 上的散点图系列(您的圈子)。这里是函数:

For question 2 you can do this with a formatter function on the dataLabel for the scatter series (your circles). Here is the function:

var customFormatPoint = function (pointX, seriesIndex) {
    var theChart = $('#container').highcharts();
    var yValue = null;
    var points = theChart.series[seriesIndex].options.data[pointX];
    return points;
};

您称之为:

series: [{
    name: '',
    type: 'column',
    pointWidth: 1,
    borderWidth: 0,
    dataLabels: {
        enabled: true,
        formatter: function () {
            return customFormatPoint(this.point.x, 1);
        }
    },
    data: [7.70, 7.70, 7.70, 7.70, 7.70, 7.70, 7.70]
}, {...

这里的要素是你有 this.point.x 点的xAxis位置。然后,您需要发送包含您要在 dataLabel 中显示的y值的系列的索引。

Key element here is that you have this.point.x which is that scatter point's xAxis location. You then need to send in which index the series is that contains the y value you want to show in the dataLabel.

我也删除了 plotLines ,并创建了一个只包含宽度为1的条形,没有边框的系列。

I have also removed the plotLines and created a series that just contains the bars with width of 1 and no border. I had to mess around to get the end of the bar (its max value) to coincide with the scatter circle diameter.

请看这个 jsFiddle

这篇关于自定义HighCharts - 更改plotLines的高度,默认情况下在特定x和y显示标记值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆