首页 文章

当有太多条目时,MPAndroidChart图表会显示X轴上的缩放

提问于
浏览
0

我正在使用MPAndroidChart,当有很多条目(我的设备上超过30个)时,图表似乎有一个自动缩放,因为X轴在开始时只显示偶数值 .

Chart with zoom on X axis

然后,当在图表上(在屏幕上或通过代码 chart.zoom(2, 0, 0, 0) )进行缩放时,将显示x轴上的所有值 .

由于导致自动缩放的条目数似乎取决于设备屏幕大小(因此以编程方式进行缩放似乎不是一个好选项),有没有办法强制图表不进行此缩放?

我已经尝试了 chart.getXAxis().setLabelCount(entries.size(), true) ,但是没有用 .

这是我一直在使用的示例代码:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              tools:context="chart.test.MainActivity">

    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/chart"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LineChart chart = findViewById(R.id.chart);

        List<Entry> entries = new ArrayList<>();

        for (int i = 0; i <= 60; i++) {
            entries.add(new Entry(i, i));
        }

        LineDataSet dataSet = new LineDataSet(entries, "Label");
        LineData lineData = new LineData(dataSet);

        chart.setData(lineData);
        chart.getXAxis().setLabelCount(entries.size());
        chart.invalidate();
    }
}

谢谢 .

1 回答

  • 0

    要修复图表上的条目数,就好像你只想在图表上显示10个值,然后让我们说50个值,那么你应该在你的代码中添加以下行:

    chart.setVisibleXRangeMaximum(10);
    

    您可以根据自己的要求更改号码 . 这将在加载时仅向用户显示10个值,以查看用户必须滚动图表的下一个值 .

    同时从代码中删除以下行:

    chart.getXAxis().setLabelCount(entries.size());
    

    而且你也不需要以下行:

    chart.invalidate();
    

    因为默认情况下调用setData()方法时会调用invalidate() . 只有在将数据设置到图表后对轴或视口或数据集实施某些更改后,才需要调用它 .

相关问题