Skip to content

Instantly share code, notes, and snippets.

@ueno-yuhei
Last active January 13, 2022 08:59
Show Gist options
  • Save ueno-yuhei/bb3bc5c4c9971a93d06b to your computer and use it in GitHub Desktop.
Save ueno-yuhei/bb3bc5c4c9971a93d06b to your computer and use it in GitHub Desktop.
aChartEngineを使用したグラフ
// https://code.google.com/p/achartengine/ を使用したグラフ
// http://niche-na-blog.seesaa.net/article/393534481.html 参考
// これかなりいい!!!
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Window;
import android.widget.FrameLayout;
import com.example.graph.R;
public class MainActivity extends Activity {
private ExampleOpenHelper mExampleOpenHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
//レイアウトに表示
FrameLayout mainFrame = (FrameLayout)findViewById(R.id.main);
mExampleOpenHelper = new ExampleOpenHelper(MainActivity.this);
SQLiteDatabase db = mExampleOpenHelper.getReadableDatabase(); //データベース取得
Cursor cursor = db.rawQuery("SELECT * from example", new String[] {});
GraphicalView lineChartGraph = LineChart.execute(this,cursor);
mainFrame.addView(lineChartGraph);
cursor.close();
db.close();
mExampleOpenHelper.close();
}
private class ExampleOpenHelper extends SQLiteOpenHelper {
final static private int DB_VERSION = 1;
public ExampleOpenHelper(Context context) {
super(context, "sample.db", null, DB_VERSION);
}
// 初回起動時のみ処理される
@Override
public void onCreate(SQLiteDatabase db) {
/**
* name: exampleテーブル
* id:integer | memo:real
*/
db.execSQL("CREATE TABLE example(id INTEGER PRIMARY KEY AUTOINCREMENT, memo REAL NOT NULL);");
// 初期データの投入
for(int i=0;i<=99;i++){
db.execSQL("INSERT INTO example(memo) values('"+ Math.random() +"')");
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public static class LineChart{
static XYSeries series;
public static GraphicalView execute(Context context,Cursor cursor) {
series = new XYSeries("sample");
int number = 0;
double x,y;
boolean next = cursor.moveToFirst();
while (next) {
x = number;
y = cursor.getDouble(1);
series.add(x, y);
number++;
next = cursor.moveToNext();
}
//インテントではなくGraphicalViewを戻り値に
GraphicalView gv = ChartFactory.getLineChartView(context, getDataset(), getRenderer());
return gv;
}
public static XYMultipleSeriesDataset getDataset() {
XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset();
dataSet.addSeries(series);
return dataSet;
}
public static XYMultipleSeriesRenderer getRenderer(){
XYSeriesRenderer renderer1 = new XYSeriesRenderer(); //個別のグラフ
renderer1.setColor(Color.rgb(51,181,229)); //グラフの色
renderer1.setLineWidth(2); //グラフの幅
renderer1.setPointStyle(PointStyle.SQUARE); //ポイント設定
renderer1.setPointStrokeWidth(8);
renderer1.setFillPoints(true);
XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); //グラフ全体
mRenderer.setApplyBackgroundColor(true); //背景色変更
mRenderer.setBackgroundColor(Color.BLACK);
mRenderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01)); //余白色変更
mRenderer.setPanEnabled(true); //グラフを固定
mRenderer.setZoomEnabled(false); //ズームを不可に
mRenderer.setShowLegend(false); //凡例非表示
mRenderer.setAxesColor(Color.GRAY); //軸の色
mRenderer.setShowGrid(true); //グリッド表示
mRenderer.setGridColor(Color.parseColor("lightgray")); //グリッドの色
mRenderer.setXAxisMin(0);
//mRenderer.setXAxisMax(23); //表示範囲
//mRenderer.setLabelsTextSize(24); //ラベル文字サイズ
// mRenderer.setXLabels(0); //X軸ラベル非表示
//Y軸ラベル設定
mRenderer.setYLabels(5);//Y軸グリッドの密度?
mRenderer.setYLabelsColor(0, Color.GRAY);
mRenderer.setYLabelsPadding(20);
mRenderer.setYLabelsVerticalPadding(-8);
mRenderer.addSeriesRenderer(renderer1);
return mRenderer;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment