【问题标题】:highlighted lines in the achartengine gridachartengine 网格中突出显示的行
【发布时间】:2013-06-20 11:28:42
【问题描述】:

我尝试为我的心电图创建自定义网格,但没有任何效果。
我想得到一个具有特定突出显示线的网格。为了减少网格线,我使用xyMultipleSeriesRenderer.setXLabels(10)xyMultipleSeriesRenderer.setYLabels(10)
现在我想突出显示 X 轴和 Y 轴的每四行,或者使它们比其他行大。
这是我发现的东西。

http://www.google.de/imgres?um=1&client=firefox-a&sa=N&rls=org.mozilla:de:official&hl=de&biw=1680&bih=920&tbm=isch&tbnid=0PCpcj6UTWULcM:&imgrefurl=http://android.codeandmagic.org/2012/10/achartengine-live-scrolling-graph/2012-10-03-19-16-10-2/&docid=yfaTOinxMsdA-M&imgurl=http://android.codeandmagic.org/wp-content/uploads/2012/10/2012-10-03-19.16.101.png&w=720&h=1280&ei=8bDCUdP3E8zPsgbKpICYBw&zoom=1&iact=rc&dur=317&page=1&tbnh=147&tbnw=83&start=0&ndsp=51&ved=1t:429,r:5,s:0,i:97&tx=29&ty=58

这几乎就是我想要的。但我还需要 y 轴的阈值。
有人有想法吗? 我很高兴任何提示!

补充:

是的,突出线条真的很容易。我只是在 (0,20) 处添加一个点,在 (1000,20) 处添加一个点。这对水平线非常有效。

但是如果我想对垂直线做同样的事情,我会得到一条对角线。对于静态折线图,如果我只在 (30,0) 处添加一个点,在 (30,100) 处添加一个点,它就可以工作。但如果我对实时折线图做同样的事情,我只会得到这种丑陋的倾斜。谁能给我解释一下??? 我还尝试更改(30,0)和(29,1000)之类的值,但我仍然得到对角线:(

【问题讨论】:

    标签: android grid achartengine


    【解决方案1】:

    解决方案是添加一些额外的系列,每个系列只包含 2 个点,每个这样的系列都会定义这样一条线。

    【讨论】:

    • 哦,是的,我以为会有更简单的方法......但谢谢你的回答,这是一个很好的提示
    • 好的,我试过了。但是如果我添加两点,程序会在 x 轴上向前绘制第二个网格一个点。我得到这样的对角线 \ 而不是这样的直线 |我究竟做错了什么。我不告诉你,我用 timeSeries 绘制了一个实时折线图。这是我的问题吗?
    • 您的图表中似乎唯一的东西是一个系列,其中包含我提到的 2 个点。您需要至少再有一个系列,其中包含一些点,垂直线将开始看起来垂直。
    • 是的,这正是我正在做的。下面你可以看到我的代码。错误是什么?我无计可施。
    • 很难猜出您添加到数据系列的点是什么。发布截图。冷静点。
    【解决方案2】:

    您好,感谢您的回答。但是我已经有两个系列了。我有一个系列可以生成我的动态图。我尝试向你展示我的代码。

    public class TraceActivity extends Activity implements Observer
      {
      private GraphicalView view;
      private DynamicGraph dynamicGraph = new DynamicGraph();
      private static Thread thread;
      private dynamicValue value; //get from observable
    
     protected void onCreate(Bundle savedInstanceState)
     {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_patient);
    
         /* Thread for the graphs */
        thread = new Thread()
        {
            public void run()
            {
    
                for (int i = 0; i < 1000; i++)
                { 
    
                    try
                    {
                        Thread.sleep(1000);
                    }
                    catch (InterruptedException e)
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
    
                    dynamicGraph.setRange();
                    Point point = getDataFromReceiver(i, value);
    
            // here I try to add the vertical line 
                dynamicGraph.addNewLine(30, 0);    
              dynamicGraph.addNewLine(30, 100);    // this line is painted at 31,100)
    
                    dynamicGraph.addNewPoint(point);
    
                    View.repaint();
    
                }
    
            }
        };
        thread.start();
    
    }
    
    public Point getDataFromReceiver(int x, int parameter)
      {
        return new Point(x, parameter);
      }
    
    @Override
      protected void onStart()
      {
        super.onStart();
        runOnUiThread(new ShowView(dynamicgraph.getView(this)));
      }
    
    private class ShowView implements Runnable
       {
        GraphicalView graphView;
        public ShowTocoView(GraphicalView graphicalView)
        {
            graphView = graphicalView;
        }
    
        @Override
        public void run()
        {
            if (View == null)
            {
                LinearLayout layout = (LinearLayout) findViewById(R.id.View);
                View = graphView;
                layout.addView(View);
            }
            else
            {
                View.repaint();
            }
        }
    }
    
    public class DynamicGraph
    {
        /** The chart view that displays the data. */
    private GraphicalView view;
    
    private TimeSeries Data = new TimeSeries("Toco");
    private TimeSeries verticalLine = new TimeSeries("");
    
    /** The main dataset that includes all the series that go into a chart. */
    private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
    
    /** The main renderer that includes all the renderers customizing a chart. */
    private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
    
    /** The most recently created renderer, customizing the current series. */
    private XYSeriesRenderer rendererData = new XYSeriesRenderer();
    private XYSeriesRenderer rendererVerticalLine = new XYSeriesRenderer();
    
    GraphBuilder graphBuilder = new GraphBuilder(mRenderer, 10);
    
    public TocoGraph()
    {
        mDataset.addSeries(Data);
        mDataset.addSeries(verticalLine);
    
        // graphBuilder build the grid and set the XYSeriesRenderer
        graphBuilder.setAndAddXYSeriesRenderer(rendererData, Color.BLACK, 2f);
        graphBuilder.setAndAddXYSeriesRenderer(rendererVerticalLine,
                Color.rgb(247, 131, 62), 2f);
    
    }
    
    public GraphicalView getView(Context context)
    {
        view = ChartFactory.getLineChartView(context, mDataset, mRenderer);
        return view;
    }
    
    public void setRange()
    {
        graphBuilder.setRange(Data, 100, 0);
    }
    public void addNewPoint(Point p)
    {
        Data.add(p.getX(), p.getY());
    
    }
    
    public void addNewLine(int x, int y)
    {
        verticalLine.add(x, y);
    }   }
    

    所以我没有理由,为什么垂直线不垂直。你有什么想法吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2017-07-09
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多