- 论坛徽章:
- 1
|
可以绘制线性图,点状图,柱状图,饼状图,气泡图等- package com.anjoyo.achartengine;
-
- import java.util.Random;
-
- import org.achartengine.ChartFactory;
- import org.achartengine.chart.BarChart.Type;
- import org.achartengine.model.CategorySeries;
- import org.achartengine.model.XYMultipleSeriesDataset;
- import org.achartengine.renderer.SimpleSeriesRenderer;
- import org.achartengine.renderer.XYMultipleSeriesRenderer;
-
- import android.content.Context;
- import android.content.Intent;
- import android.graphics.Color;
-
- public class ABarChart {
- public Intent execute(Context context) {
-
- return ChartFactory.getBarChartIntent(context, getBarChartDataset(), getBarChartRenderer(), Type.DEFAULT);
- }
-
- private XYMultipleSeriesRenderer getBarChartRenderer() {
- // TODO Auto-generated method stub
- XYMultipleSeriesRenderer renderer=new XYMultipleSeriesRenderer();
- SimpleSeriesRenderer r;
- r=new SimpleSeriesRenderer();
- r.setColor(Color.BLUE);
- renderer.addSeriesRenderer(r);
- r=new SimpleSeriesRenderer();
- r.setColor(Color.GREEN);
- renderer.addSeriesRenderer(r);
- setBarChartRenderer(renderer);
- return renderer;
- }
-
- private void setBarChartRenderer(XYMultipleSeriesRenderer renderer) {
- // TODO Auto-generated method stub
- renderer.setChartTitle("Bar Chart");
- renderer.setXTitle("X Axis");
- renderer.setYTitle("Y Axis");
- renderer.setXAxisMax(10.5);
- renderer.setXAxisMin(0.5);
- renderer.setYAxisMax(210);
- renderer.setYAxisMin(0);
- }
-
- private XYMultipleSeriesDataset getBarChartDataset() {
- // TODO Auto-generated method stub
- XYMultipleSeriesDataset dataset=new XYMultipleSeriesDataset();
- final int SERIES_NR=2;
- final int NR=10;
- Random random=new Random();
- for (int i = 0; i < SERIES_NR; i++) {
- CategorySeries series=new CategorySeries("Bar Chart---"+(i+1));
- for (int j = 0; j < NR; j++) {
- series.add(100+random.nextInt(100));
- }
- dataset.addSeries(series.toXYSeries());
- }
- return dataset;
- }
- }
复制代码- package com.anjoyo.achartengine;
-
- import java.util.Random;
-
- import org.achartengine.ChartFactory;
- import org.achartengine.chart.PointStyle;
- import org.achartengine.model.XYMultipleSeriesDataset;
- import org.achartengine.model.XYValueSeries;
- import org.achartengine.renderer.XYMultipleSeriesRenderer;
- import org.achartengine.renderer.XYSeriesRenderer;
-
- import android.content.Context;
- import android.content.Intent;
- import android.graphics.Color;
-
- public class ABubbleChart {
- private final int SERIES_NR = 3;
- private final int NR = 20;
-
- public Intent execute(Context context) {
- return ChartFactory.getBubbleChartIntent(context,
- getBubbleChartDataset(), getBubbleChartRenderer(),
- "Bubble Chart Demo");
- }
-
- private XYMultipleSeriesRenderer getBubbleChartRenderer() {
- // TODO Auto-generated method stub
- XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
- int[] linearColor = { Color.RED, Color.GREEN, Color.BLUE };
- XYSeriesRenderer r;
- for (int i = 0; i < SERIES_NR; i++) {
- // entry=new XYEntry<Integer, Integer>(key, value);
- r = new XYSeriesRenderer();
- r.setColor(linearColor[i]);
- r.setPointStyle(PointStyle.POINT);
- r.setLineWidth(2);
- renderer.addSeriesRenderer(r);
- }
- setBarChartRenderer(renderer);
- return renderer;
- }
-
- private XYMultipleSeriesDataset getBubbleChartDataset() {
- // TODO Auto-generated method stub
- XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
- for (int i = 0; i < SERIES_NR; i++) {
- XYValueSeries series = new XYValueSeries("Bubble Chart---"
- + (i + 1));
- int temp = 10 * i;
- int[][] data = getBasicData();
- for (int j = 0; j < data.length; j++) {
- if((j+1)%5 ==0){
- int x = data[j][0];
- int y = temp;
- int value=data[j][1]+temp;
- series.add(x, y, value);
- }
- }
- dataset.addSeries(series);
- }
- return dataset;
- }
-
- private int[][] getBasicData() {
- int[][] data = new int[20][2];
- Random rand = new Random();
- for (int i = 0; i < data.length; i++) {
- data[i][0] = i;
- data[i][1] = 20 + rand.nextInt(20) % 20;
- }
- return data;
- }
-
- private void setBarChartRenderer(XYMultipleSeriesRenderer renderer) {
- // TODO Auto-generated method stub
- renderer.setChartTitle("Bubble Chart");
- renderer.setXTitle("X Axis");
- renderer.setYTitle("Y Axis");
- renderer.setXAxisMax(20);
- renderer.setXAxisMin(0);
- renderer.setYAxisMax(30);
- renderer.setYAxisMin(0);
- renderer.setAntialiasing(true);//没有看出有啥效果来
- renderer.setApplyBackgroundColor(true);//设置背景颜色
- renderer.setBackgroundColor(Color.TRANSPARENT);
- renderer.setShowAxes(true);//
- renderer.setAxesColor(Color.GRAY);
- renderer.setClickEnabled(true);//设置了之后,不可再拖动
- renderer.setZoomButtonsVisible(true);//设置伸缩按钮是否可见
- renderer.setZoomEnabled(true);
- renderer.setExternalZoomEnabled(true);//设置是否可以向伸缩
- renderer.setLabelsColor(Color.GREEN);
- renderer.setLabelsTextSize(16);
- }
- }
复制代码- package com.anjoyo.achartengine;
-
- import java.util.Random;
-
- import org.achartengine.ChartFactory;
- 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.content.Context;
- import android.content.Intent;
- import android.graphics.Color;
-
- public class ALinearChart {
- private final int SERIES_NR=3;
- private final int NR=20;
- public Intent execute(Context context) {
- return ChartFactory.getLineChartIntent(context, getLinearChartDataset(), getLinearChartRenderer(), "Linear Chart Another");
- }
-
- private XYMultipleSeriesRenderer getLinearChartRenderer() {
- // TODO Auto-generated method stub
- int[] linearColor={Color.RED, Color.GREEN, Color.BLUE};
- int[] belowLinearColor={Color.YELLOW, Color.CYAN, Color.GRAY};
- XYMultipleSeriesRenderer renderer=new XYMultipleSeriesRenderer();
- XYSeriesRenderer tempRender;
- for (int i = 0; i < SERIES_NR; i++) {
- tempRender=new XYSeriesRenderer();
- tempRender.setColor(linearColor[i]);
- // tempRender.setFillBelowLine(true);
- // tempRender.setFillBelowLineColor(belowLinearColor[i]);
- tempRender.setPointStyle(PointStyle.POINT);
- tempRender.setLineWidth(2);
- renderer.addSeriesRenderer(tempRender);
- }
- setLinearChartRenderer(renderer);
- return renderer;
- }
-
- private void setLinearChartRenderer(XYMultipleSeriesRenderer renderer) {
- // TODO Auto-generated method stub
- renderer.setChartTitle("Three Linear Chart");
- renderer.setXAxisMax(20);
- renderer.setXAxisMin(0);
- renderer.setYAxisMax(60);
- renderer.setYAxisMin(0);
- }
-
- private XYMultipleSeriesDataset getLinearChartDataset() {
- // TODO Auto-generated method stub
- XYMultipleSeriesDataset dataset=new XYMultipleSeriesDataset();
- for (int i = 0; i < SERIES_NR; i++) {
- XYSeries series=new XYSeries("Stock Trend---"+(i+1));
- int temp=10*i;
- int[][] data=getBasicData();
- for (int j = 0; j < data.length; j++) {
- int x=data[j][0];
- int y=temp+data[j][1];
- series.add(x, y);
- }
- dataset.addSeries(series);
- }
- return dataset;
- }
- private int[][] getBasicData() {
- int[][] data=new int[20][2];
- Random rand=new Random();
- for (int i = 0; i < data.length; i++) {
- data[i][0]=i;
- data[i][1]=20+rand.nextInt(20)%20;
- }
- return data;
- }
- }
复制代码- package com.anjoyo.achartengine;
-
- import org.achartengine.ChartFactory;
- import org.achartengine.model.CategorySeries;
- import org.achartengine.renderer.DefaultRenderer;
- import org.achartengine.renderer.SimpleSeriesRenderer;
-
- import android.content.Context;
- import android.content.Intent;
- import android.graphics.Color;
-
- public class APieChart {
- private double[] values = { 25, 30, 45 };
-
- public APieChart() {
- // TODO Auto-generated constructor stub
- }
-
- public APieChart(double[] values) {
- if (values.length == 3) {
- for (int i = 0; i < values.length; i++) {
- this.values[i] = values[i];
- }
- }
- }
- public Intent execute(Context context) {
- int[] colors={Color.BLUE, Color.GREEN, Color.YELLOW};
- DefaultRenderer renderer=buildCategoryRenderer(colors);
- renderer.setAntialiasing(true);//没有看出有啥效果来
- renderer.setApplyBackgroundColor(true);//设置背景颜色
- renderer.setBackgroundColor(Color.TRANSPARENT);
- renderer.setShowAxes(true);//
- renderer.setAxesColor(Color.GRAY);
- renderer.setClickEnabled(true);//设置了之后,不可再拖动
- renderer.setZoomButtonsVisible(true);//设置伸缩按钮是否可见
- renderer.setZoomEnabled(true);
- renderer.setExternalZoomEnabled(true);//设置是否可以向伸缩
- renderer.setLabelsColor(Color.GREEN);
- renderer.setLabelsTextSize(16);
- // renderer.setLegendHeight(50);
- // renderer.setPanEnabled(true);
- renderer.setStartAngle(180);//好像不好用啊
- CategorySeries series=new CategorySeries("Fruit Ratio");
- series.add("Apple", values[0]);
- series.add("Banana", values[1]);
- series.add("Orange", values[2]);
- return ChartFactory.getPieChartIntent(context, series, renderer, "水果");
- }
-
- private DefaultRenderer buildCategoryRenderer(int[] colors) {
- DefaultRenderer renderer=new DefaultRenderer();
- renderer.setApplyBackgroundColor(true);
- renderer.setBackgroundColor(Color.GRAY);
- renderer.setLabelsTextSize(20);
- renderer.setChartTitle("饼状图");
- renderer.setChartTitleTextSize(20);
- renderer.setLegendTextSize(20);
- renderer.setLegendHeight(50);
- for (int i = 0; i < colors.length; i++) {
- int j = colors[i];
- SimpleSeriesRenderer r=new SimpleSeriesRenderer();
- r.setColor(j);
- renderer.addSeriesRenderer(r);
- }
- return renderer;
- }
- }
复制代码- package com.anjoyo.achartengine;
-
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
-
- public class MainActivity extends Activity {
- private Button lineChartBtn;
- private Button areaChartBtn;
- private Button scatterChartBtn;
- private Button timeChartBtn;
- private Button barChartBtn;
- private Button pieChartBtn;
- private Button bubbleChartBtn;
- private Button doughnutChartBtn;
- private Button rangeBarChartBtn;
- private Button dialChartBtn;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- lineChartBtn=(Button) findViewById(R.id.line_chart);
- areaChartBtn=(Button) findViewById(R.id.area_chart);
- scatterChartBtn=(Button) findViewById(R.id.scatter_chart);
- timeChartBtn=(Button) findViewById(R.id.time_chart);
- barChartBtn=(Button) findViewById(R.id.bar_chart);
- pieChartBtn=(Button) findViewById(R.id.pie_chart);
- bubbleChartBtn=(Button) findViewById(R.id.bubble_chart);
- doughnutChartBtn=(Button) findViewById(R.id.doughnut_chart);
- rangeBarChartBtn=(Button) findViewById(R.id.range_bar_chart);
- dialChartBtn=(Button) findViewById(R.id.dial_chart);
- OnClickListener listener=new AChartEngineListener();
- lineChartBtn.setOnClickListener(listener);
- pieChartBtn.setOnClickListener(listener);
- barChartBtn.setOnClickListener(listener);
- bubbleChartBtn.setOnClickListener(listener);
- }
- class AChartEngineListener implements OnClickListener{
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- switch (v.getId()) {
- case R.id.line_chart:
- // Intent intent=new Intent(MainActivity.this, LinearChartActivity.class);
- // startActivity(intent);
- Intent linearChartIntent=new ALinearChart().execute(MainActivity.this);
- startActivity(linearChartIntent);
- break;
- case R.id.area_chart:
- break;
- case R.id.scatter_chart:
-
- break;
- case R.id.time_chart:
-
- break;
- case R.id.bar_chart:
- Intent barChartIntent=new ABarChart().execute(MainActivity.this);
- startActivity(barChartIntent);
- break;
- case R.id.pie_chart:
- Intent pieChartIntent=new APieChart().execute(MainActivity.this);
- startActivity(pieChartIntent);
- break;
- case R.id.bubble_chart:
- Intent bubbleChartIntent=new ABubbleChart().execute(MainActivity.this);
- startActivity(bubbleChartIntent);
- break;
- case R.id.doughnut_chart:
-
- break;
- case R.id.range_bar_chart:
- break;
- case R.id.dial_chart:
-
- break;
-
- default:
- break;
- }
- }
-
- }
- }
复制代码- package com.anjoyo.achartengine;
-
- import java.util.Random;
-
- 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.graphics.Color;
- import android.os.Bundle;
- import android.view.ViewGroup.LayoutParams;
- import android.widget.LinearLayout;
-
- public class LinearChartActivity extends Activity {
- private XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
- private XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
- private XYSeries currentSeries;
- private XYSeriesRenderer currentRenderer;
- private String dateFormat;
- private GraphicalView chartView;
-
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onRestoreInstanceState(savedInstanceState);
- dataset = (XYMultipleSeriesDataset) savedInstanceState
- .getSerializable("dataset");
- renderer = (XYMultipleSeriesRenderer) savedInstanceState
- .getSerializable("renderer");
- currentSeries = (XYSeries) savedInstanceState
- .getSerializable("current_series");
- currentRenderer = (XYSeriesRenderer) savedInstanceState
- .getSerializable("current_renderer");
- dateFormat = savedInstanceState.getString("date_format");
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- // TODO Auto-generated method stub
- super.onSaveInstanceState(outState);
- outState.putSerializable("dataset", dataset);
- outState.putSerializable("renderer", renderer);
- outState.putSerializable("current_series", currentSeries);
- outState.putSerializable("current_renderer", currentRenderer);
- outState.putString("date_format", dateFormat);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.stock_chart);
-
- String seriesTitle = "上证指数";
- XYSeries series = new XYSeries(seriesTitle);
- dataset.addSeries(series);
- currentSeries = series;
- XYSeriesRenderer seriesRenderer = new XYSeriesRenderer();
- seriesRenderer.setColor(Color.BLUE);
- seriesRenderer.setFillBelowLine(true);
- // seriesRenderer.setFillBelowLineColor(Color.RED);//折线下面区域是否添加颜色
- seriesRenderer.setPointStyle(PointStyle.POINT);
- seriesRenderer.setLineWidth(3);
- renderer.addSeriesRenderer(seriesRenderer);
- // 添加另外一条曲线图
- // seriesRenderer = new XYSeriesRenderer();
- // seriesRenderer.setColor(Color.GREEN);
- // seriesRenderer.setFillBelowLine(true);
- // seriesRenderer.setFillBelowLineColor(Color.YELLOW);
- // seriesRenderer.setPointStyle(PointStyle.POINT);
- // seriesRenderer.setLineWidth(3);
- // renderer.addSeriesRenderer(seriesRenderer);
-
- renderer.setYAxisMin(0);
- renderer.setYAxisMax(100);
- renderer.setXAxisMax(20);
- renderer.setShowGrid(false);
- renderer.setXLabels(20);
- renderer.setChartTitle("上证指数-24小时趋势图");
-
- currentRenderer = seriesRenderer;
- double x = 0;
- double y = 0;
- int[][] xyValues = getValues();
- // for (int i = 0; i < 2; i++) {
- //
- for (int j = 0; j < xyValues.length; j++) {
- x=xyValues[j][0];
- y=xyValues[j][1];
- currentSeries.add(x, y);
- }
- // }
- }
-
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- if(chartView == null){
- LinearLayout layout=(LinearLayout) findViewById(R.id.chart);
- chartView=ChartFactory.getLineChartView(this, dataset, renderer);
- layout.addView(chartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
- }else {
- chartView.setBackgroundResource(R.id.chart);
- chartView.repaint();
- }
- super.onResume();
- }
-
- private int[][] getValues() {
- // TODO Auto-generated method stub
- int[][] xyValues = new int[20][2];
- Random rand=new Random();
- for (int i = 0; i < xyValues.length; i++) {
- xyValues[i][0]=i;
- xyValues[i][1]=rand.nextInt(100);
- }
- return xyValues;
- }
- }
复制代码- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.anjoyo.achartengine"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk
- android:minSdkVersion="8"
- android:targetSdkVersion="17" />
-
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppBaseTheme"
- >
- <activity
- android:name="com.anjoyo.achartengine.MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
- <activity android:name=".LinearChartActivity"></activity>
- <activity android:name="org.achartengine.GraphicalActivity"></activity>
- </application>
- </manifest>
复制代码 |
|