如何制作实时多线图?

moo*_*ore 5 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));
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

Phi*_*oda 5

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

这行是关键:

data.addEntry(... , 0);
Run Code Online (Sandbox Code Playgroud)

最后的指定0应插入条目的数据集索引。

因此,您需要做的就是简单地创建尽可能多的空行DataSets,然后使用上述方法和正确的索引将其添加Entries到您想要的任何内容中。DataSet

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