永恒V之星 2022-01-27 15:32 采纳率: 33.3%
浏览 36
已结题

Adnroid MPAndroidChart 折线图属性怎样设置?

如图左侧为效果图,红框部分为 折线图左右留有空白,文字和XY轴间距,value值和折线原点间距。请教下需要怎样设置才能达到设计图效果

img

这里是图表初始化函数。


```java
 private void initCharts(LineChart mChart) {
        mChart.setNoDataText("暂无数据");
        XAxis xAxis;
        YAxis leftAxis;
        YAxis rightAxis;
        Legend l;
        mChart.setClickable(false);
        mChart.setDoubleTapToZoomEnabled(false);
        mChart.setPinchZoom(true);
        mChart.setDescription(null);
        mChart.setOnChartValueSelectedListener(null);
        mChart.setDrawGridBackground(false);
        xAxis = mChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setDrawGridLines(false);
        xAxis.setGridColor(Color.GRAY);
        xAxis.setGranularity(1f);
        xAxis.setTextColor(Color.BLACK);
        xAxis.setTextSize(12f);


        leftAxis = mChart.getAxisLeft();
        leftAxis.setDrawGridLines(true);
        leftAxis.setAxisLineColor(Color.GRAY);
        leftAxis.setTextColor(Color.BLACK);
        leftAxis.setSpaceTop(15f);
        leftAxis.setGridColor(Color.GRAY);
        leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
        leftAxis.setTextSize(12f);
        rightAxis = mChart.getAxisRight();
        rightAxis.setEnabled(false);

        l = mChart.getLegend();
        l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
        l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
        l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        l.setDrawInside(false);
        l.setForm(Legend.LegendForm.SQUARE);
        l.setFormSize(9f);
        l.setTextSize(12f);
        l.setTextColor(Color.GRAY);
        l.setXEntrySpace(4f);
        l.setEnabled(false);
    }

这里是设置折线图具体数据的函数


```java
  private void setLineChartData(List<String> dateList, float maxY, List<Entry> entryList, List<Integer> colors) {
        Log.e(TAG, "maxY: " + maxY + " list.size: " + entryList.size());
        lineChart.getAxisLeft().setAxisMaximum(maxY);
        XAxis xAxis = lineChart.getXAxis();
        xAxis.setLabelCount(entryList.size());
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setDrawGridLines(false);
        xAxis.setGranularity(1f);
        
        setX(lineChart, dateList);
        LineDataSet set = new LineDataSet(entryList, "");

        set.setAxisDependency(YAxis.AxisDependency.LEFT);
        set.setColor(Color.parseColor("#258AFF"));
        set.setLineWidth(2f);
        set.setCircleRadius(4f);
        set.setFillAlpha(65);
        Drawable drawable = ContextCompat.getDrawable(this, R.drawable.shape_line_chart_bg);
        set.setFillDrawable(drawable);
        set.setDrawFilled(true);
        set.setHighLightColor(Color.parseColor("#258AFF"));
        set.setDrawCircleHole(false);
        set.setValueTextSize(12f);
        set.setCircleColors(colors);
        set.setValueTextColors(colors);
        // set.setValueTextColor(Color.parseColor("#258AFF"));
        set.setValueFormatter(new IndexAxisValueFormatter() {
            @Override
            public String getFormattedValue(float val) {
                return String.valueOf((int) val);
            }
        });

        LineData data = new LineData(set);
        data.setDrawValues(true);

        lineChart.setData(data);
        lineChart.getData().notifyDataChanged();
        lineChart.notifyDataSetChanged();
        lineChart.invalidate();
    }



```java
 private void setX(LineChart mChart, final List<String> date) {
//这里是设置 X轴参数属性
        ValueFormatter xAxisFormatter = new IndexAxisValueFormatter(date) {
            @Override
            public String getFormattedValue(float value) {
                int index = (int) value;
                if (index >= 0 && index < date.size()) {
                    return date.get(index);
                    //  return date.get(index).length() >= 10 ? date.get(index).substring(5, 10)  : "";
                }
                return "";
            }

        };
        XAxis xAxis = mChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setDrawGridLines(false);
        xAxis.setGranularity(1f); // only intervals of 1 day
        xAxis.setLabelCount(5);
        xAxis.setValueFormatter(xAxisFormatter);
    }


```

  • 写回答

1条回答 默认 最新

  • 不会写代码的猴子 Android领域优质创作者 2022-01-27 18:18
    关注

    xAxis.setYOffset(100);;设置X轴纵向偏移
    yAxisLeft.setXOffset(100);Y轴左侧横向偏移
    yAxisRight.setXOffset(100);Y轴右侧横向偏移

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月10日
  • 创建了问题 1月27日

悬赏问题

  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并