MPAndroidChart - 第一个和最后一个条未正确呈现

Mat*_*att 11 android mpandroidchart

  1. 在条形图中我创建的第一行和最后一行一直被切成两半(即使我添加了额外的条).这也会导致条形图上方的值不合适.我在一个片段内膨胀这个.

  2. 轴也只增加0.9而不是1.为了解决这个问题,我需要实现AxisValueFormatter接口吗?

图片:

在此输入图像描述

代码:.java

chart = (BarChart) view.findViewById(R.id.chart1);

// Chart settings
chart.setDrawGridBackground(false);
chart.setHighlightFullBarEnabled(true);
chart.setDrawBarShadow(false);
chart.setDrawValueAboveBar(true);
chart.setDescription("");

// Settings for X-Axis
XAxis xAxis = chart.getXAxis();
xAxis.setDrawGridLines(false);
xAxis.setEnabled(true);
xAxis.setDrawLabels(true);
xAxis.setPosition(XAxisPosition.BOTTOM);

// Settings for Y-Axis
YAxis leftAxis = chart.getAxisLeft();
YAxis rightAxis = chart.getAxisRight();

leftAxis.setAxisMinValue(0f);
rightAxis.setAxisMinValue(0f);

BARENTRY = new ArrayList<>();

BarEntryLabels = new ArrayList<String>();

BARENTRY.add(new BarEntry(2f, 1));
BARENTRY.add(new BarEntry(3f, 2));
BARENTRY.add(new BarEntry(4f, 3));
BARENTRY.add(new BarEntry(5f, 4));
BARENTRY.add(new BarEntry(6f, 5));

Bardataset = new BarDataSet(BARENTRY, "Projects");

Bardataset.setColors(ColorTemplate.COLORFUL_COLORS);

BARDATA = new BarData(Bardataset);

chart.setData(BARDATA);
chart.invalidate(); // refresh

chart.animateY(1500);

return view;
Run Code Online (Sandbox Code Playgroud)

TR4*_*oid 26

回答你的问题:

  1. 为了正确显示你的酒吧,你需要适应这些酒吧(不要问我为什么默认情况下不启用它):

    chart.setFitBars(true)
    
    Run Code Online (Sandbox Code Playgroud)

    您可以在BarChartjavadocs中找到更多信息:

    setFitBars(boolean enabled):将条形宽度的一半添加到x轴范围的每一侧,以便允许条形图的条形图完全显示.

    如果你有一个,CombinedChart你可以使用setSpaceMin()setSpaceMax()在轴的两端添加额外的间距:

    XAxis xAxis = chart.getXAxis();
    xAxis.setSpaceMin(barData.getBarWidth() / 2f);
    xAxis.setSpaceMax(barData.getBarWidth() / 2f);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 目前不可能影响轴上呈现的值位置.创建ValueFormatter仅更改显示的文本,而不是标签的实际位置.

  • 当你必须手动设置应该已经默认设置的东西时,我们生活在一个悲伤的世界. (3认同)
  • @Nfear @Prabs我用一个应该与`CombinedChart`s一起使用的解决方案更新了答案. (3认同)
  • 我们如何通过CombinedChart实现这一目标? (2认同)