首先需要下載Jar包:圖表jar.rar
線性圖:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 1, 構造顯示用渲染圖XY
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
// 2,進行顯示
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
// 2.1, 構建數據
Random r = new Random();
for (int i = 0; i < 2; i++) {
// 創建代表哪一條線的標題,這里是畫兩條
XYSeries series = new XYSeries("test" + (i + 1));
// 填充數據,一條標題10個點
for (int k = 0; k < 10; k++) {
// 填x,y值
series.add(k, 20 + r.nextInt() % 100);
}
// 需要繪制的點放進dataset中
dataset.addSeries(series);
}
// 3, 對點的繪制進行設置
XYSeriesRenderer xyRenderer = new XYSeriesRenderer();
// 3.1設置顏色
xyRenderer.setColor(Color.BLUE);
// 3.2設置點的樣式
xyRenderer.setPointStyle(PointStyle.SQUARE);
// 3.3, 將要繪制的點添加到坐標繪制中
renderer.addSeriesRenderer(xyRenderer);
// 3.4,重復 1~3的步驟繪制第二個系列點
xyRenderer = new XYSeriesRenderer();
xyRenderer.setColor(Color.RED);
xyRenderer.setPointStyle(PointStyle.CIRCLE);
renderer.addSeriesRenderer(xyRenderer);
// Intent intent = new LinChart().execute(this);
// 打開畫圖的Activity,需要在manifest中設置 <activity android:name="org.achartengine.GraphicalActivity" />
Intent intent = ChartFactory
.getLineChartIntent(this, dataset, renderer);
startActivity(intent);
}
}
柱狀圖:
// 柱狀圖
XYMultipleSeriesRenderer renderer = getBarDemoRenderer();
Intent intent = ChartFactory.getBarChartIntent(this,
getBarDemoDataset(), renderer, Type.DEFAULT);
startActivity(intent);
//設置柱狀圖的Series
private XYMultipleSeriesDataset getBarDemoDataset() {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
final int nr = 10;
Random r = new Random();
// 一共是3種不同的柱狀圖
for (int i = 0; i < SERIES_NR; i++) {
CategorySeries series = new CategorySeries("Demo series " + (i + 1));
// 設置每個的高度
for (int k = 0; k < nr; k++) {
series.add(100 + r.nextInt() % 100);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
}
//設置柱狀圖的Renderer,設置顏色
public XYMultipleSeriesRenderer getBarDemoRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(Color.BLUE);
renderer.addSeriesRenderer(r);
r = new SimpleSeriesRenderer();
r.setColor(Color.GREEN);
renderer.addSeriesRenderer(r);
r = new SimpleSeriesRenderer();
r.setColor(Color.WHITE);
renderer.addSeriesRenderer(r);
setChartSettings(renderer);
return renderer;
}
//設置柱狀圖Renderer的屬性
private void setChartSettings(XYMultipleSeriesRenderer renderer) {
renderer.setChartTitle("Chart demo");
renderer.setXTitle("x values");
renderer.setYTitle("y values");
renderer.setXAxisMin(0);// 設置X軸的最小值為0.5
renderer.setXAxisMax(10.5);// 設置X軸的最大值為10.5
renderer.setYAxisMin(0);// 設置Y軸的最小值為0
renderer.setYAxisMax(210);// 設置Y軸最大值為210
renderer.setDisplayChartValues(true); // 設置是否在柱體上方顯示值
renderer.setShowGrid(true);// 設置是否在圖表中顯示網格
renderer.setXLabels(0);// 設置X軸顯示的刻度標簽的個數
for (int i = 1; i < 11; i++) {
// 設置x軸刻度的值
renderer.addTextLabel(i, "" + i);
}
}
餅狀圖:
// 餅狀圖
Intent intent = execute(MainActivity.this);
startActivity(intent);
//設置餅狀圖
public Intent execute(Context context) {
double[] values = new double[] { 12, 14, 11, 10, 19 };
int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA,
Color.YELLOW, Color.CYAN };
DefaultRenderer renderer = buildCategoryRenderer(colors);
renderer.setZoomButtonsVisible(true);
renderer.setZoomEnabled(true);
// 設置餅狀圖的title字體大小
renderer.setChartTitleTextSize(20);
// 設置餅狀圖的title
renderer.setChartTitle("這是一個餅狀圖");
return ChartFactory.getPieChartIntent(context,
buildCategoryDataset("Project budget", values), renderer,
"Budget");
}
//設置餅狀圖的Renderer
protected DefaultRenderer buildCategoryRenderer(int[] colors) {
DefaultRenderer renderer = new DefaultRenderer();
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setMargins(new int[] { 20, 30, 15, 0 });
// 設置顏色
for (int color : colors) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
return renderer;
}
//設置餅狀圖的Series
protected CategorySeries buildCategoryDataset(String title, double[] values) {
CategorySeries series = new CategorySeries(title);
int k = 0;
// 設置每份的大小
for (double value : values) {
series.add("Project " + ++k, value);
}
return series;
}
