javascript - 向空人力车图表添加数据

标签 javascript jquery charts rickshaw

我正在使用 RickshawJS 绘制不同的数据图表。但是我需要一种方法来在用户单击 #search 按钮时更新图表。现在它只是在旧图表下方创建一个新图表,这非常困惑。

用户进入页面,输入一些细节,点击按钮绘制图表。所以理想情况下,我想从一个未显示的空图表开始,但我真的不知道如何从图表和轴中删除数据然后更新它。

我可以在图表和轴上调用 $('#chart svg').remove(); 但它看起来很乱。

$('#search').click(function(event){
    event.preventDefault();

    var data = utils.malletData();
    var graph = new Rickshaw.Graph( {
            element: document.querySelector("#chart"),
            width: 800,
            height: 250,
            series: [ {
                    name: data['name'],
                    color: 'steelblue',
                    data: data['series']
            } ]
    } );
    graph.render();

    var hoverDetail = new Rickshaw.Graph.HoverDetail( {
        graph: graph,
        xFormatter: function(x) {
            var date = new Date(x).getTime();
            return moment(x).format('MMMM Do YYYY, h:mm:ss a');
        },
        yFormatter: function(y) { return Math.floor(y) + " users" }
    } );

    var xAxis = new Rickshaw.Graph.Axis.X( {
        graph: graph,
        orientation: 'bottom',
        element: document.getElementById('x_axis'),
        tickFormat: function(x) { return moment(x).fromNow(); },
        ticks: 7,
        tickSize: 1,
    } );
    xAxis.render();

    var ticksTreatment = 'glow';
    var yAxis = new Rickshaw.Graph.Axis.Y( {
        graph: graph,
        orientation: 'left',
        tickFormat: Rickshaw.Fixtures.Number.formatKMBT,
        ticksTreatment: ticksTreatment,
        element: document.getElementById('y_axis'),
    } );
    yAxis.render();
});

最佳答案

没有正式的方法可以这样做。但是,您可以利用 javascript 中的数组通过引用传递的事实,然后更新图形。

看看这个demo on fiddle

var data = [
        {
            data: [ { x: 0, y: 120 }, { x: 1, y: 890 }, { x: 2, y: 38 }, { x: 3, y: 70 }, { x: 4, y: 32 } ],
            color: "#c05020"
        }, {
            data: [ { x: 0, y: 80 }, { x: 1, y: 200 }, { x: 2, y: 100 }, { x: 3, y: 520 }, { x: 4, y: 133 } ],
            color: "#30c020"
        }
];


var graph = new Rickshaw.Graph( {
    element: document.getElementById("chart"),
    renderer: 'line',
    height: 300,
    width: 800,
    series: data
} );

var y_ticks = new Rickshaw.Graph.Axis.Y( {
    graph: graph,
    orientation: 'left',
    tickFormat: Rickshaw.Fixtures.Number.formatKMBT,
    element: document.getElementById('y_axis'),
} );

graph.render();


$('button#add').click(function() {
    data.push({
            data: [ { x: 0, y: 200 }, { x: 1, y: 390 }, { x: 2, y: 1000 }, { x: 3, y: 200 }, { x: 4, y: 230 } ],
            color: "#6060c0"
    });
    graph.update();
});

关于javascript - 向空人力车图表添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17444475/

相关文章:

c# - 如何向 C# 图表添加两个不同类型的系列?

javascript - 存储函数调用结果以供以后引用

javascript - JQuery 按 tr 标签的属性填充下拉列表

jquery - 9-Patch PNG 是否可以在浏览器上以某种方式与 CSS 一起工作

jquery - 为什么 Safari 中会有后 jQuery 的 flash?

javascript - 将点添加到 D3 图表

javascript - 如何放大与坐标轴文本保持一致的区域?谷歌图表

javascript - 如何使用 moment 获取最近 3 周的日期范围?

javascript - 如何用中间的附加空格替换对象的 PascalCase 键?

javascript - 我有两个数组,如何找到匹配的元素并执行一些操作? (lodash)