android - 如何制作实时多折线图?

标签 android real-time mpandroidchart

我想使用 MPAndroidChart 制作实时多重折线图.

只用一种数据做实时图是没有问题的。 (以下代码)

private void addEntry(int count) {
    LineData data = mChart.getData();

    if (data != null) {
        LineDataSet set = data.getDataSetByIndex(0);

        if (set == null) {
            set = createSet();
            data.addDataSet(set);
        }

        data.addXValue("");

        data.addEntry(new Entry(getPressure(), set.getEntryCount()), 0);

        data.setDrawValues(false);
        data.setHighlightEnabled(false);

        // let the chart know it's data has changed
        mChart.notifyDataSetChanged();

        // limit the number of visible entries
        mChart.setVisibleXRange(0, count);

        // move to the latest entry
        mChart.moveViewToX(data.getXValCount() - (count + 1));
    }
}

并且,使用以下代码制作多条折线图是没有问题的。

private void setData(int count, float range) {
    ArrayList<String> xValues = new ArrayList<String>();
    for (int i = 0 ; i < count ; i++) {
        xValues.add((1 + i) + "");
    }

    ArrayList<LineDataSet> dataSets = new ArrayList<LineDataSet>();

    for (int k = 0 ; k < 3 ; k++) {
        ArrayList<Entry> yValues = new ArrayList<Entry>();

        for (int i = 0 ; i < count ; i++) {
            if (k == 0) {
                yValues.add(new Entry(getSetPressure(), i));
            }
            else if (k == 1) {
                yValues.add(new Entry(getCurrentPressure(), i));
            }
            else {
                yValues.add(new Entry(getSuctionPressure(), i));
            }
        }

        String s;
        String c;
        if (k == 0) {
            s = "Set Pressure";
            c = "#ed1f24";
        }
        else if (k == 1) {
            s = "Current Pressure";
            c = "#004bf6";
        }
        else {
            s = "Suction Pressure";
            c = "#ffba00";
        }

        LineDataSet set = new LineDataSet(yValues, s);

        set.setAxisDependency(YAxis.AxisDependency.LEFT);
        set.setDrawCubic(false);
        set.setDrawCircles(false);
        set.setCircleColor(Color.parseColor(c));
        set.setCircleSize(8f);
        set.setCircleColorHole(Color.BLACK);
        set.setDrawCircleHole(false);
        set.setLineWidth(3f);
        set.setColor(Color.parseColor(c));
        set.setDrawHorizontalHighlightIndicator(false);
        set.setDrawVerticalHighlightIndicator(false);

        dataSets.add(set);
    }

    LineData data = new LineData(xValues, dataSets);

    data.setDrawValues(false);
    data.setHighlightEnabled(false);

    mChart.setData(data);
}

但是,我不知道如何制作多个实时折线图。

如何制作多个实时折线图?

最佳答案

您实际上在问题中发布了问题的答案。

这一行是关键:

data.addEntry(... , 0);

末尾的 0 指定应插入条目的数据集索引。

所以您需要做的就是创建与您想要的行一样多的空 DataSet,然后将您的 Entries 添加到任何 DataSet 你想通过使用上面提到的方法和正确的索引。

Here您可以找到动态和实时数据的官方 wiki 条目。

关于android - 如何制作实时多折线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707149/

相关文章:

android - aChartEngine 图从 ScrollView 顶部推开

java - 外部光传感器的输入频率

android - 是否可以在 android2.2 应用程序中从谷歌地图获取建议路线?

node.js - 关注者的实时新闻源 - 哪些工具和语言?

apache-spark - Spark Streaming 不从 Windows 中的本地目录读取文件

android - 具有单一数据输入的 MPAndroid 线图

android - 在 MPAndroid 条形图版本 3 中设置标签

android - Mpandroidchart 文本未正确显示在折线图的 x 轴上

android - 保存和检索选定的微调器位置

haskell - 将时间建模为惰性数字