android - 用mpandroid绘制折线图

标签 android mpandroidchart

任何人都可以使用 mpandroid 绘制这些数据吗?

 double[] y2={4151.07,  3375.21,    3354.56,    3333.87,    3313.15, 3146.99,   123.67, 84.89,  43.9,   0.34,   0.0};
        double[] x2={ 0.0,  1606.64,    1643.04,    1679.05,    1534.98,    1458.7, 1377.66,    1291.13,    1260.91, 1200.2, 547.3};

我写了一段代码,在我的安卓设备上只绘制了数组的前五个元素! [我的意思是从 y2[0] 到 y2[5] 和从 x2[0] 到 x2[5]) 谁能告诉我为什么? 这是我的代码:

for(int i=0;i<5;i++){
            float y=(float)y2[i] ;
            float x=(float)x2[i] ;
            yVals.add(new Entry( x, y));
        }
        LineDataSet sety=new LineDataSet(yVals,"yData");
        LineData data = new LineData(sety);
        lineChart.setData(data);

           XAxis xAxis = lineChart.getXAxis();
           lineChart.getAxisRight().setAxisMaxValue(4500);
           lineChart.getAxisLeft().setAxisMaxValue(4500);
           lineChart.getAxisRight().setAxisMinValue(-20);
           lineChart.getAxisLeft().setAxisMinValue(-20);

           xAxis.setAxisMaxValue(3500);
           xAxis.setAxisMinValue(-20);
           lineChart.animateX(3000);
           lineChart.setDragEnabled(true);
           lineChart.setScaleEnabled(true);

你认为我应该缩放它以查看其他数据吗?

最佳答案

您在 for 循环中仅添加了 5 个 Entry 对象。显然您的图表将只显示 5 个条目。

编辑:

    double[] y2 = {4151.07, 3375.21, 3354.56, 3333.87, 3313.15, 3146.99, 123.67, 84.89, 43.9, 0.34, 0.0};
    double[] x2 = {0.0, 1606.64, 1643.04, 1679.05, 1534.98, 1458.7, 1377.66, 1291.13, 1260.91, 1200.2, 547.3};

    ArrayList<Entry> yVals1 = new ArrayList<>();
    for (int i = 0; i < y2.length; i++) {
        yVals1.add(new Entry(i, (float) y2[i]));
    }

    LineDataSet sety = new LineDataSet(yVals1, "Dataset 1");
    sety.setValueFormatter(new LineChartYValueFormatter());
    sety.setColor(ColorTemplate.MATERIAL_COLORS[2]);
    ArrayList<ILineDataSet> dataSets = new ArrayList<>();
    dataSets.add(sety);

    LineData data = new LineData(dataSets);
    lineChart.setData(data);

    XAxis xAxis = lineChart.getXAxis();
    xAxis.setAxisMinValue(0);
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setValueFormatter(new LineChartXAxisValueFormatter(x2));
    xAxis.setLabelCount(10);
    xAxis.setLabelRotationAngle(45);

    lineChart.animateX(3000);
    lineChart.setDragEnabled(true);
    lineChart.setScaleEnabled(true);

    lineChart.highlightValue(null);
    lineChart.invalidate();

LineChartXAxisValueFormatter 类

public class LineChartXAxisValueFormatter implements AxisValueFormatter {

    double[] mXLabels;

    public LineChartXAxisValueFormatter(double[] xLabels) {
        mXLabels = xLabels;
    }

    @Override
    public String getFormattedValue(float value, AxisBase axis) {

        int i=(int)value;
        return new DecimalFormat("#0.00").format(mXLabels[i]);
    }

    @Override
    public int getDecimalDigits() {
        return 0;
    }
}

LineChartYValueFormatter 类

public class LineChartYValueFormatter implements ValueFormatter {
    public LineChartYValueFormatter() {
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return new DecimalFormat("#0.00").format(value);
    }
}

See the result

关于android - 用mpandroid绘制折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38389436/

相关文章:

android - MPAndroidChart 中的可滚动折线图

android - CursorLoader结果选择

android - 是否有任何开发模式可以替代网络请求的 IntentService?

android - 如何在数据集为空的情况下强制不显示数据标签

android - 使用 MPAndroidChart 绘制时间序列图

android - mpAndroidChart java.lang.NegativeArraySizeException : -46 for Kotlin

java - 检查 Gprs 连接

Android ViewPager 的 onPageScrollStateChanged 永远不会被调用

java - Android Studio 监听器导致错误

ios - 在水平条形图中隐藏底部 x 轴?