首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MPAndroidChart中在一个图中绘制多个图表

在MPAndroidChart中在一个图中绘制多个图表
EN

Stack Overflow用户
提问于 2014-11-11 20:00:44
回答 3查看 20.7K关注 0票数 9

我必须在一个图中绘制两个不同的dataSets。

数据集-1

代码语言:javascript
复制
    String[] xAxisOne = new String[] {
            "0", "1", "2", "3", "4", "5", "6"
    };

    float[] dataInput = {
            1f, 2f, 3f, 4f, 5f, 6f, 7f
    };

数据集-2

代码语言:javascript
复制
    String[] xAxisTwo = new String[] {
            "0", "2", "4", "5", "6", "8", "9"
    };

    float[] dataIn = {
            3f, 4f, 5f, 6f, 7f, 8f, 9f
    };

在上述数据中,DataSet-1是创建图形的引用。DataSet-2必须用不同的X值{xAxisTwo}以相同的方式绘制.

在现有实现中,绘制前6个值{dataInput},并参照xAxisOne绘制接下来的6个值{dataIn},如何根据需要绘制。

EN

回答 3

Stack Overflow用户

发布于 2015-08-07 02:21:06

您可以使用LineChart和统一xAxis并忽略每个数据集的"null“点来完成此操作。见下面的代码:

代码语言:javascript
复制
//float[] dataInput = {
//      1f, 2f, 3f, 4f, 5f, 6f, 7f
//};

//values for datainput Dataset1 at your axisone positions
ArrayList<Entry> dataset1 = new ArrayList<Entry>();
dataset1.add(new Entry(1f, 0));
dataset1.add(new Entry(2f, 1));
dataset1.add(new Entry(3f, 2));
dataset1.add(new Entry(4f, 3));
dataset1.add(new Entry(5f, 4));
dataset1.add(new Entry(6f, 5));
dataset1.add(new Entry(7f, 6));

//float[] dataIn = {
//      3f, 4f, 5f, 6f, 7f, 8f, 9f
//};

//values for datainput Dataset2 at your axisone positions
ArrayList<Entry> dataset2 = new ArrayList<Entry>();
dataset2.add(new Entry(3f, 0));
dataset2.add(new Entry(4f, 2));
dataset2.add(new Entry(5f, 4));
dataset2.add(new Entry(6f, 5));
dataset2.add(new Entry(7f, 6));
dataset2.add(new Entry(8f, 7));
dataset2.add(new Entry(9f, 8));

//String[] xAxisOne = new String[] {
//      "0", "1", "2", "3", "4", "5", "6"
//};

///String[] xAxisTwo = new String[] {
///     "0", "2", "4", "5", "6", "8", "9"
///};


// Union from xAxisOne and xAxisTwo
String[] xAxis = new String[] {"0", "1", "2", "3", "4", "5", "6", "8", "9"};


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

LineDataSet lDataSet1 = new LineDataSet(dataset1, "DataSet1");
lDataSet1.setColor(Color.RED);
lDataSet1.setCircleColor(Color.RED);
lines.add(lDataSet1);
lines.add(new LineDataSet(dataset2, "DataSet2"));

LineChart chart = (LineChart) getView().findViewById(R.id.chart);
chart.setData(new LineData(xAxis, lines));

最终结果将是:

看起来dataset1的红线比蓝线多出两个点。如果dataset1只有这两点(位置1和3),如下所示:

代码语言:javascript
复制
ArrayList<Entry> dataset1 = new ArrayList<Entry>();
    dataset1.add(new Entry(2f, 1));
    dataset1.add(new Entry(4f, 3));

其结果是:

票数 12
EN

Stack Overflow用户

发布于 2021-07-22 04:38:41

这需要从第3版开始更新:

对于多行,需要多个数据集。假设您已经创建了两个数据集。

代码语言:javascript
复制
LineDataSet dataSetReported = new LineDataSet(entriesReported, "Reported");
LineDataSet dataSetCalculated = new LineDataSet(entriesCalculated, "Calculated");

您需要一个ILINEDATASET列表来容纳所创建的两个数据集。只需创建一个列表并添加数据集。

代码语言:javascript
复制
List<ILineDataSet> lines = new ArrayList<ILineDataSet>();
lines.add(dataSetReported);
lines.add(dataSetCalculated);

在图表上显示为:

代码语言:javascript
复制
LineData data = new LineData(lines);
chart.setData(data);
chart.invalidate();

有关原始作者的文档,请参阅这里

票数 2
EN

Stack Overflow用户

发布于 2016-08-23 10:46:03

可以使用此行图传递多个数据集

代码语言:javascript
复制
LineChart lineChart1 = (LineChart) findViewById(R.id.chart1);

    ArrayList<Entry> entries = new ArrayList<>();
    entries.add(new Entry(4f, 0));
    entries.add(new Entry(8f, 1));
    entries.add(new Entry(6f, 2));
    entries.add(new Entry(10f, 3));
    entries.add(new Entry(18f, 4));
    entries.add(new Entry(9f, 5));

    ArrayList<Entry> entry = new ArrayList<>();
    entry.add(new Entry(3f, 0));
    entry.add(new Entry(10f, 1));
    entry.add(new Entry(4f, 2));
    entry.add(new Entry(14f, 3));
    entry.add(new Entry(12f, 4));
    entry.add(new Entry(5f, 5));
    ArrayList<LineDataSet> lines = new ArrayList<LineDataSet> ();
    String[] xAxis = new String[] {"1", "2", "3", "4", "5","6"};
    LineDataSet lDataSet1 = new LineDataSet(entries, "DataSet1");
    lDataSet1.setDrawFilled(true);
    lines.add(lDataSet1);

    LineDataSet lDataSet2 = new LineDataSet(entry, "DataSet2");
    lDataSet2.setDrawFilled(true);
    lines.add(lDataSet2);

    lineChart1.setData(new LineData(xAxis, lines));
    lineChart1.animateY(5000);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26873445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档