Achartengineでグラフをプロットする方法については、@Caroilik Android Dynamic Chartの回答を参照してください。彼が提供したコードを使用して3行をプロットしようとしていますが、その方法がわかりません。誰でも助けることができますか?ありがとう。
質問する
983 次
1 に答える
1
にさらに 2 つ追加する必要がtimeSeries
ありdataset
ます。いくつかのインスタンス化を移動して、いくつかの競合状態を解決する必要があります。
複数のシリーズの場合は、すでにどこにでもありますdataset
。renderer
import java.util.Date;
import java.util.Random;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.TimeSeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
public class ThreeTimeChart extends Activity {
private static Random random = new Random();
private static TimeSeries[] timeSeries;
private static XYMultipleSeriesDataset dataset;
private static XYMultipleSeriesRenderer renderer;
private static XYSeriesRenderer rendererSeries;
private static GraphicalView view;
private static Thread mThread;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dataset = new XYMultipleSeriesDataset();
renderer = new XYMultipleSeriesRenderer();
renderer.setAxesColor(Color.BLUE);
renderer.setAxisTitleTextSize(16);
renderer.setChartTitle("Time");
renderer.setChartTitleTextSize(15);
renderer.setFitLegend(true);
renderer.setGridColor(Color.LTGRAY);
renderer.setPanEnabled(true, true);
renderer.setPointSize(10);
renderer.setXTitle("Time");
renderer.setYTitle("Number");
renderer.setMargins( new int []{20, 30, 15, 0});
renderer.setZoomButtonsVisible(true);
renderer.setBarSpacing(10);
renderer.setShowGrid(true);
rendererSeries = new XYSeriesRenderer();
rendererSeries.setColor(Color.RED);
rendererSeries.setFillPoints(true);
rendererSeries.setPointStyle(PointStyle.CIRCLE);
renderer.addSeriesRenderer(rendererSeries);
rendererSeries = new XYSeriesRenderer();
rendererSeries.setColor(Color.BLUE);
rendererSeries.setFillPoints(true);
rendererSeries.setPointStyle(PointStyle.CIRCLE);
renderer.addSeriesRenderer(rendererSeries);
rendererSeries = new XYSeriesRenderer();
rendererSeries.setColor(Color.YELLOW);
rendererSeries.setFillPoints(true);
rendererSeries.setPointStyle(PointStyle.CIRCLE);
renderer.addSeriesRenderer(rendererSeries);
timeSeries = new TimeSeries[3];
timeSeries[0] = new TimeSeries("Random 0");
timeSeries[1] = new TimeSeries("Random 1");
timeSeries[2] = new TimeSeries("Random 2");
timeSeries[0].add(new Date(), random.nextInt(10));
timeSeries[1].add(new Date(), random.nextInt(10));
timeSeries[2].add(new Date(), random.nextInt(10));
}
@Override
protected void onStart() {
super.onStart();
dataset.addSeries(timeSeries[0]);
dataset.addSeries(timeSeries[1]);
dataset.addSeries(timeSeries[2]);
view = ChartFactory.getTimeChartView(this, dataset, renderer, "Test");
view.refreshDrawableState();
view.repaint();
setContentView(view);
mThread = new Thread(){
public void run(){
while(true){
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
timeSeries[0].add(new Date(), random.nextInt(10));
timeSeries[1].add(new Date(), random.nextInt(10));
timeSeries[2].add(new Date(), random.nextInt(10));
view.repaint();
}
}
};
mThread.start();
}
}
于 2012-06-27T15:29:46.950 に答える