首页 文章

MPAndroidChart v3.0.0-beta1 LineData构造函数只接受1个参数

提问于
浏览
0

我正在尝试遵循本指南:

https://github.com/PhilJay/MPAndroidChart/wiki/Setting-Data

它有代码行:

LineData data = new LineData(xVals, dataSets);

当我在AndroidStudio中尝试它时,LineData()构造函数只接受1个参数而不是2个参数,如指南中所示 .

任何人都知道如何使用新版本的MPAndroidChart进行初始化?

我的gradle设置中有以下内容:

compile 'com.github.PhilJay:MPAndroidChart:v3.0.0-beta1'

也许我应该降到2.2.5?

更新

是的,我将gradle改为使用2.2.5,现在LineData()构造函数具有多个参数 .

文档需要针对3.0版进行更新 .

2 回答

  • 0

    版本3.0初始化如下:

    LineChart lineChart = new LineChart(context);
    
    lineChart.setMinimumHeight(ToolBox.dpToPixels(context, 300));
    lineChart.setMinimumWidth(ToolBox.getScreenWidth());
    
    ArrayList<Entry> yVals = new ArrayList<>();    
    
    for(int i = 0; i < frigbot.getEquipment().getTemperatures().size(); i++)
        {
            Temperature temperature = frigbot.getEquipment().getTemperatures().get(i);
    
            yVals.add(new Entry(
                    i, temperature.getValue().floatValue()
            ));
        }
    
    LineDataSet dataSet = new LineDataSet(yVals, "graph name");
    dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);
    dataSet.setCubicIntensity(0.2f);
    
    LineData data = new LineData(dataSet);
    
    lineChart.setData(data);
    

    看来我们无法指定自定义水平标签,LineChart本身会自动生成水平和垂直轴标签 .

  • 0

    在这个版本中

    implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
    

    试试吧

    public class MainActivity extends AppCompatActivity {
    
    private LineChart lc;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
    }
    
    public int ran() {
        Random ran = new Random();
        int i = ran.nextInt(199);
    
        return i;
    }
    
    public int ran2() {
        Random ran = new Random();
        int i = ran.nextInt(49);
    
        return i;
    }
    
    public void initData() {
        lc.setExtraOffsets(12,50,24,0); //padding
        setDescription("two lines example");
        lc.animateXY(500, 0);
        setLegend();
        setYAxis();
        setXAxis();
        setChartData();
    }
    
    public void setLegend() {
        Legend legend = lc.getLegend();
        legend.setForm(Legend.LegendForm.LINE);
        legend.setFormSize(20);
        legend.setTextSize(20f);
        legend.setFormLineWidth(1);
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
        legend.setTextColor(Color.BLACK);
    }
    
    public void setDescription(String descriptionStr) {
        Description description = new Description();
        description.setText(descriptionStr);
        WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics outMetrics = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(outMetrics);
        Paint paint = new Paint();
        paint.setTextSize(20);
        float x = outMetrics.widthPixels - Utils.convertDpToPixel(12);
        float y =  Utils.calcTextHeight(paint, descriptionStr) + Utils.convertDpToPixel(12);
        description.setPosition(x, y);
        lc.setDescription(description);
    }
    
    public void setYAxis() {
        final YAxis yAxisLeft = lc.getAxisLeft();
        yAxisLeft.setAxisMaximum(200);
        yAxisLeft.setAxisMinimum(0);
        yAxisLeft.setGranularity(10);
        yAxisLeft.setTextSize(12f);
        yAxisLeft.setTextColor(Color.BLACK);
        yAxisLeft.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return value == yAxisLeft.getAxisMinimum() ? (int) value + "" : (int) value +"";
            }
        });
        lc.getAxisRight().setEnabled(false);
    }
    
    public void setXAxis() {
        XAxis xAxis = lc.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setDrawGridLines(false);
        xAxis.setLabelCount(20);
        xAxis.setTextColor(Color.BLACK);
        xAxis.setTextSize(12f);
        xAxis.setGranularity(1);
        xAxis.setAxisMinimum(0);
        xAxis.setAxisMaximum(100);
    
        xAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return value == 0 ? "example" : (int) value + "";
            }
        });
    }
    
    public void setChartData() {
    
        List<Entry> yVals1 = new ArrayList<>();
    
        for (int i = 0; i < 100; i++) {
            int j = ran();
            yVals1.add(new Entry(1 + i,j));
        }
    
        List<Entry> yVals2 = new ArrayList<>();
    
        for (int i = 0; i < 100; i++) {
            int j = ran2();
            yVals2.add(new Entry(1 + i,j));
        }
    
        LineDataSet lineDataSet1 = new LineDataSet(yVals1, "ex1");
        lineDataSet1.setValueTextSize(20);
        lineDataSet1.setDrawCircleHole(true);
        lineDataSet1.setColor(Color.MAGENTA);
        lineDataSet1.setMode(LineDataSet.Mode.LINEAR);
        lineDataSet1.setDrawCircles(true);
        lineDataSet1.setCubicIntensity(0.15f);
        lineDataSet1.setCircleColor(Color.MAGENTA);
        lineDataSet1.setLineWidth(1);
    
        LineDataSet lineDataSet2 = new LineDataSet(yVals2, "ex2");
        lineDataSet2.setValueTextSize(20);
        lineDataSet2.setDrawCircleHole(true);
        lineDataSet2.setColor(Color.BLUE);
        lineDataSet2.setMode(LineDataSet.Mode.LINEAR);
        lineDataSet2.setDrawCircles(true);
        lineDataSet2.setCubicIntensity(0.15f);
        lineDataSet2.setCircleColor(Color.BLUE);
        lineDataSet2.setLineWidth(1);
    
        .
        .
        .
    
        ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
    
        dataSets.add(lineDataSet1);
        dataSets.add(lineDataSet2);
    
        LineData lineData = new LineData(dataSets);
    
        lc.setVisibleXRangeMaximum(5);
        lc.setScaleXEnabled(true);
        lc.setData(lineData);
    }
    

    并且喜欢这个 .

    Image

相关问题