AChartEngine中组合图

来源:互联网 发布:数据转换 编辑:程序博客网 时间:2024/04/28 03:04

气泡图


首先,用组合图展现气泡,用的代码就是之前文章中用的气泡图的源码,稍加修改后,只展现行气泡:


代码:


package com.sprd.chartexample;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.chart.BarChart.Type;import org.achartengine.chart.BarChart;import org.achartengine.chart.BubbleChart;import org.achartengine.chart.CubicLineChart;import org.achartengine.chart.LineChart;import org.achartengine.chart.PointStyle;import org.achartengine.model.XYMultipleSeriesDataset;import org.achartengine.model.XYSeries;import org.achartengine.model.XYValueSeries;import org.achartengine.renderer.XYMultipleSeriesRenderer;import org.achartengine.renderer.XYSeriesRenderer;import android.app.Activity;import android.content.Intent;import android.graphics.Color;import android.graphics.Paint.Align;import android.os.Bundle;public class MainActivity extends Activity {public static final String TYPE = "type";private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 饼图// Intent pie = new APieChartExample().execute(this);// startActivity(pie);// 折线图// Intent line = new ALineChartExample().execute(this);// startActivity(line);// 柱状图// Intent bar = new ABarChartExample().execute(this);// startActivity(bar);// 构建数据// 设置图表显示的位置mRenderer.setMargins(new int[] { 30, 30, 30, 30 });// 设置图表的X轴处于水平方向还是垂直方向mRenderer.setOrientation(XYMultipleSeriesRenderer.Orientation.HORIZONTAL);mRenderer.setXTitle("时间");// 设置为X轴的标题mRenderer.setYTitle("百分比");// 设置Y轴的标题mRenderer.setAxisTitleTextSize(20);// 设置轴标题文本大小mRenderer.setChartTitle("Cpu Load");// 设置图表标题mRenderer.setChartTitleTextSize(30);// 设置图表标题文字的大小mRenderer.setLabelsTextSize(22);// 设置标签的文字大小 ,刻度文本的大小// mRenderer.setLegendTextSize(20);//设置图例文本大小mRenderer.setPointSize(1f);// 设置点的大小mRenderer.setYAxisMin(-10);// 设置y轴最小值是0mRenderer.setYAxisMax(70); // 设置Y轴最大值为100mRenderer.setYLabels(5);// 设置Y轴刻度个数(貌似不太准确)mRenderer.setYLabelsAlign(Align.RIGHT);// y轴字体对齐方式mRenderer.setYLabelsPadding(5);// y轴的间距mRenderer.setYLabelsVerticalPadding(-5); // y轴标签垂直间距mRenderer.setYLabelsAngle(-45);// 标签倾斜的角度mRenderer.setXLabelsPadding(5); // x轴标签间距mRenderer.setXAxisMax(10); // x轴最大值mRenderer.setXAxisMin(-1); // x轴最大值mRenderer.setXLabelsAngle(-45);// x标签倾斜的角度mRenderer.setXLabelsAlign(Align.CENTER);mRenderer.setShowGrid(true);// 显示网格mRenderer.setPanEnabled(false, false);// 设置拖动属性,第一个参数为左右是否可拖动,第二个参数为上下是否可拖动mRenderer.setApplyBackgroundColor(true);// 允许设置背景颜色mRenderer.setBackgroundColor(Color.BLACK);// 设置为黑色// mRenderer.setClickEnabled(true);//设置了之后,不可再拖动// mRenderer.setZoomButtonsVisible(true);//设置伸缩按钮是否可见// mRenderer.setZoomEnabled(true);// mRenderer.setExternalZoomEnabled(true);//设置是否可以向伸缩// mRenderer.setXLabels(0);Random r = new Random();int[] colors = { Color.BLUE, Color.RED, Color.GREEN, Color.YELLOW,Color.LTGRAY };// 气泡for (int i = 0; i < 1; i++) {// 线的条数,也就是对象的意思,显示在图表下,用于提示信息,比如Cpu有5个// XYSeries series = new XYSeries("cpu" + i);XYValueSeries series = new XYValueSeries("cpu" + i);for (int k = 0; k < 10; k++) {series.add(1f + k, 50, 1);}mDataset.addSeries(series);// 点的绘制进行设置XYSeriesRenderer xyRenderer = new XYSeriesRenderer();// 设置颜色xyRenderer.setColor(colors[i]);// 设置点的样式xyRenderer.setPointStyle(PointStyle.SQUARE);// 线条宽度xyRenderer.setLineWidth(3);// 是否显示值xyRenderer.setDisplayChartValues(true);// 如果显示值,字体大小xyRenderer.setChartValuesTextSize(10);// 点的形状,是空心的还是实心的xyRenderer.setFillPoints(false);// 刻度之间的距离xyRenderer.setDisplayChartValuesDistance(5);// 点与数值的距离xyRenderer.setChartValuesSpacing(10);//xyRenderer.setDisplayBoundingPoints(false);// 点的面积xyRenderer.setPointStrokeWidth(1);// 是否显示图例xyRenderer.setShowLegendItem(true);mRenderer.addSeriesRenderer(xyRenderer);}// 柱状图String[] types = new String[] { BubbleChart.TYPE };Intent intent = ChartFactory.getCombinedXYChartIntent(this, mDataset,mRenderer, types, "Weather parameters");startActivity(intent);}}


代码中用的是getCombinedXYChartIntent的方法,里面注意的地方就是types这个数组,现在我们只需要气泡,所以我们添加了BubbleChart.TYPE这个类型.之后会慢慢加上其他图,你就会发现组合图的用法其实很简单。


图:




柱状图


用的代码是之前文章中柱状图的源码,稍加修改。


package com.sprd.chartexample;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.chart.BarChart.Type;import org.achartengine.chart.BarChart;import org.achartengine.chart.BubbleChart;import org.achartengine.chart.CubicLineChart;import org.achartengine.chart.LineChart;import org.achartengine.chart.PointStyle;import org.achartengine.model.XYMultipleSeriesDataset;import org.achartengine.model.XYSeries;import org.achartengine.model.XYValueSeries;import org.achartengine.renderer.XYMultipleSeriesRenderer;import org.achartengine.renderer.XYSeriesRenderer;import android.app.Activity;import android.content.Intent;import android.graphics.Color;import android.graphics.Paint.Align;import android.os.Bundle;public class MainActivity extends Activity {public static final String TYPE = "type";private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 饼图// Intent pie = new APieChartExample().execute(this);// startActivity(pie);// 折线图// Intent line = new ALineChartExample().execute(this);// startActivity(line);// 柱状图// Intent bar = new ABarChartExample().execute(this);// startActivity(bar);// 构建数据// 设置图表显示的位置mRenderer.setMargins(new int[] { 30, 30, 30, 30 });// 设置图表的X轴处于水平方向还是垂直方向mRenderer.setOrientation(XYMultipleSeriesRenderer.Orientation.HORIZONTAL);mRenderer.setXTitle("时间");// 设置为X轴的标题mRenderer.setYTitle("百分比");// 设置Y轴的标题mRenderer.setAxisTitleTextSize(20);// 设置轴标题文本大小mRenderer.setChartTitle("Cpu Load");// 设置图表标题mRenderer.setChartTitleTextSize(30);// 设置图表标题文字的大小mRenderer.setLabelsTextSize(22);// 设置标签的文字大小 ,刻度文本的大小// mRenderer.setLegendTextSize(20);//设置图例文本大小mRenderer.setPointSize(1f);// 设置点的大小mRenderer.setYAxisMin(-10);// 设置y轴最小值是0mRenderer.setYAxisMax(70); // 设置Y轴最大值为100mRenderer.setYLabels(5);// 设置Y轴刻度个数(貌似不太准确)mRenderer.setYLabelsAlign(Align.RIGHT);// y轴字体对齐方式mRenderer.setYLabelsPadding(5);// y轴的间距mRenderer.setYLabelsVerticalPadding(-5); // y轴标签垂直间距mRenderer.setYLabelsAngle(-45);// 标签倾斜的角度mRenderer.setXLabelsPadding(5); // x轴标签间距mRenderer.setXAxisMax(10); // x轴最大值mRenderer.setXAxisMin(-1); // x轴最大值mRenderer.setXLabelsAngle(-45);// x标签倾斜的角度mRenderer.setXLabelsAlign(Align.CENTER);mRenderer.setShowGrid(true);// 显示网格mRenderer.setPanEnabled(false, false);// 设置拖动属性,第一个参数为左右是否可拖动,第二个参数为上下是否可拖动mRenderer.setApplyBackgroundColor(true);// 允许设置背景颜色mRenderer.setBackgroundColor(Color.BLACK);// 设置为黑色    mRenderer.setBarSpacing(0.5f);  //设置间隔// mRenderer.setClickEnabled(true);//设置了之后,不可再拖动// mRenderer.setZoomButtonsVisible(true);//设置伸缩按钮是否可见// mRenderer.setZoomEnabled(true);// mRenderer.setExternalZoomEnabled(true);//设置是否可以向伸缩// mRenderer.setXLabels(0);Random r = new Random();int[] colors = { Color.BLUE, Color.RED, Color.GREEN, Color.YELLOW,Color.LTGRAY };// 气泡for (int i = 0; i < 1; i++) {// 线的条数,也就是对象的意思,显示在图表下,用于提示信息,比如Cpu有5个// XYSeries series = new XYSeries("cpu" + i);XYValueSeries series = new XYValueSeries("cpu" + i);for (int k = 0; k < 10; k++) {series.add(0f + k, 50, 1);}mDataset.addSeries(series);// 点的绘制进行设置XYSeriesRenderer xyRenderer = new XYSeriesRenderer();// 设置颜色xyRenderer.setColor(colors[i]);// 设置点的样式xyRenderer.setPointStyle(PointStyle.SQUARE);// 线条宽度xyRenderer.setLineWidth(3);// 是否显示值xyRenderer.setDisplayChartValues(true);// 如果显示值,字体大小xyRenderer.setChartValuesTextSize(10);// 点的形状,是空心的还是实心的xyRenderer.setFillPoints(false);// 刻度之间的距离xyRenderer.setDisplayChartValuesDistance(5);// 点与数值的距离xyRenderer.setChartValuesSpacing(10);//xyRenderer.setDisplayBoundingPoints(false);// 点的面积xyRenderer.setPointStrokeWidth(1);// 是否显示图例xyRenderer.setShowLegendItem(true);mRenderer.addSeriesRenderer(xyRenderer);}// 柱状图for (int i = 0; i < 1; i++) {// 线的条数,也就是对象的意思,显示在图表下,用于提示信息,比如Cpu有5个XYSeries series = new XYSeries("cpu" + i+1);// XYValueSeries series = new XYValueSeries("cpu" + i);for (int k = 0; k < 10; k++) {series.add(k, r.nextInt(40));}mDataset.addSeries(series);// 点的绘制进行设置XYSeriesRenderer xyRenderer = new XYSeriesRenderer();// 设置颜色xyRenderer.setColor(colors[i+1]);// 设置点的样式xyRenderer.setPointStyle(PointStyle.SQUARE);// 线条宽度xyRenderer.setLineWidth(3);// 是否显示值xyRenderer.setDisplayChartValues(true);// 如果显示值,字体大小xyRenderer.setChartValuesTextSize(10);// 点的形状,是空心的还是实心的xyRenderer.setFillPoints(false);// 刻度之间的距离xyRenderer.setDisplayChartValuesDistance(5);// 点与数值的距离xyRenderer.setChartValuesSpacing(10);//xyRenderer.setDisplayBoundingPoints(false);// 点的面积xyRenderer.setPointStrokeWidth(1);// 是否显示图例xyRenderer.setShowLegendItem(true);mRenderer.addSeriesRenderer(xyRenderer);}String[] types = new String[] { BubbleChart.TYPE, BarChart.TYPE };Intent intent = ChartFactory.getCombinedXYChartIntent(this, mDataset,mRenderer, types, "Weather parameters");startActivity(intent);}}

只是添加了柱状图,然后显示一条数据,在types数组中添加了一个元素。然后会显示如下图所示:




perfect


线性图


同添加柱状图一样,我们只需要将我我之前文章中关于线性图的代码添加上即可。


package com.sprd.chartexample;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.chart.BarChart.Type;import org.achartengine.chart.BarChart;import org.achartengine.chart.BubbleChart;import org.achartengine.chart.CubicLineChart;import org.achartengine.chart.LineChart;import org.achartengine.chart.PointStyle;import org.achartengine.model.XYMultipleSeriesDataset;import org.achartengine.model.XYSeries;import org.achartengine.model.XYValueSeries;import org.achartengine.renderer.XYMultipleSeriesRenderer;import org.achartengine.renderer.XYSeriesRenderer;import android.app.Activity;import android.content.Intent;import android.graphics.Color;import android.graphics.Paint.Align;import android.os.Bundle;public class MainActivity extends Activity {public static final String TYPE = "type";private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 饼图// Intent pie = new APieChartExample().execute(this);// startActivity(pie);// 折线图// Intent line = new ALineChartExample().execute(this);// startActivity(line);// 柱状图// Intent bar = new ABarChartExample().execute(this);// startActivity(bar);// 构建数据// 设置图表显示的位置mRenderer.setMargins(new int[] { 30, 30, 30, 30 });// 设置图表的X轴处于水平方向还是垂直方向mRenderer.setOrientation(XYMultipleSeriesRenderer.Orientation.HORIZONTAL);mRenderer.setXTitle("时间");// 设置为X轴的标题mRenderer.setYTitle("百分比");// 设置Y轴的标题mRenderer.setAxisTitleTextSize(20);// 设置轴标题文本大小mRenderer.setChartTitle("Cpu Load");// 设置图表标题mRenderer.setChartTitleTextSize(30);// 设置图表标题文字的大小mRenderer.setLabelsTextSize(22);// 设置标签的文字大小 ,刻度文本的大小// mRenderer.setLegendTextSize(20);//设置图例文本大小mRenderer.setPointSize(1f);// 设置点的大小mRenderer.setYAxisMin(-10);// 设置y轴最小值是0mRenderer.setYAxisMax(70); // 设置Y轴最大值为100mRenderer.setYLabels(5);// 设置Y轴刻度个数(貌似不太准确)mRenderer.setYLabelsAlign(Align.RIGHT);// y轴字体对齐方式mRenderer.setYLabelsPadding(5);// y轴的间距mRenderer.setYLabelsVerticalPadding(-5); // y轴标签垂直间距mRenderer.setYLabelsAngle(-45);// 标签倾斜的角度mRenderer.setXLabelsPadding(5); // x轴标签间距mRenderer.setXAxisMax(10); // x轴最大值mRenderer.setXAxisMin(-1); // x轴最大值mRenderer.setXLabelsAngle(-45);// x标签倾斜的角度mRenderer.setXLabelsAlign(Align.CENTER);mRenderer.setShowGrid(true);// 显示网格mRenderer.setPanEnabled(false, false);// 设置拖动属性,第一个参数为左右是否可拖动,第二个参数为上下是否可拖动mRenderer.setApplyBackgroundColor(true);// 允许设置背景颜色mRenderer.setBackgroundColor(Color.BLACK);// 设置为黑色mRenderer.setBarSpacing(0.5f); // 设置间隔// mRenderer.setClickEnabled(true);//设置了之后,不可再拖动// mRenderer.setZoomButtonsVisible(true);//设置伸缩按钮是否可见// mRenderer.setZoomEnabled(true);// mRenderer.setExternalZoomEnabled(true);//设置是否可以向伸缩// mRenderer.setXLabels(0);Random r = new Random();int[] colors = { Color.BLUE, Color.RED, Color.GREEN, Color.YELLOW,Color.LTGRAY };// 气泡for (int i = 0; i < 1; i++) {// 线的条数,也就是对象的意思,显示在图表下,用于提示信息,比如Cpu有5个// XYSeries series = new XYSeries("cpu" + i);XYValueSeries series = new XYValueSeries("cpu" + i);for (int k = 0; k < 10; k++) {series.add(0f + k, 50, 1);}mDataset.addSeries(series);// 点的绘制进行设置XYSeriesRenderer xyRenderer = new XYSeriesRenderer();// 设置颜色xyRenderer.setColor(colors[i]);// 设置点的样式xyRenderer.setPointStyle(PointStyle.SQUARE);// 线条宽度xyRenderer.setLineWidth(3);// 是否显示值xyRenderer.setDisplayChartValues(true);// 如果显示值,字体大小xyRenderer.setChartValuesTextSize(10);// 点的形状,是空心的还是实心的xyRenderer.setFillPoints(false);// 刻度之间的距离xyRenderer.setDisplayChartValuesDistance(5);// 点与数值的距离xyRenderer.setChartValuesSpacing(10);//xyRenderer.setDisplayBoundingPoints(false);// 点的面积xyRenderer.setPointStrokeWidth(1);// 是否显示图例xyRenderer.setShowLegendItem(true);mRenderer.addSeriesRenderer(xyRenderer);}// 柱状图for (int i = 0; i < 1; i++) {// 线的条数,也就是对象的意思,显示在图表下,用于提示信息,比如Cpu有5个XYSeries series = new XYSeries("cpu" + i + 1);// XYValueSeries series = new XYValueSeries("cpu" + i);for (int k = 0; k < 10; k++) {series.add(k, r.nextInt(40));}mDataset.addSeries(series);// 点的绘制进行设置XYSeriesRenderer xyRenderer = new XYSeriesRenderer();// 设置颜色xyRenderer.setColor(colors[i + 1]);// 设置点的样式xyRenderer.setPointStyle(PointStyle.SQUARE);// 线条宽度xyRenderer.setLineWidth(3);// 是否显示值xyRenderer.setDisplayChartValues(true);// 如果显示值,字体大小xyRenderer.setChartValuesTextSize(10);// 点的形状,是空心的还是实心的xyRenderer.setFillPoints(false);// 刻度之间的距离xyRenderer.setDisplayChartValuesDistance(5);// 点与数值的距离xyRenderer.setChartValuesSpacing(10);//xyRenderer.setDisplayBoundingPoints(false);// 点的面积xyRenderer.setPointStrokeWidth(1);// 是否显示图例xyRenderer.setShowLegendItem(true);mRenderer.addSeriesRenderer(xyRenderer);}// 线性图for (int i = 0; i < 2; i++) {// 线的条数,也就是对象的意思,显示在图表下,用于提示信息,比如Cpu有5个XYSeries series = new XYSeries("cpu" + (i + 2));for (int k = 0; k < 10; k++) {series.add(k, r.nextInt(50));}mDataset.addSeries(series);// 点的绘制进行设置XYSeriesRenderer xyRenderer = new XYSeriesRenderer();// 设置颜色xyRenderer.setColor(colors[i+2]);// 设置点的样式xyRenderer.setPointStyle(PointStyle.SQUARE);// 线条宽度xyRenderer.setLineWidth(3);// 是否显示值xyRenderer.setDisplayChartValues(true);// 如果显示值,字体大小xyRenderer.setChartValuesTextSize(10);// 点的形状,是空心的还是实心的xyRenderer.setFillPoints(false);// 刻度之间的距离xyRenderer.setDisplayChartValuesDistance(5);// 点与数值的距离xyRenderer.setChartValuesSpacing(10);//xyRenderer.setDisplayBoundingPoints(false);// 点的面积xyRenderer.setPointStrokeWidth(1);// 是否显示图例xyRenderer.setShowLegendItem(true);mRenderer.addSeriesRenderer(xyRenderer);}String[] types = new String[] { BubbleChart.TYPE, BarChart.TYPE,LineChart.TYPE,LineChart.TYPE };Intent intent = ChartFactory.getCombinedXYChartIntent(this, mDataset,mRenderer, types, "Weather parameters");startActivity(intent);}}

是不是有点so easy的感觉。


图:



其实事件本来就很简单。DONE!

0 0
原创粉丝点击