2012-03-19 16 views
0

SQLiteデータベースのバッテリー接続時間(日付フィールド - 文字列)とTimeToCharge(秒 - 必要に応じてフロートとして表示)フィールドを持っています。私は、X軸に接続時間とy軸に充電する時間のXYグラフを表示したいと思います。私はグーグルで、アンドロイドで多くのチャートやapiやjarを見つけましたが、kiChartのようなものをいくつか実装した後は、ちょっと混乱していました。私は非常にダイナミックで詳細なグラフを表示したくはありませんが、利用可能な各チャート作成ソリューションを試してみると、時間がかかります。SQLiteデータベースのデータを使用してXYチャートを表示する

私は間違いなく私の要件のためにうまくいくものを実装しようとすることができます。最高の無料チャーティングソリューションであると思いますか?

おかげ Omkar Ghaisas

public class BatteryGraph extends Activity 
{ 
/** Called when the activity is first created. */ 
private XYMultipleSeriesDataset mDataset; 
private XYMultipleSeriesRenderer mRenderer; 
List<double[]> values = new ArrayList<double[]>(); 
private GraphicalView mChartView; 
private TimeSeries time_series; 

// chart container 
private LinearLayout layout; 

@SuppressWarnings("deprecation") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.graph); 

    layout = (LinearLayout) findViewById(R.id.chart); 

    // create dataset and renderer 
    mDataset = new XYMultipleSeriesDataset(); 
    mRenderer = new XYMultipleSeriesRenderer(); 
    mRenderer.setAxisTitleTextSize(16); 
    mRenderer.setChartTitleTextSize(20); 
    mRenderer.setLabelsTextSize(15); 
    mRenderer.setLegendTextSize(15); 
    mRenderer.setPointSize(5f); 
    mRenderer.setMargins(new int[] {0,20,20,0}); 

    XYSeriesRenderer r = new XYSeriesRenderer(); 
    r.setColor(Color.YELLOW); 
    r.setPointStyle(PointStyle.POINT); 
    r.setFillPoints(true); 
    mRenderer.addSeriesRenderer(r); 
    mRenderer.setClickEnabled(true); 
    mRenderer.setSelectableBuffer(20); 
    mRenderer.setPanEnabled(true); 
    mRenderer.setFitLegend(true); 
    mRenderer.setDisplayChartValues(true); 
    mRenderer.setInScroll(true); 
    mRenderer.setShowGrid(true); 
    mRenderer.setOrientation(Orientation.HORIZONTAL); 
    mRenderer.setShowLabels(true); 
    mRenderer.setXLabelsAngle(60); 
    mRenderer.setXTitle("Date"); 
    mRenderer.setYTitle("Time in Secs"); 

    time_series = new TimeSeries("Charging Date vs TimeTakenToCharge"); 

    mDataset.addSeries(time_series); 

    fillData(); 

    mChartView = ChartFactory.getTimeChartView(this, mDataset, mRenderer, "dd/mm/yy"); 

    layout.addView(mChartView); 
} 

private void fillData() 
{ 
    DatabaseAppBlock dbHelper = new DatabaseAppBlock(getApplicationContext()); 
    Cursor chargeCycleData = dbHelper.getAllChargeCycleData("Asc"); 
    int rowCount = chargeCycleData.getCount(); 

    if(rowCount > 0) 
    { 
     chargeCycleData.moveToFirst(); 
     for (int i = 0; i < rowCount ; i++) 
     {    

time_series.add(CommonFunc.GetDateFromString(chargeCycleData.getString(chargeCycleData.getColumnIndex(Constants.colChargeConnectTime))),chargeCycleData.getDouble(chargeCycleData.getColumnIndex(Constants.colTimeToCharge))); chargeCycleData.moveToPosition(i+1); }}
}}

+0

あなたは十分な検索をしていません。より有用なライブラリがあります。 – MKJParekh

答えて

1

AChartEngineは使いやすく、タイムチャートのクラスを提供しています。これは、日付プレゼンテーション自体を処理する時間/日付軸を持つXYチャートです。 AChartEngineのデモには、TimeChartのサンプルコードもあります。

+0

がそれに同意します。 – MKJParekh

+0

私はこれを試してみてください。 –

+0

タイムチャートを表示することに成功しました。提案していただきありがとうございます。 Btw、私はまだグラフを左右にスクロールすることはできません。そのため、私のdbデータ(日付)とそのタイミングが画面外に出ることはほとんどありません。私は今のところ3つのデータポイントしか表示できませんが、スクロールやその他のオプションを使用すると、さらにデータポイントを表示することができます。それを行うテクニックは何ですか? –

関連する問題