【问题标题】:how to highlight a particular data point in MP android Line chart?如何突出显示 MP android 折线图中的特定数据点?
【发布时间】:2018-01-03 12:03:56
【问题描述】:

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

  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);`

【问题讨论】:

    标签: android highlight mpandroidchart


    【解决方案1】:

    设计一个您想要显示的图标而不是圆形。将该图标放在项目的可绘制文件夹中。获取要在其上显示图标的特定值:

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

    之后用你的条目索引替换索引,例如第一个条目使用 0。另外,用你在 drawables 中的图标名称替换图标。

    【讨论】:

    • set1.getEntryForIndex 方法不包含任何方法 setIcon 。它显示无法解析方法 setIcon()。
    • 我测试了它并且它工作伙伴。您使用的是哪个版本?
    • 我使用的是 3.0.2 版本。我认为您使用的是 2.1.6,所以让我检查一下,如果可以的话,我会在一段时间内分享解决方案。
    • 好友我无法在 v 2.1.6 中找到 setIcon 方法。我建议您使用最新版本的 mpCharts,我可以为此分享工作示例。它的工作量并不大,但您可以通过它实现您正在寻找的东西。
    • 好的,尝试使用 3.0.2 版实现,然后应用该 setIcon 方法。如果您需要进一步的帮助,请联系我哥们。我会帮你。所有人的代码!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2017-09-12
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    相关资源
    最近更新 更多