2015-09-18 54 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