private void plotchart(String s[], float[] f1) {
chart.setBackgroundColor(Color.rgb(63, 81, 181));
chart.setDescription("");
// enable touch gestures
chart.setTouchEnabled(true);
chart.setScaleEnabled(false);
chart.setPinchZoom(false);
chart.setGridBackgroundColor(Color.rgb(30, 46, 141));
chart.setDrawGridBackground(false);
chart.getAxisRight().setEnabled(false);
chart.setDrawMarkerViews(true);
chart.setDragEnabled(true);
chart.setViewPortOffsets(0f, 0f, 0f, 0f);
// chart.setVisibleXRangeMaximum(4);
chart.getLegend().setEnabled(false);
XAxis x = chart.getXAxis();
x.setEnabled(true);
x.setDrawGridLines(false);
x.setPosition(XAxis.XAxisPosition.BOTTOM_INSIDE);
x.setTextColor(Color.rgb(128, 128, 255));
x.isDrawLabelsEnabled();
x.setAxisLineColor(Color.BLACK);
x.setSpaceBetweenLabels(3);
x.setAvoidFirstLastClipping(true);
YAxis y = chart.getAxisLeft();
y.setAxisLineColor(Color.BLACK);
y.setTextColor(Color.BLACK);
y.setEnabled(true);
y.setAxisLineColor(Color.rgb(128, 128, 255));
y.setPosition(YAxis.YAxisLabelPosition.INSIDE_CHART);
y.setDrawGridLines(false);
y.setLabelCount(5,true);
y.setGridColor(Color.rgb(128, 128, 255));
y.setDrawZeroLine(false);
y.setDrawLimitLinesBehindData(true);
y.setDrawGridLines(true);
y.setDrawLimitLinesBehindData(true);
y.setTextColor(Color.rgb(128, 128, 255));
// chart.setExtraOffsets(20f,2f,20f,2f);
ArrayList<com.github.mikephil.charting.data.Entry> entries= new ArrayList<>();
for (int i = 0; i < f1.length; i++) {
// Log.i("f1",f1[i]+"");
entries.add(new com.github.mikephil.charting.data.Entry(f1[i], i));
}
MymarkerView mv =new MymarkerView(this,R.layout.custom_marker_view);
chart.setMarkerView(mv);
LineDataSet dataset = new LineDataSet(entries, "");
dataset.isDrawCirclesEnabled();
dataset.setCircleRadius(0f);
dataset.setDrawFilled(true);
dataset.setFillColor(Color.rgb(0, 0, 0));
dataset.setLineWidth(0.2f);
dataset.setValueTextSize(0f);
dataset.setColor(Color.rgb(0, 0, 0));
// chart.setVisibleXRange(1, 5);
// chart.setVisibleYRangeMaximum(5, YAxis.AxisDependency.LEFT);
// chart.setClickable(true);
chart.invalidate();
ArrayList<String> time = new ArrayList<String>();
for (int i = 0; i < s.length; i++) {
time.add(i, s[i]);
}
LineData data = new LineData(time, dataset);
chart.setData(data);
}
我已使用setLabelCount()命令修复了Y轴值。但是如何修复我的图表中的X轴值的数量。对于上面的代码,我有以下图表形成。Chart1 Chart2 ..这是为plotchart(String [],float [])方法给出的不同参数形成的两个图表。在所有这些图表中,我面临的问题是它没有显示固定数量的x -axis values。它显示了9个值,某处显示了7个值。我面临的另一个问题是我的第一个和最后一个Y轴值隐藏在我的显示中。
答案 0 :(得分:3)
如果我理解你的问题,似乎你想使用 setVisibleXRangeMaximum 方法。
抑制可见的内容
setVisibleXRangeMaximum(float maxXRange):设置应该一次最大可见的区域大小(x轴上的范围)。如果这是例如设置为10,在不滚动的情况下,可以一次查看x轴上不超过10个值。
此方法记录在MPAndroidChart教程的Viewport部分,即linked here。
当然,如果你想修复上面的和 X值的下限,我认为你必须使用 setVisibleXRangeMinimum 。
答案 1 :(得分:2)
setLabelCount()属性也适用于xAxis。
XAxis xAxis = lineChart.getXAxis();
xAxis.setLabelCount(5);
答案 2 :(得分:2)
要将X轴值设置为固定数字(例如10):
float minXRange = 10;
float maxXRange = 10;
chart.setVisibleXRange(minXRange, maxXRange);
如果X轴上的值之间的间隙不变,它也会固定X轴的刻度。
根据您的最大值和最小值,在Y轴上自动设置10%间距的比例:
YAxis y1 = chart.getAxisLeft();
float percent = 10;
y1.setSpaceTop(percent);
y1.setSpaceBottom(percent);
答案 3 :(得分:0)
设置X轴值
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return (int) value + "";
}
});
答案 4 :(得分:0)
您可以使用图书馆的IndexAxisValueFormatter
方法
ArrayList<String> xAxisLabel = new ArrayList<>();
xAxisLabel.add("Mon");
xAxisLabel.add("Tue");
xAxisLabel.add("Wed");
xAxisLabel.add("Thu");
xAxisLabel.add("Fri");
xAxisLabel.add("Sat");
xAxisLabel.add("Sun");
chart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(texts));
当前库版本v3.0.3