MPAndroidChart-为什么行不显示?

时间:2019-09-30 19:11:01

标签: java android mpandroidchart

我想创建一个带有时间表的小型应用程序。但是由于某种原因,当我在图表中添加很多点时,它几乎不会出现,尽管只有很少的点,一切正常。

   void f() {
 ArrayList<Entry> values = new ArrayList<>();

    for (int i = x1, index = 0, j = y; i < x2; ++i, ++index)
    {
        float waveLength = (float) calib_a * i +  (float) calib_b;
        int pixel = rotated.getPixel(i, j);
        float I = (Color.red(pixel) + Color.blue(pixel) + Color.green(pixel)) / 765.0f;
        values.add(new Entry((int) waveLength, I));
        Log.d("[SPECTRAl]", " WAVE:  " +waveLength + "  I: " + I);
       // i += 4;
    }



    LineDataSet lineValues = new LineDataSet(values, "");

    lineValues.setColor(Color.BLACK);
    lineValues.setLineWidth(2f);
    LineData line = new LineData(lineValues);
    chart.getXAxis().setGranularity(100f);
    chart.setData(line);
    chart.invalidate();
}

但可以使用:

   void f() {
 ArrayList<Entry> values = new ArrayList<>();

 values.add(new Entry(100, 6));
 values.add(new Entry(200, 3));
 values.add(new Entry(300, 2));
 values.add(new Entry(400, 4));



    LineDataSet lineValues = new LineDataSet(values, "");

    lineValues.setColor(Color.BLACK);
    lineValues.setLineWidth(2f);
    LineData line = new LineData(lineValues);
    chart.getXAxis().setGranularity(100f);
    chart.setData(line);
    chart.invalidate();
}

2 个答案:

答案 0 :(得分:0)

以下代码创建问题:

 for (int i = x1, index = 0, j = y; i < x2; ++i, ++index)
{
    float waveLength = (float) calib_a * i +  (float) calib_b;
    int pixel = rotated.getPixel(i, j);
    float I = (Color.red(pixel) + Color.blue(pixel) + Color.green(pixel)) / 765.0f;
    values.add(new Entry((int) waveLength, I));
    Log.d("[SPECTRAl]", " WAVE:  " +waveLength + "  I: " + I);
   // i += 4;
}

首先,您需要将int的类型转换为float转换为以下行,因为此库将float值作为输入:

values.add(new Entry((float) waveLength, I)); 

相反,您可以删除投射,因为您的波长已经是浮点数了:

values.add(new Entry(waveLength, I));

第二:values.add(new Entry(100, 6));这一行的工作方式是values.add(new Entry(x, y));

因此,您需要为图表提供适当的x值和相应的y值,以生成图形。如果x在n处的值(此处n是入口索引)在任何时候都等于或小于x在n-1处的值,则x值应按正确的顺序创建图表。图表。 因此,按照我描述的方法修复上面的for循环代码将可以正常工作。祝你好运:)

答案 1 :(得分:0)

对于任何人,请确保条目按 X 升序排序