gpt4 book ai didi

android - 缩放 X 轴 MPAndroidChart

转载 作者:行者123 更新时间:2023-11-29 23:46:15 27 4
gpt4 key购买 nike

我有一个简单的折线图。我不知道如何使 x 轴值像 y 轴值一样正确缩放。无论我输入到图表中的值如何,x 值之间的距离始终是等距的。

通过添加整个折线图代码进行编辑。

    setData();

Legend l = mChart.getLegend();


l.setForm(Legend.LegendForm.LINE);

mChart.setDragEnabled(true);
mChart.setScaleEnabled(true);

YAxis leftAxis = mChart.getAxisLeft();
leftAxis.removeAllLimitLines();

leftAxis.enableGridDashedLine(10f, 10f, 0f);
leftAxis.setDrawZeroLine(false);


leftAxis.setDrawLimitLinesBehindData(true);

mChart.getAxisRight().setEnabled(false);

mChart.animateX(2000, Easing.EasingOption.EaseInOutQuart);


mChart.invalidate();

return view;
}

private ArrayList<String> setXAxisValues(){
ArrayList<String> xVals = new ArrayList<String>();
xVals.add(String.valueOf(x1));

xVals.add(String.valueOf(x2));
xVals.add(String.valueOf(x3));
return xVals;
}

private ArrayList<Entry> setYAxisValues(){
ArrayList<Entry> yVals = new ArrayList<Entry>();
yVals.add(new Entry(0, y1));
yVals.add(new Entry(1, y2));
yVals.add(new Entry(2, y3));

return yVals;
}

private void setData() {
ArrayList<String> xVals = setXAxisValues();

ArrayList<Entry> yVals = setYAxisValues();

LineDataSet set1;

set1 = new LineDataSet(yVals, yTitle);

set1.setFillAlpha(110);

ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
dataSets.add(set1); // add the datasets
LineData data = new LineData(dataSets);


String[] values = new String[] {String.valueOf(x1), String.valueOf(x2), String.valueOf(x3)};
XAxis xAxis = mChart.getXAxis();
xAxis.setGranularity(1f);
mChart.setScaleEnabled(true);

xAxis.setValueFormatter(new MyXAxisValueFormatted(values));

mChart.getLegend().setTextColor(Color.WHITE);
mChart.getXAxis().setTextColor(Color.WHITE);
mChart.getAxisLeft().setTextColor(Color.WHITE);
mChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
mChart.setData(data);

}

这是可能是问题根源的 XAxisValueFormatted 类:

public class MyXAxisValueFormatted implements  IAxisValueFormatter{
private String[] mValues;
public MyXAxisValueFormatted(String[] values){
this.mValues = values;
}

@Override
public String getFormattedValue(float value, AxisBase axis) {
return mValues[(int) value];
}
}

enter image description here

最佳答案

这是解决方案,但首先要解释一下:

您的 x 轴值不知道“3”、“9”和“100”,因为它们都是字符串。但它从这里知道 0 1 和 2(x 值):

 yVals.add(new Entry(0, y1));
yVals.add(new Entry(1, y2));
yVals.add(new Entry(2, y3));

并且这些值具有相同的间隔,这就是为什么您的格式化程序在字符串 3、9 和 100 之间提供相同的分隔(空格)。

解决方案非常简单,忘记(删除类)值IAxisValueFormatter,只需像这样初始化您的Entry-s:

    yVals.add(new Entry(3, 2));
yVals.add(new Entry(9, 1));
yVals.add(new Entry(100f, -90f));

一切都会自动完成,这里是我从你的代码和值中得到的:

enter image description here

关于android - 缩放 X 轴 MPAndroidChart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51359956/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com