1

我正在尝试制作一个好看的折线图 iwht MPAndroidChart,但我遇到了一些问题。这是我现在得到的 在此处输入图像描述

这是它的代码

public void createGraph() {
    chart.setTouchEnabled(false);
    chart.setDragEnabled(false);
    chart.setHighlightEnabled(false);
    chart.setDrawYLabels(true);
    chart.setDrawXLabels(true);
    chart.animateXY(2000, 2000);
    chart.setDrawBorder(true);
    chart.setPadding(30, 30, 30, 30);
    setData();
}

private void setData() {
    String[] stages = { "Stage1", "Stage2", "Stage3", "Stage4" };
    ArrayList<Entry> yVals = new ArrayList<Entry>();
    yVals.add(new Entry(0.0f, 0));
    yVals.add(new Entry(Float.parseFloat(nicotineTwo), 1));
    yVals.add(new Entry(Float.parseFloat(nicotineThree), 2));
    yVals.add(new Entry(Float.parseFloat(nicotineFour), 3));
    LineDataSet set1 = new LineDataSet(yVals, "");
    set1.setColor(Color.BLACK);
    set1.setCircleColor(Color.BLACK);
    set1.setLineWidth(1f);
    ArrayList<LineDataSet> dataSets = new ArrayList<LineDataSet>();
    dataSets.add(set1);
    LineData data = new LineData(stages, dataSets);
    chart.setData(data);
}

我需要的是:

  1. 去掉左下角的那个黑框
  2. 使文本“降低尼古丁”更大一些且更具可读性
  3. 加点padding什么的,因为右上角的Stage4不在屏幕外
  4. 使沿线的数字更大,如果可能的话,使用百分比“25.0%”
  5. 隐藏该行的第一个值,因为它始终为 0
  6. 在 Y 刻度上显示所有刻度值,从 0 到 100(现在没有 100)

请帮帮我,这个图书馆真的让我很困惑

4

2 回答 2

3
  1. “黑匣子”就是传说。调用chart.getLegend().setEnabled(false)禁用它。
  2. 那就是“描述文本”。调用chart.setDescriptionTextSize(...)以自定义其大小。
  3. 有两种可能的解决方案。您可以通过 .xml 添加更多保证金,或致电

    XAxis x = chart.getXAxis();
    x.setAvoidFirstLastClipping(true);
    
  4. 要增加值文本大小,请调用data.setValueTextSize(...). 对于图表内的自定义格式值,请查看ValueFormatter库提供的接口。
  5. 也可以用ValueFormatter接口解决。例如if(value == 0) return "";
  6. 现在,y 轴上的值范围由图表自动确定。yAxis.setAxisMaxValue(...)您可以通过调用&设置固定范围的值yAxis.setAxisMinValue(...)

这是完整的文档

于 2015-02-15T17:23:42.480 回答
0

chart.setDescriptionTextSize(...)范围有限(7f 到 14f)。也许这就是为什么您没有注意到任何变化的原因。

Javadoc

以像素为单位设置描述文本的大小,最小 7f,最大 14f

于 2015-02-18T16:27:32.657 回答