【问题标题】:get pie chart slice's value using aChartEngine使用 aChartEngine 获取饼图切片的值
【发布时间】:2011-09-20 15:48:45
【问题描述】:

我正在尝试开发一个包含饼图的 android 应用程序。我使用 aChartEngine 来生成图表,但问题是我无法触摸/单击饼图的特定切片并获取相关数据!有人知道获取该数据的方法吗? 这是每个图表框架都有的一件简单的事情,但我在 javadoc 上找不到一些可以做到这一点的方法,我想知道是否存在这样的事情。 任何帮助都是宝贵的,在此先感谢。

【问题讨论】:

    标签: android pie-chart achartengine


    【解决方案1】:

    1.0.0版本增加了这个功能,你可以使用SeriesSelection类获取point-index、series indes、value和x-value。您可以使用 GraphicalView 图表的 getCurrentSeriesAndPoint() 获取实例。

      mChartView = ChartFactory.getPieChartView(this, mSeries, mRenderer);
      mRenderer.setClickEnabled(true);
      mRenderer.setSelectableBuffer(10);
      mChartView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
          if (seriesSelection == null) {
            Toast
                .makeText(PieChartBuilder.this, "No chart element was clicked",
          Toast.LENGTH_SHORT)
                .show();
          } else {
            Toast.makeText(
                PieChartBuilder.this,
                "Chart element data point index " + seriesSelection.getPointIndex()
                    + " was clicked" + " point value=" + seriesSelection.getValue(),
                Toast.LENGTH_SHORT).show();
          }
        }
      });
    

    【讨论】:

      【解决方案2】:

      AChartEngine SVN 中的版本现在包含此功能。

      您可以查看执行此操作的代码示例here

      【讨论】:

        【解决方案3】:

        根据 AChartEngine 作者的说法 - 它尚未实现:

        AChartEngine discussion group

        您可以添加功能请求。

        【讨论】:

          【解决方案4】:
              mChartView = ChartFactory.getPieChartView(getActivity(),mSeries,mRenderer);
          
                      mChartView.setOnClickListener(new View.OnClickListener() { 
                          @Override
                          public void onClick(View v) {
                              SeriesSelection seriesSelection =mChartView.getCurrentSeriesAndPoint();
                              if (seriesSelection == null) {
          
                              } else {
                                  for (int i = 0; i <mSeries.getItemCount(); i++) {
                                      mRenderer.getSeriesRendererAt(i).setHighlighted(i == seriesSelection.getPointIndex());
                                  }
                                  mChartView.repaint();
                                  // Toast.makeText( getActivity(), "Chart data point index " + seriesSelection.getPointIndex() + " selected" + " point value=" + seriesSelection.getValue(), Toast.LENGTH_SHORT).show();
                              }
                          }
                      });
                      mRenderer.setClickEnabled(true);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-06-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多