package com.zdst_03.acharttest; import android.app.Activity; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.view.Window; import android.widget.LinearLayout; import org.achartengine.chart.AbstractChart; import org.achartengine.chart.BarChart; import org.achartengine.model.CategorySeries; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.renderer.SimpleSeriesRenderer; import org.achartengine.renderer.XYMultipleSeriesRenderer; import java.util.ArrayList; import java.util.List; public class AChartTestAct extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().requestFeature(Window.FEATURE_NO_TITLE); // setContentView(R.layout.activity_main); LinearLayout linearLayout=new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL); //第一个柱状图展示 List<double[]> values = new ArrayList<>(); //两根柱子数据 values.add(new double[]{230, 180, 240, 444, 370, 250, 430, 200}); values.add(new double[]{200, 100, 210, 240, 270, 200, 323, 100}); //两根柱子的颜色 int[] colors = new int[]{0XFF61A0A8, 0xFFD4A156}; String[] titles = new String[]{"已检查", "未检查"}; MyGraphicView mView = new MyGraphicView(this, (AbstractChart)setBarChartData(values,colors,titles)); linearLayout.addView(mView); //第二个柱状图展示 List<double[]> values2 = new ArrayList<>(); //两根柱子数据 values2.add(new double[]{230, 180, 240, 444, 370, 250, 430, 200}); values2.add(new double[]{200, 100, 210, 240, 270, 200, 323, 100}); //两根柱子的颜色 int[] colors2 = new int[]{0XFFD48265, 0xFF91C7AE}; String[] titles2 = new String[]{"已整改", "未整改"}; MyGraphicView mView1 = new MyGraphicView(this, (AbstractChart)setBarChartData(values2,colors2,titles2)); linearLayout.addView(mView1); setContentView(linearLayout); // Intent intent = ChartFactory.getBarChartIntent(this, dataset, renderer, BarChart.Type.STACKED); // startActivity(intent); } BarChart setBarChartData(List<double[]> values,int[] colors,String[] titles){ String years[] = {"龙城街道", "坪地街道", "龙岗街道", "横岗街道", "平湖街道", "南湾街道", "布吉街道", "坂田街道"}; //设置坐标轴 XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); //设置坐标文字大小 renderer.setAxisTitleTextSize(16); //设置标题文字大小 renderer.setChartTitleTextSize(10); //坐标轴刻度文字大小 renderer.setLabelsTextSize(18); //标注文字大小 renderer.setLegendTextSize(20); //设置图表高度 renderer.setLegendHeight(100); //设置图表距屏幕的距离 第一个值“右”,第二个值“上”第三个值“左”第四个值“下” renderer.setMargins(new int[]{50, 50, 100, 40}); int length = colors.length; for (int i = 0; i < length; i++) { SimpleSeriesRenderer r = new SimpleSeriesRenderer(); r.setColor(colors[i]); renderer.addSeriesRenderer(r); } // 设置是否在柱体上方显示值 renderer.setDisplayChartValues(false); // 设置是否在图表中显示网格 renderer.setShowGrid(true); //网格颜色 renderer.setGridColor(0x0C0D0D); renderer.setXLabelsAlign(Paint.Align.RIGHT); renderer.setYLabelsAlign(Paint.Align.LEFT); // 设置X轴显示的刻度标签的个数 renderer.setXLabels(0); //循环添加Xlabel其中显示的label放在years数组中 for (int i = 0; i < 8; i++) { renderer.addTextLabel(i + 1, years[i]); } // 设置Y轴显示的刻度标签的个数 renderer.setYLabels(6); //显示放大缩小按钮 renderer.setZoomButtonsVisible(false); //放大缩小的倍数 renderer.setZoomRate(0.5f); //柱子大小 renderer.setBarSpacing(10); //柱子间宽度 renderer.setBarSpacing(2.0f); //设置是否需要显示坐标轴 renderer.setShowAxes(true); //设置图表外颜色 renderer.setApplyBackgroundColor(true); renderer.setMarginsColor(Color.WHITE); //设置图表的背景色 renderer.setLabelsColor(Color.BLACK); // renderer.setChartTitle("只是测试柱子");//标题文字 // renderer.setXTitle("Y轴"); // renderer.setYTitle("企业数"); // 允许左右拖动,但不允许上下拖动. renderer.setPanEnabled(true, false); // 设置X轴的最小值 renderer.setXAxisMin(0.5); //设置点击事件 renderer.setClickEnabled(false); // 设置X轴的最大值 renderer.setXAxisMax(6); // 设置Y轴的最小值 renderer.setYAxisMin(0); // 设置Y轴的最大值 renderer.setYAxisMax(500); //坐标轴颜色 renderer.setAxesColor(Color.BLACK); //坐标名称以及标题颜色 // renderer.setLabelsColor(Color.RED); //Y轴坐标顺时针旋转度 renderer.setYLabelsAngle(5f); //X轴坐标顺时针旋转度 renderer.setXLabelsAngle(0f); //设置X轴坐标字体颜色 renderer.setXLabelsColor(Color.BLACK); //设置Y轴坐标字体颜色 renderer.setYLabelsColor(0, Color.BLACK); renderer.setLabelsTextSize(18); renderer.setOrientation(XYMultipleSeriesRenderer.Orientation.VERTICAL); XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();//设置显示数据 int length2 = titles.length; for (int i = 0; i < length2; i++) { CategorySeries series = new CategorySeries(titles[i]); double[] v = values.get(i); int seriesLength = v.length; for (int k = 0; k < seriesLength; k++) { series.add(v[k]); } dataset.addSeries(series.toXYSeries()); } return new BarChart(dataset, renderer, BarChart.Type.STACKED); }}
package com.zdst_03.acharttest; import android.content.Context; import org.achartengine.GraphicalView; import org.achartengine.chart.AbstractChart; /** * Created by ZTSD-03 on 2016/5/30. */ public class MyGraphicView extends GraphicalView { public MyGraphicView(Context context, AbstractChart chart) { super(context, chart); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int widthSpecMode=MeasureSpec.getMode(widthMeasureSpec); int widthSpecSize=MeasureSpec.getSize(widthMeasureSpec); int heightSpecMode=MeasureSpec.getMode(heightMeasureSpec); int heighSpecSize=MeasureSpec.getSize(heightMeasureSpec); if(widthSpecMode==MeasureSpec.AT_MOST&&heightSpecMode==MeasureSpec.AT_MOST){ setMeasuredDimension(600,600); } else if(widthSpecMode==MeasureSpec.AT_MOST){ setMeasuredDimension(600,heighSpecSize); } else if(heightSpecMode==MeasureSpec.AT_MOST){ setMeasuredDimension(widthSpecSize,600); } } }
最后在manifest配置achart
<activity android:name="org.achartengine.GraphicalActivity"></activity>
achartengine 绘制柱状图
最新推荐文章于 2023-01-14 11:43:23 发布