выделенные линии в сетке achartengine

Я пытаюсь создать собственную сетку для своего ЭКГ, но ничего не работает.
Я хочу получить сетку, в которой есть определенные выделенные линии. Чтобы увидеть линии сетки, я использую 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:&imgref:&imgref:/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=5&ndsp=0&ndsp=5&ndsp,s:0,i:97&tx=29&ty=58

Это почти то, что я ищу. Но мне также нужен трехугольник для оси Y.
Есть у кого-нибудь идея? Рад любой подсказке!

Добавка:

Да, было действительно легко выделить линии. Я просто добавляю одну точку в (0,20) и одну в (1000,20). Это отлично подходит для горизонтальных линий.

Но если я хочу сделать то же самое с вертикальными линиями, я получаю диагональную линию. Для статической линейной диаграммы это сработает, если я добавлю только к точкам одну точку (30,0) и одну точку (30,100). Но если я сделаю то же самое для линейного графика в реальном времени, я получу только этот уродливый наклон. Может кто-нибудь мне это объяснить ???? Я также пытался изменить такие значения, как (30,0) и (29,1000), но у меня все еще появляется диагональная линия :(


person Susi    schedule 20.06.2013    source источник


Ответы (2)


Решение состоит в том, чтобы добавить несколько дополнительных серий, каждая из которых содержит только 2 точки, и каждая такая серия будет определять такую ​​линию.

person Dan D.    schedule 20.06.2013
comment
о да, я подумал, что будет способ попроще ... но спасибо за ответ, это хороший намек - person Susi; 21.06.2013
comment
хорошо, теперь я попробовал. но если я добавлю две точки, программа закрасит вторую сетку на одну точку вперед по оси x. чтобы получить диагональную линию, как эта \, а не прямую, как эта | Что я делаю неправильно. Я не говорю вам, что я рисую линейную диаграмму в реальном времени с помощью timeSeries. это моя проблема? - person Susi; 26.06.2013
comment
Похоже, что единственное, что есть на вашем графике, - это одна серия с двумя упомянутыми мною пунктами. У вас должна быть как минимум еще одна серия с несколькими точками, и вертикальная линия станет вертикальной. - person Dan D.; 27.06.2013
comment
Да, именно то, что я делаю. ниже вы можете увидеть мой код. В чем ошибка? Я на грани своего остроумия. - person Susi; 02.07.2013
comment
Трудно догадаться, какие точки вы добавляете к серии данных. Разместите скриншот. Успокаивать. - person Dan D.; 02.07.2013
comment
хорошо, я делаю скриншоп. черная линия - динамическая. а оранжевая линия должна быть вертикальной линией в красном квадрате. Не могу загрузить картинку из-за того, что загружаю ее в дропбокс. dropbox.com/s/vay16pfr0dlqxhx/screenshot.png - person Susi; 03.07.2013
comment
Линия почти вертикальная. Внутренняя модель не поддерживает добавление нескольких точек с одинаковым значением X, поэтому вторая точка находится на 31, а не на 30. Это известная проблема. Однако я предлагаю вам использовать XYSeries вместо TimeSeries. - person Dan D.; 03.07.2013
comment
эй, дан. ах, хорошо, это известная проблема ... проклятый: P и вы предлагаете взять XYSereies вместо TimeSeries. Не могли бы вы объяснить почему? - person Susi; 08.07.2013
comment
Вы не строите TimeChart, вы просто строите LineChart. Попробуйте, и вы поймете, почему я это предложил. - person Dan D.; 08.07.2013
comment
Да, отлично. ха-ха, это был действительно очень хороший намек. благодарю вас! он решил множество мелких проблем, которые у меня были. - person Susi; 08.07.2013

Здравствуйте, спасибо за ваш ответ. Но у меня уже две серии. У меня есть одна серия, которая генерирует мой динамический график. Я пытаюсь показать тебе свой код.

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

Так что для меня нет причин, почему вертикальная линия не является вертикальной. Есть идея?

person Susi    schedule 02.07.2013