【问题标题】:JQPlot replot. Updating PointLabelsJQPlot 重绘。更新点标签
【发布时间】:2012-10-15 10:45:56
【问题描述】:

我有一个条形图,我需要更新它的数据,也是一个 PointLabels。数据正在更新,但 PointLabels 与之前的绘图相同。如何更新 PointLabels?

// here are labels.

      var my_labels = [["2 g. <br /> 47$"],["2 g. <br /> 48$"],["7 g. <br /> 49$"],[],["10 g. <br /> 51$"],["6 g. <br /> 52$"],["4 g. <br /> 53$"]];
            $.jqplot.config.enablePlugins = true;
            var s1 = [2, 6, 7, '' , 10, 6, 4];
            var ticks = [47,48, 49, 50, 51, 52, 53];
           // initializing plot  
            plot1 = $.jqplot('chart1', [s1], {
                // Only animate if we're not using excanvas (not in IE 7 or IE 8)..
                        canvasOverlay: {
                show: true,
                objects: [
                    {verticalLine: {
                        name: 'barney',
                        x: 4,
                        lineWidth: 2,
                        color: 'gray',
                        shadow: false
                    }}
                ]
            },
                animate: !$.jqplot.use_excanvas,
                seriesDefaults:{
                    renderer:$.jqplot.BarRenderer,

// setting labels to my own defined labels




    pointLabels: { show: true, labels : my_labels, escapeHTML: false },
                    color: '#E6D49F'
                },
                axes: {
                    xaxis: {
                        renderer: $.jqplot.CategoryAxisRenderer,
                        ticks: ticks,
                        max: 100
                    }
                },
                highlighter: { show: false },

            });

            $('#chart1').bind('jqplotDataClick', 
                function (ev, seriesIndex, pointIndex, data) {
                    $('#info1').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data);
                }
            );
        });
    // reploting function call
    setInterval(function(){replot()},4000);
        var a = 1;
        var labels;
// reploting function
        function replot()
        {
        var data;

    switch(a)
    {
    case 1:
      data = [[1,4], [2,6], [3, 8],[4,0],[5, 9],[6, 7],[7, 3]];
      labels = [["4 g. <br /> 47$"],["6 g. <br /> 48$"],["8 g. <br /> 49$"],[],["9 g. <br /> 51$"],["7 g. <br /> 52$"],["3 g. <br /> 53$"]];
      break;
    case 2:
      data = [[1,3], [2,7], [3, 7],[4,0],[5, 8],[6, 6],[7, 4]];
      labels = [["3 g. <br /> 47$"],["6 g. <br /> 48$"],["8 g. <br /> 49$"],[],["9 g. <br /> 51$"],["7 g. <br /> 52$"],["3 g. <br /> 53$"]];
      break;
    case 3:
      data = [[1,5], [2,5], [3, 9],[4,0],[5, 10],[6, 8],[7, 2]];
      labels = [["5 g. <br /> 47$"],["6 g. <br /> 48$"],["8 g. <br /> 49$"],[],["9 g. <br /> 51$"],["7 g. <br /> 52$"],["3 g. <br /> 53$"]];
      break;
    }
//updating data
        plot1.series[0].data = data;
//trying to update pointlabels
        plot1.series[0].pointLabels.labels = labels;
        plot1.replot();
        if(a == 3)
        a = 0;
        a++;
        }

【问题讨论】:

    标签: jqplot


    【解决方案1】:

    我有同样的问题,并认为我做错了什么。但是现在看到别人也有同样的问题,好像是插件本身的问题。

    我从own post 上的comments 之一找到了解决此问题的方法。

    重新绘制后尝试像这样直接更新包含点标签的div。

    for(i=0;i<labels.length;i++){
        $("#chart1").find('.jqplot-series-0.jqplot-point-'+i).html(''+labels[i]);
    }
    

    我希望有一天有人会提供更好的解决方案,而不是这种解决方法。

    【讨论】:

      【解决方案2】:

      我很欣赏这是一个旧线程,但我刚刚遇到了同样的问题,并在“$.jqplot.PointLabels.draw”函数的第一行添加了以下内容,该函数在重新绘制之前删除了所有先前添加的标签他们:

      $('.jqplot-point-label',plot.target).remove();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-18
        • 2018-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多