如何突出MP android Line Chart中的特定数据点?

时间:2018-01-03 12:03:56

标签: android highlight mpandroidchart

我有一个包含数据点的列表视图。现在,我想要的是当我点击列表视图中的特定数据点时突出显示图表上的数据点。我想增加数据点圆的大小并改变它的颜色。

  mChart.removeAllViews();
    mChart.setOnChartGestureListener(this);
    mChart.setOnChartValueSelectedListener(this);
    mChart.setDrawGridBackground(false);
    setData();
    mChart.setTouchEnabled(true);
    mChart.getAxisLeft().setDrawGridLines(false);
    mChart.getXAxis().setDrawGridLines(false);
    mChart.setDragEnabled(false);
    mChart.setScaleEnabled(false);
    mChart.getAxisLeft().setDrawLimitLinesBehindData(true);

    final XAxis xAxis = mChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setLabelRotationAngle(270);
    xAxis.setAxisLineWidth(3);
    xAxis.setTextSize(12f);
    xAxis.setTextColor(Color.WHITE);
  //  xAxis.setGranularity(0f);
    xAxis.setLabelCount(xAxisStringValues.length,true);

    xAxis.setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
                if (value > 0 || value < readingDateGlucose.length)
                {
                        return xAxisStringValues[(int) value];
                }
            return "-";
        }

        @Override
        public int getDecimalDigits() {
            return 0;
        }
    });

    YAxis leftAxis = mChart.getAxisLeft();
    leftAxis.removeAllLimitLines();
    leftAxis.setAxisLineWidth(3);
    leftAxis.setDrawAxisLine(false);
    leftAxis.setDrawGridLines(true);
    leftAxis.setTextSize(12f);
    leftAxis.setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            return "" + ((int) value);
        }

        @Override
        public int getDecimalDigits() {
            return 0;
        }
    });
    leftAxis.setTextColor(Color.WHITE);
    leftAxis.setDrawZeroLine(false);
    leftAxis.setDrawLimitLinesBehindData(false);
    mChart.getAxisRight().setEnabled(false);
    mChart.setAutoScaleMinMaxEnabled(true);
    mChart.getLegend().setEnabled(false);
    mChart.getDescription().setEnabled(false);
    mChart.animateX(2500, Easing.EasingOption.EaseInOutQuart);

    mChart.invalidate();

这是怎样的,我正在绘制我的图表。而且,我使用了MP Android v3.0.0库。我已经看过这个链接,但无法理解:circular highlighted data points

这就是我在点击列表器final AdapterView.OnItemClickListener listener = new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { listPosition = position; } };

上实施的方式

这就是我创建数据集的方法`set1 = new LineDataSet(yVals,“”);

    set1.setFillColor(Color.TRANSPARENT);
    set1.setColor(Color.RED);
    set1.setCircleColor(Color.BLUE);
    set1.setLineWidth(2f);
    set1.setValueTextColor(Color.WHITE);
    set1.setValueTextSize(10f);
    set1.setCircleRadius(2f);
    set1.setDrawCircleHole(false);
    set1.setHighlightEnabled(true);
    set1.setDrawValues(false);
    set1.setDrawFilled(true);
    ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
    dataSets.add(set1);
    LineData data = new LineData(dataSets);
    mChart.setData(data);`

1 个答案:

答案 0 :(得分:0)

设计要显示的图标而不是圆圈。将该图标放在项目的可绘制文件夹中。获取您要在其上显示图标的具体值:

set1.getEntryForIndex(index).setIcon(getDrawable(R.drawable.icon));

之后用您的条目索引替换索引,例如第一个条目使用0.还用drawables中的图标名称替换icon。