2015-09-18 36 views
1

我正在使用MPChart绘制线条图。使用X轴和Y轴打印的Android MPChart问题

下面是我用来绘制图表的代码。该图表正常工作。我唯一的问题是我需要在图形的左侧和底部打印(即)L形状的x和y轴。我希望将X值(传递给LineData的值)打印在图的底部(x轴),并且我想为y轴设置最小值和最大值,并且应该根据此最小值和最小值来调整图形最大值。

如果我取消注释Line 1部分并传递true /删除Line 1部分。该图形变得格格不入。有人请帮助我。

由于

heartXVals是包含在heartYVals条目数据中的对应心脏速率值的日期ArrayList中。

heartDataSet = LineDataSet(heartYVals,"") 

     heartDataSet!!.setLineWidth(1.75f) 
     heartDataSet!!.setCircleSize(3f); 
     heartDataSet!!.setColor(Color.WHITE); 
     heartDataSet!!.setCircleColor(Color.WHITE); 
     heartDataSet!!.setHighLightColor(Color.WHITE); 
     heartDataSet!!.setDrawValues(false); 

     val dataSets:ArrayList<LineDataSet> = ArrayList(); 
     dataSets.add(heartDataSet!!); 

     val data:LineData = LineData(heartXVals,dataSets) 

     val lineChart:LineChart = view.findViewById(R.id.heartChart) as LineChart 

     lineChart.setDescription("") 
     lineChart.setNoDataTextDescription("You need to provide data for the chart.") 
     lineChart.setDrawGridBackground(false) 
     lineChart.setTouchEnabled(false) 
     lineChart.setDragEnabled(false) 
     lineChart.setScaleEnabled(true) 

     // if disabled, scaling can be done on x- and y-axis separately 
     lineChart.setPinchZoom(false) 

     //lineChart.setBackgroundColor(color) 

     // set custom chart offsets (automatic offset calculation is hereby disabled) 
     lineChart.setViewPortOffsets(10f, 0f, 10f, 0f) 


     // add data 
     lineChart.setData(data) 

     // get the legend (only possible after setting data) 
     val l = lineChart.getLegend() 
     l.setEnabled(false) 

     lineChart.getAxisLeft().setEnabled(false) -- Line 2 

     /* val leftAxis:YAxis = lineChart.getAxisLeft(); ---Line 1 
     leftAxis.removeAllLimitLines() 
     leftAxis.setAxisMaxValue(220f); 
     leftAxis.setAxisMinValue(40f); 
     leftAxis.setStartAtZero(false); 
     leftAxis.enableGridDashedLine(0f, 0f, 0f);*/ 


     lineChart.getAxisRight().setEnabled(false) 

     lineChart.getXAxis().setEnabled(false) 
     //lineChart.getY.setEnabled(true) 

     // animate calls invalidate()... 
     lineChart.animateX(2500) 

     lineChart.invalidate() 

回答

0

添加以下行

XAxis xAxis = lineChart.getXAxis(); 
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); // to set xAxis in Bottom 

    YAxis leftAxis = lineChart.getAxisLeft(); 
    leftAxis.removeAllLimitLines(); 
    leftAxis.setAxisMaxValue(220f); // to set maximum yAxis 
    leftAxis.setAxisMinValue(0f); // to set minimum yAxis 
    leftAxis.setStartAtZero(false); 
    leftAxis.enableGridDashedLine(10f, 10f, 0f); 

    leftAxis.setDrawLimitLinesBehindData(true); 

    lineChart.getAxisRight().setEnabled(false); 

    lineChart.animateX(2500, Easing.EasingOption.EaseInOutQuart); 

enter image description here

3
// - X Axis 
XAxis xAxis = mChart.getXAxis(); 
xAxis.setTypeface(tf); 
xAxis.setTextSize(12f); 
xAxis.setPosition(XAxisPosition.BOTTOM); 
xAxis.setTextColor(ColorTemplate.getHoloBlue()); 
xAxis.setEnabled(true); 
xAxis.disableGridDashedLine(); 
xAxis.setSpaceBetweenLabels(5); 
xAxis.setDrawGridLines(false); 
xAxis.setAvoidFirstLastClipping(true); 

// - Y Axis 
YAxis leftAxis = mChart.getAxisLeft(); 
leftAxis.removeAllLimitLines(); 
leftAxis.setTypeface(tf); 
leftAxis.setPosition(YAxisLabelPosition.OUTSIDE_CHART); 
leftAxis.setTextColor(ColorTemplate.getHoloBlue()); 
leftAxis.setAxisMaxValue(1000f); 
leftAxis.setAxisMinValue(0f); // to set minimum yAxis 
leftAxis.setStartAtZero(false); 
leftAxis.enableGridDashedLine(10f, 10f, 0f); 
leftAxis.setDrawLimitLinesBehindData(true); 
leftAxis.setDrawGridLines(true); 
mChart.getAxisRight().setEnabled(false); 


//----------------- 
xAxis.setPosition(XAxisPosition.BOTTOM); --- x Axis 
leftAxis.setPosition(YAxisLabelPosition.OUTSIDE_CHART); --- x Axis