如何刷新jqplot条形图而不重绘图表

Ume*_*ghe 19 refresh jquery-plugins reload bar-chart jqplot

我有一个jqplot条形图,我希望在用户更改下拉列表中的值时更改图表数据.这是有效的,但问题是每次用户更改值时条形图重绘,一个在另一个上.

如何更新或重新加载条形图而不再绘制整个图形?是否有任何财产价值?

图表数据根据ajax调用而变化:

$.ajax({
    url: '/Home/ChartData',
    type: 'GET',
    data: { Id: Id },
    dataType: 'json',
    success: function (data) {
        $.jqplot('chartDiv', [a, b], CreateBarChartOptions(xAxis));
}});

function CreateBarChartOptions(xAxis) {
    var optionsObj = {
        title: 'Stat',
        axes: {
            xaxis: {
                renderer: $.jqplot.CategoryAxisRenderer,
                ticks: xAxis
            },
            yaxis: { min: 0 }
        },
        series: [{ label: 'A' }, { label: 'B'}],

        seriesDefaults: {
            shadow: true,
            renderer: $.jqplot.BarRenderer,
            rendererOptions: {
                barPadding: 8,
                barMargin: 10
            }
        },

    };
    return optionsObj;
}
Run Code Online (Sandbox Code Playgroud)

回复将受到高度赞赏.谢谢.

sta*_*onk 26

你想要做的是在绘制新图表时调用jqPlot的.replot()方法.将您的ajax调用更改为如下所示:

$.ajax({
        url: '/Home/ChartData',
        type: 'GET',
        data: { Id: Id },
        dataType: 'json',
        success: function (data) {

            $.jqplot('chartDiv', [a, b], CreateBarChartOptions(xAxis)).replot();
        }});
Run Code Online (Sandbox Code Playgroud)

  • 对我不起作用,只需在旧图表上绘制另一张图表.目前我正在调用jQuery("#chart1").html(''); 强行清除前一个div然后重新绘制它. (2认同)

Lui*_*uis 13

尝试将图表对象作为脚本中的全局变量:

var plot1 = $.jqplot('chartDiv', [a, b], CreateBarChartOptions(xAxis));
Run Code Online (Sandbox Code Playgroud)

然后成功重置数据,axesScale和重绘为:

var newData = [['a',1],['b',2],['c',3]]; 
plot1.series[0].data = newData; 
plot1.resetAxesScale(); 
plot1.replot(); 
Run Code Online (Sandbox Code Playgroud)

参考:https://groups.google.com/group/jqplot-users/browse_thread/thread/59df82899617242b? pli = 1


Shi*_*rur 8

每次重绘图形之前,只需销毁现有的1.

$.ajax({
    url: '/Home/ChartData',
    type: 'GET',
    data: { Id: Id },
    dataType: 'json',
    success: function (data) {
        if(plot)
        {
           plot.destroy();
         }
        var plot=$.jqplot('chartDiv', [a, b], CreateBarChartOptions(xAxis));
}});
Run Code Online (Sandbox Code Playgroud)