如图左侧为效果图,红框部分为 折线图左右留有空白,文字和XY轴间距,value值和折线原点间距。请教下需要怎样设置才能达到设计图效果
这里是图表初始化函数。
```java
private void initCharts(LineChart mChart) {
mChart.setNoDataText("暂无数据");
XAxis xAxis;
YAxis leftAxis;
YAxis rightAxis;
Legend l;
mChart.setClickable(false);
mChart.setDoubleTapToZoomEnabled(false);
mChart.setPinchZoom(true);
mChart.setDescription(null);
mChart.setOnChartValueSelectedListener(null);
mChart.setDrawGridBackground(false);
xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setGridColor(Color.GRAY);
xAxis.setGranularity(1f);
xAxis.setTextColor(Color.BLACK);
xAxis.setTextSize(12f);
leftAxis = mChart.getAxisLeft();
leftAxis.setDrawGridLines(true);
leftAxis.setAxisLineColor(Color.GRAY);
leftAxis.setTextColor(Color.BLACK);
leftAxis.setSpaceTop(15f);
leftAxis.setGridColor(Color.GRAY);
leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
leftAxis.setTextSize(12f);
rightAxis = mChart.getAxisRight();
rightAxis.setEnabled(false);
l = mChart.getLegend();
l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
l.setDrawInside(false);
l.setForm(Legend.LegendForm.SQUARE);
l.setFormSize(9f);
l.setTextSize(12f);
l.setTextColor(Color.GRAY);
l.setXEntrySpace(4f);
l.setEnabled(false);
}
这里是设置折线图具体数据的函数
```java
private void setLineChartData(List<String> dateList, float maxY, List<Entry> entryList, List<Integer> colors) {
Log.e(TAG, "maxY: " + maxY + " list.size: " + entryList.size());
lineChart.getAxisLeft().setAxisMaximum(maxY);
XAxis xAxis = lineChart.getXAxis();
xAxis.setLabelCount(entryList.size());
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(1f);
setX(lineChart, dateList);
LineDataSet set = new LineDataSet(entryList, "");
set.setAxisDependency(YAxis.AxisDependency.LEFT);
set.setColor(Color.parseColor("#258AFF"));
set.setLineWidth(2f);
set.setCircleRadius(4f);
set.setFillAlpha(65);
Drawable drawable = ContextCompat.getDrawable(this, R.drawable.shape_line_chart_bg);
set.setFillDrawable(drawable);
set.setDrawFilled(true);
set.setHighLightColor(Color.parseColor("#258AFF"));
set.setDrawCircleHole(false);
set.setValueTextSize(12f);
set.setCircleColors(colors);
set.setValueTextColors(colors);
// set.setValueTextColor(Color.parseColor("#258AFF"));
set.setValueFormatter(new IndexAxisValueFormatter() {
@Override
public String getFormattedValue(float val) {
return String.valueOf((int) val);
}
});
LineData data = new LineData(set);
data.setDrawValues(true);
lineChart.setData(data);
lineChart.getData().notifyDataChanged();
lineChart.notifyDataSetChanged();
lineChart.invalidate();
}
```java
private void setX(LineChart mChart, final List<String> date) {
//这里是设置 X轴参数属性
ValueFormatter xAxisFormatter = new IndexAxisValueFormatter(date) {
@Override
public String getFormattedValue(float value) {
int index = (int) value;
if (index >= 0 && index < date.size()) {
return date.get(index);
// return date.get(index).length() >= 10 ? date.get(index).substring(5, 10) : "";
}
return "";
}
};
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(1f); // only intervals of 1 day
xAxis.setLabelCount(5);
xAxis.setValueFormatter(xAxisFormatter);
}
```