开源代码 链接:https://github.com/jondwillis/AChartEngine/tree/master/achartengine
设置Linechart Point style 设置为圆点 实心
XYSeriesRenderer r = new XYSeriesRenderer();

r.setPointStyle(PointStyle.CIRCLE);
r.setFillPoints(true);

动态加载数据 判断边界问题

在graphicView 加入onTouch事件

XYChart xyChart = (XYChart)dlcChart.getChart();
int scale = xyChart.getRenderer().getScalesCount();
XYMultipleSeriesRenderer render = xyChart.getRenderer();
for(int i = 0;i<scale;i++){
double x_max = render.getXAxisMax(i);
double x_min = render.getXAxisMin(i);
Log.i(“x_max”, x_max+”");
Log.i(“x_min”, x_min+”");
}
return super.onTouchEvent(event);

根据最小与最大判断 x轴是否超过目的值,后判断是否加载数据

填充线性数据以下的内容

XYSeriesRenderer xysRenderer = ((XYSeriesRenderer) renderer.getSeriesRendererAt(i));
xysRenderer.setDisplayChartValues(false);

//边界以上
XYSeriesRenderer.FillOutsideLine fosline = new FillOutsideLine(FillOutsideLine.Type.BOUNDS_ABOVE);

fosline.setColor(colors[i]);
xysRenderer.addFillOutsideLine(fosline);

//圆饼和柱数据,才有的渐变效果 线的没有

r.setGradientEnabled(true);
r.setGradientStart(0, Color.BLUE);
r.setGradientStop(0, Color.GREEN);

//设置显示多少条轴

r.setXLables(int count)

//是否显示网格

r.setShowGrid(true);

 

//设置图表的背景与边缘的背景

renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.argb(100, 100, 100, 100));
renderer.setMarginsColor(Color.argb(100, 100, 100, 100));

 

//圆滑的线图 0-0.5f调解圆滑度
CubicLineChart chart = new CubicLineChart(buildBarDataset(titles, values), renderer,0.2f);

 

//achartEngine 点击修改数据的例子 有注释

百度网盘 http://pan.baidu.com/s/1c0mXXdu

/**
*
* @param title
* @param values values 数据是根据title对应的顺序对应输入想对应的 数据 集合
* @return
*/
private XYMultipleSeriesDataset buildBarDataset(String[]title,List<double[]>values){
//xy轴多系列数据集合
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
//获取输入的标题数量(也就是数据组数)
int length = title.length;
for(int i = 0;i<length;i++){
//根据title 创建类别系列
CategorySeries series = new CategorySeries(title[i]);
//获取对应标题的数据组
double []v = values.get(i);
//获取该数据组的长度
int seriesLength = v.length;
for (int j = 0; j < v.length; j++) {
//添加数据对 类别系列中
series.add(v[j]);
}
//添加数据到 xy轴多系列数据集合
dataset.addSeries(series.toXYSeries());
}
return dataset;
}
private XYMultipleSeriesRenderer buindBarRenderer(int []colors) {
//x y 轴 多 系 列 渲 染 是(多系列 是指多个数据队列,一个图中可能不仅仅是一组数据,可能有多组数据)
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
//设置 轴标题 的 字 体大小
renderer.setAxisTitleTextSize(16);
//设置表标题字体的大小
renderer.setChartTitleTextSize(20);
//设置标签字体大小 (例如 x y轴 的上的数据,或说明);
renderer.setLabelsTextSize(15);
//设置说明的字体大小(多组数据 时需要说明那一线数据是谁的)
renderer.setLegendTextSize(15);
//设置间距
renderer.setMargins(new int[]{20,60,40,10});
//获取输入多少种颜色 (每种颜色对应一组数据,需要在图表的上说明那种颜色对应那组数据)
int length = colors.length;
for(int i = 0;i <length;i++){
//xy轴单系列渲染
XYSeriesRenderer r = new XYSeriesRenderer();
//设置该系列的颜色
r.setColor(colors[i]);
//添加到xy轴多系列中去
renderer.addSeriesRenderer(r);
}
return renderer;
}
private void setChartSetting(XYMultipleSeriesRenderer renderer,
String title,String xTitle,String yTitle,
double xMin,double xMax,double yMin,double yMax,
int axesColor,int lablesColor){
////设置 chart 的标题
renderer.setChartTitle(title);
//设置 xy多渲染 x 的标题
renderer.setXTitle(xTitle);
//设置 xy多渲染 y 的标题
renderer.setYTitle(yTitle);

//设置x轴的最小值
renderer.setXAxisMin(xMin);
//设置x轴的最大值
renderer.setXAxisMax(xMax);
//设置Y轴的最小值
renderer.setYAxisMin(yMin);
//设置y轴的最大值
renderer.setYAxisMax(yMax);
//设置轴的颜色
renderer.setAxesColor(axesColor);
//设置标签的颜色
renderer.setLabelsColor(lablesColor);
// 填充屏幕
renderer.setFitLegend(true);
//是否可以滚动
renderer.setInScroll(false);
// 设置可移动
renderer.setPanEnabled(false, false);
//是否可点击
renderer.setClickEnabled(true);
// 是否显示坐标上的标签
renderer.setShowLabels(true);
renderer.setShowLegend(false);// 显示图例

//设置显示多少条轴

renderer.setXLabels(0);
renderer.setYLabels(15);
//是否显示网格
renderer.setShowGrid(true);
//x轴上的标签对齐
renderer.setXLabelsAlign(Align.LEFT);
//y轴上的标签对齐
renderer.setYLabelsAlign(Align.RIGHT);
if(xMax-0.5 == 7){
renderer.addXTextLabel(1, “Sun “);
renderer.addXTextLabel(2, “Mon “);
renderer.addXTextLabel(3, “Tues “);
renderer.addXTextLabel(4, “Wed “);
renderer.addXTextLabel(5, “Thur “);
renderer.addXTextLabel(6, “Fri “);
renderer.addXTextLabel(7, “Sat “);
}
else if(xMax-0.5 == 12){
renderer.addXTextLabel(1, “Jan. “);
renderer.addXTextLabel(2, “Feb. “);
renderer.addXTextLabel(3, “Mar. “);
renderer.addXTextLabel(4, “Apr. “);
renderer.addXTextLabel(5, “May. “);
renderer.addXTextLabel(6, “Jun. “);
renderer.addXTextLabel(7, “Jul. “);
renderer.addXTextLabel(8, “Aug. “);
renderer.addXTextLabel(9, “Sep. “);
renderer.addXTextLabel(10, “Oct. “);
renderer.addXTextLabel(11, “Nov. “);
renderer.addXTextLabel(12, “Dec. “);
}
else{
for (int i = 1; i < 32; i++) {
renderer.addXTextLabel(i, i+” “);
}
}

//设置缩放比例
renderer.setZoomRate(0f);
//是否可缩放
renderer.setZoomEnabled(false);
//bar间距
renderer.setBarSpacing(0.5f);
}

創作者介紹

資訊園

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()