单个LineChartView中的多个数据集

时间:2017-11-26 10:42:47

标签: android graph

我开始使用HelloCharts库,发现在我的LineChartView中添加两组数据有些困难。这就是我的做法:

     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_user_details, container, false);
        performanceChart = (LineChartView)rootView.findViewById(R.id.performanceChart);
        performanceChart.setInteractive(false);
        addScoreEntriesToChart();
        addRankEntriesToChart();

        return rootView;
    }


    private void addScoreEntriesToChart() {
        List<PointValue> values = new ArrayList<PointValue>();
        ArrayList<Double> latestScores = currentPlayer.getLatestScores();
        for(int i = 0; i < latestScores.size(); i++){
            values.add(new PointValue(i+1, Float.valueOf(String.valueOf(latestScores.get(i)))));
        }
        performanceChart.setLineChartData(getLineSettings(values, Color.parseColor("#0036D9")));

    }

    private void addRankEntriesToChart() {
        List<PointValue> values = new ArrayList<PointValue>();
        ArrayList<Integer> latestRanks = currentPlayer.getLatestRanks();
        for(int i = 0; i < latestRanks.size(); i++){
            values.add(new PointValue(i+1, Float.valueOf(latestRanks.get(i))));
        }
        performanceChart.setLineChartData(getLineSettings(values, Color.parseColor("#84BE67")));
    }

    @NonNull
    private LineChartData getLineSettings(List<PointValue> values, int lineColor) {
        Line line = new Line(values).setColor(lineColor).setCubic(true);
        line.setStrokeWidth(2);
        line.setPointRadius(0);
        List<Line> lines = new ArrayList<Line>();
        lines.add(line);

        LineChartData data = new LineChartData();
        data.setLines(lines);
        return data;
    }

显然,我做错了,因为我最终只看到LineChartView上的一行(RankEntries - 添加的最后一行)。 尝试谷歌这个问题没有得到答案。 任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

向图表添加2个数据时。您必须在数据中添加两行,然后将该数据设置为图表:

List<PointValue> values = new ArrayList<PointValue>();
    ArrayList<Double> latestScores = currentPlayer.getLatestScores();
    for(int i = 0; i < latestScores.size(); i++){
        values.add(new PointValue(i+1, Float.valueOf(String.valueOf(latestScores.get(i)))));
    }

 List<PointValue> values2 = new ArrayList<PointValue>();
    ArrayList<Integer> latestRanks = currentPlayer.getLatestRanks();
    for(int i = 0; i < latestRanks.size(); i++){
        values2.add(new PointValue(i+1, Float.valueOf(latestRanks.get(i))));
    }

之后:

Line line = new Line(values).setColor(Color.RED);
Line line2 = new Line(values2).setColor(Color.BLUE);
List<Line> lines = new ArrayList<Line>();
lines.add(line);
lines.add(line2);