Last active
January 13, 2022 08:59
-
-
Save ueno-yuhei/bb3bc5c4c9971a93d06b to your computer and use it in GitHub Desktop.
aChartEngineを使用したグラフ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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