mpandroidchart x轴值重复
mpandroidchart xaxisvalues are repeating
[![在此处输入图片描述][1]][1]如果图表中的可用值较少,mpandroidchart 中的 x 轴值会重复
我试过这样做,但如果图表有一个值,它就会重复
lineChart.getAxisRight().setEnabled(false);
XAxis xAxis = lineChart.getXAxis();
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
lineChart.getXAxis().setLabelCount(yvalues.size()-1,true);
System.out.println("xaxis"+yvalues.size());
xAxis.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
System.out.println("xaxis values"+value);
return yvalues.get(Math.min(Math.max((int)
value, 0), yvalues.size()-1)).xAxisValue;
}
});
setData(yvalues);
Setdata 值函数从我设置我从服务器动态获取的所有条目的位置开始
private void setData(List<Data> dataList) {
if(lineChart.getData() != null){
System.out.println("linechart"+lineChart.getData());
lineChart.clearValues();
}
lineChart.getDescription().setEnabled(false);
ArrayList<Entry> values = new ArrayList<>();
List<Integer> colors = new ArrayList<>();
int green = Color.rgb(110, 190, 102);
int red = Color.rgb(211, 74, 88);
for (int i = 0; i < dataList.size(); i++) {
Data d = dataList.get(i);
Entry entry = new Entry(d.xValue, d.yValue);
values.add(entry);
// specific colors
if (d.yValue >= 0)
colors.add(red);
else
colors.add(green);
}
LineDataSet set;
if (lineChart.getData() != null &&
lineChart.getData().getDataSetCount() > 0) {
set = (LineDataSet) lineChart.getData().getDataSetByIndex(0);
set.setValues(values);
lineChart.getData().notifyDataChanged();
lineChart.notifyDataSetChanged();
} else {
set = new LineDataSet(values, "Values");
set.setColors(colors);
set.setValueTextColors(colors);
lineChart.getLegend().setEnabled(false);
LineData data = new LineData(set);
data.setValueTextSize(13f);
data.setValueTypeface(tfRegular);
data.setValueFormatter(new Formatter());
lineChart.setData(data);
lineChart.notifyDataSetChanged();
lineChart.invalidate();
}
}
我的格式化程序 class 转换我的字符串值并在轴上显示它,因为我想显示日期
private class Formatter extends ValueFormatter
{
private final DecimalFormat mFormat;
Formatter() {
mFormat = new DecimalFormat("######.0");
}
@Override
public String getFormattedValue(float value) {
return mFormat.format(value);
}
}
请使用
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
另请参阅此 link...
[![在此处输入图片描述][1]][1]如果图表中的可用值较少,mpandroidchart 中的 x 轴值会重复
我试过这样做,但如果图表有一个值,它就会重复
lineChart.getAxisRight().setEnabled(false);
XAxis xAxis = lineChart.getXAxis();
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
lineChart.getXAxis().setLabelCount(yvalues.size()-1,true);
System.out.println("xaxis"+yvalues.size());
xAxis.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
System.out.println("xaxis values"+value);
return yvalues.get(Math.min(Math.max((int)
value, 0), yvalues.size()-1)).xAxisValue;
}
});
setData(yvalues);
Setdata 值函数从我设置我从服务器动态获取的所有条目的位置开始
private void setData(List<Data> dataList) {
if(lineChart.getData() != null){
System.out.println("linechart"+lineChart.getData());
lineChart.clearValues();
}
lineChart.getDescription().setEnabled(false);
ArrayList<Entry> values = new ArrayList<>();
List<Integer> colors = new ArrayList<>();
int green = Color.rgb(110, 190, 102);
int red = Color.rgb(211, 74, 88);
for (int i = 0; i < dataList.size(); i++) {
Data d = dataList.get(i);
Entry entry = new Entry(d.xValue, d.yValue);
values.add(entry);
// specific colors
if (d.yValue >= 0)
colors.add(red);
else
colors.add(green);
}
LineDataSet set;
if (lineChart.getData() != null &&
lineChart.getData().getDataSetCount() > 0) {
set = (LineDataSet) lineChart.getData().getDataSetByIndex(0);
set.setValues(values);
lineChart.getData().notifyDataChanged();
lineChart.notifyDataSetChanged();
} else {
set = new LineDataSet(values, "Values");
set.setColors(colors);
set.setValueTextColors(colors);
lineChart.getLegend().setEnabled(false);
LineData data = new LineData(set);
data.setValueTextSize(13f);
data.setValueTypeface(tfRegular);
data.setValueFormatter(new Formatter());
lineChart.setData(data);
lineChart.notifyDataSetChanged();
lineChart.invalidate();
}
}
我的格式化程序 class 转换我的字符串值并在轴上显示它,因为我想显示日期
private class Formatter extends ValueFormatter
{
private final DecimalFormat mFormat;
Formatter() {
mFormat = new DecimalFormat("######.0");
}
@Override
public String getFormattedValue(float value) {
return mFormat.format(value);
}
}
请使用
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
另请参阅此 link...