Выделенные линии в сетке achartengine
Я пытаюсь создать собственную сетку для моего ЭКГ, но ничего не работает.
Я хочу получить сетку, которая имеет определенные выделенные линии. Для разметки линий сетки я использую xyMultipleSeriesRenderer.setXLabels(10)
а также xyMultipleSeriesRenderer.setYLabels(10)
,
А теперь я хочу выделить каждую четвертую строку от оси X и от оси Y или сделать их больше, чем другие линии.
Вот то, что я нашел.
Это почти то, что я ищу. Но мне также нужен трехосевой зажим для оси у.
У кого-нибудь есть идея? Я рад любой подсказке!
Дополнение:
Да, было действительно легко выделить линии. Я просто добавляю одну точку в (0,20) и одну в (1000,20). Это действительно хорошо работает для горизонтальных линий.
Но если я хочу сделать то же самое для вертикальных линий, я получаю диагональную линию. Для статической линейной диаграммы это работает, если я только добавлю к точкам один в (30,0) и один в (30,100). Но если я сделаю то же самое для графика в реальном времени, я получу только этот уродливый уклон. Может кто-нибудь объяснить это мне???? Я также пытался изменить значения, такие как (30,0) и (29,1000), но я все еще получаю диагональную линию:(
2 ответа
Решение состоит в том, чтобы добавить несколько дополнительных рядов, которые содержат только 2 точки в каждой, и каждая такая серия будет определять такую линию.
Здравствуйте, спасибо за ваш ответ. Но у меня уже есть две серии. У меня есть один sereies, который генерирует мой динамический график. Я пытаюсь показать вам мой код.
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);
} }
Так что для меня нет причин, почему вертикальная линия не является вертикальной. У тебя есть идея?