在项目中使用的,在这边做个记录:
private void showChart(LinearLayout barChart) {
// String[] titles = new String[]{"2012", "2013"};
String[] titles = new String[]{"2013"};
List<double[]> values = new ArrayList<double[]>();
values.add(new double[]{30, 73, 24, 54, 90, 20, 12, 60,
95, 50, 11, 25, 30, 73, 24, 54, 90, 20, 12, 60,
95, 50, 11, 25, 30, 73, 24, 54, 90, 20, 12, 60});
// int[] colors = new int[]{Color.RED, Color.BLUE};
int[] colors = new int[]{Color.parseColor(WaterConstants.ZHUXINGTU_COLOR_ONE)};//柱形图颜色设置
XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);// 柱形图颜色设置
setChartSettings(renderer, "年降水量", "省份", "降水量数量", 0.5, 32.5, 0, 100,
Color.parseColor("#000000"), Color.parseColor("#000000"));// 设置柱形图标题,横轴(X轴)、纵轴(Y轴)、最小的伸所刻度、最大的伸所刻度
// renderer.getSeriesRendererAt(0).setDisplayChartValues(true);// 在第0条柱形图上显示数据
// renderer.getSeriesRendererAt(1).setDisplayChartValues(true);// 在第1条柱形图上显示数据
renderer.setXLabels(titles.length);
renderer.setYLabels(5);
renderer.setXLabelsAlign(Paint.Align.LEFT);// 数据从左到右显示
renderer.setYLabelsAlign(Paint.Align.LEFT);
renderer.setPanEnabled(true, false);
// for (int i = 0; i < xTitle.length; i++) {
// renderer.addXTextLabel(i + 1, xTitle[i]);
// }
renderer.setZoomEnabled(true);
renderer.setZoomButtonsVisible(false);// 显示放大缩小功能按钮
renderer.setZoomRate(1.1f);
renderer.setMargins(new int[]{25, 35, 20, 0}); // 图形4边距
renderer.setChartTitleTextSize(30);//设置图表标题字体大小,我这边设置0是把标题隐藏掉
renderer.setBarSpacing(0.5f);// 柱形图间隔
renderer.setXLabelsAngle(-45f);// 设置字体倾斜度
renderer.setXLabelsAlign(Paint.Align.CENTER);//标签名称在中间位置
renderer.setXLabelsPadding(10);//设置X标签名称padding位置
renderer.setXLabelsColor(Color.BLACK);//设置X标签名称的颜色
renderer.setXRoundedLabels(true);
renderer.setYLabelsColor(0, Color.BLACK);//设置Y标签名称的颜色
renderer.setYLabelsAlign(Paint.Align.RIGHT);//设置Y轴标签的位置
renderer.setYLabelsPadding(10);//设置Y标签名称padding位置
// if (mChartView == null) {// 构建柱形图
// mChartView = ChartFactory.getBarChartView(mView.getContext(),
// buildBarDataset(titles, values), renderer, Type.DEFAULT);
// renderer.setClickEnabled(true);
//
// //renderer.set
// barChart.addView(mChartView, new LayoutParams(
// LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
// } else
// mChartView.repaint();
}
/**
* @param colors
* @return
*/
private XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(16);// 坐标轴标题字体大小:16
renderer.setChartTitleTextSize(20);// 图表标题字体大小:20
renderer.setLabelsTextSize(15);// 轴标签字体大小: 15
renderer.setLegendTextSize(15);// 图例字体大小: 15
// renderer.setBackgroundColor(Color.parseColor("#A7CFE8"));
renderer.setMarginsColor(Color.parseColor("#ffffff"));//更改图的背景颜色
int length = colors.length;
for (int i = 0; i < length; i++) {
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(colors[i]);
renderer.addSeriesRenderer(r);
}
return renderer;
}
/**
* @param renderer
* @param title 柱形图标题
* @param xTitle 横轴(X轴)
* @param yTitle 纵轴(Y轴)
* @param xMin X轴最小的伸所刻度
* @param xMax X轴最大的伸所刻度
* @param yMin Y轴最小的伸所刻度
* @param yMax Y轴最大的伸所刻度
* @param axesColor 设置y轴和X轴的颜色
* @param labelsColor 设置y轴标签和X轴标签,字体的颜色及图名称的颜色
*/
private void setChartSettings(XYMultipleSeriesRenderer renderer,
String title, String xTitle, String yTitle, double xMin,
double xMax, double yMin, double yMax, int axesColor,
int labelsColor) {
renderer.setChartTitle(title);//柱形图标题
renderer.setXTitle(xTitle);//横轴(X轴)名称
renderer.setYTitle(yTitle);//纵轴(Y轴)名称
renderer.setXAxisMin(xMin);//X轴最小的伸所刻度
renderer.setXAxisMax(xMax);//X轴最大的伸所刻度
renderer.setYAxisMin(yMin);//Y轴最小的伸所刻度
renderer.setYAxisMax(yMax);//Y轴最大的伸所刻度
renderer.setAxesColor(axesColor);//设置y轴和X轴的颜色
renderer.setLabelsColor(labelsColor);//设置y轴标签和X轴标签,字体的颜色及图名称的颜色
}
/**
* @param titles
* @param values 柱形图的数据源和饼图差不多,也是由一些键值对组成
* @return
*/
private XYMultipleSeriesDataset buildBarDataset(String[] titles,
List<double[]> values) {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for (int i = 0; i < length; 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 dataset;
}