【问题标题】:How to plot the real-time graph using achartengine similar to oscilloscope如何使用类似于示波器的 achartengine 绘制实时图形
【发布时间】:2013-01-30 16:28:14
【问题描述】:

我正在使用 achartengine。我必须阅读一个 txt 文件并绘制图表。我得到了图表。但是,我想要做的是当图形到达布局视图的末尾时,它应该从开始视图绘制,类似于示波器视图。 我希望我的图表与此链接中的图表完全相似

  http://www.youtube.com/watch?v=N6BuRqeUhqc.

到目前为止我所做的是:

    private class ChartTask extends AsyncTask<Void, String, Void>{
         String[] values = new String[2];int i1=0;

        // Generates dummy data in a non-ui thread
        @Override
        protected Void doInBackground(Void... params) {
            int i = 0;

            try{

                do{

                    values[0] = Integer.toString(i);
                    values[1] = Integer.toString(amplitude[i]);

                    if(i<=600){
                        multiRenderer.setXAxisMax(600);

                    }
                    else if(i>600){

                        double minX = amplitudeSeries.getMaxX();
                        multiRenderer.setXAxisMin(minX);                     

                    } 
                    publishProgress(values);
                    Thread.sleep(1);

                    i++; 

                }while(i<=amplitude.length);}

            catch (Exception e1){
            }
            return null;

            }

有人可以帮我解决这个问题吗?感谢任何人的帮助。

【问题讨论】:

    标签: java android eclipse achartengine


    【解决方案1】:

    使用AChartEngine 绘制动态图表应该很容易。只需更新数据集的内容并致电chartView.repaint()

    【讨论】:

      【解决方案2】:

      这是一个动画任务。使用Bitmap 保存图表并使用timer 定期将每次调用的一对X、Y 绘制到位图中。之后,调用 invalidate() 在设备屏幕上重新绘制位图。

      您最不需要的就是简单的 mod 操作。以下是此周期性调用代码的可能代码片段:

      // Get position in bitmap from the iteration index 
      int ig = mIteration % bitmap.getWidth(); 
      
      // Erase the vertical line in bitmap
      for (int y = 0, y < bitmap.getHeight(); i++) 
        bitmap.setPixel(ig, y, Color.WHITE); 
      
      // Plot the point
      bitmap.setPixel(ig, data[mIteration], Color.BLACK); 
      
      // Advance mIteration field value.
      mIteration = (mIteration + 1) % data.length; 
      
      // Force to repaint component containing the bitmap.
      invalidate(); 
      

      这将关心您返回光标并在到达数据末尾后重复动画。

      【讨论】:

      • 感谢您的想法。我以某种方式想在情节结束后强制情节从第一个开始重新绘制。现在我的问题是图表被覆盖了。之前的情节仍然如此。那么,清除之前的情节后我应该如何重新绘制?通过清除我不应该丢失以前的数据。当我滚动时它应该保持原样。你能帮我解决这个问题吗?
      • @Audrius Meškauskas 您不必在 AChartEngine 中使用像素来绘制动态图表 :)
      • @Dan 来自website 看起来是一个很棒的通用图表引擎,但它会支持他需要的那种动画吗?查看问题链接的 YouTube 视频,看看动画应该是什么样子。
      • @Audrius Meškauskas 是的,它绝对支持动态图表。我写了几个。为了获得类似 ECG 的行为,您只需要知道如何以及何时从以前的系列中删除数据。另请参阅:stackoverflow.com/questions/14643953/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多