使用achartengine出现了一个奇怪的问题

君君要上天 2014-05-19 06:48:42
我用achartengine画柱状图时候出现一个很奇怪的问题。当只有一条数据时候,不显示柱状条,只显示头上的数值。两条以上数据时没有问题。
...全文
86 点赞 收藏 2
写回复
2 条回复
君君要上天 2014年05月19日
有人吗?求解释啊。
回复 点赞
君君要上天 2014年05月19日
public View initChart(double[] yvalues,String[] xvalues){
	 // 用于 保存点集数据 ,包括每条曲线的X,Y坐标
	XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();//使用与柱状图
	 RangeCategorySeries series = new RangeCategorySeries("步数");// 括号内为图表底部的文字
	 for (int k = 0; k < yvalues.length; k++) {
	  series.add(0, yvalues[k]);
	 }
	 dataset.addSeries(series.toXYSeries());
	 int[] colors = new int[] { Color.BLACK };// 青色蓝绿色
	 XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
	 setChartSettings(renderer, "历史记录", "日期",
	   "步数", 0.5, 7.5, 0, maxstep+10, Color.BLACK, Color.LTGRAY,xvalues);// 画笔的颜色预先定义成浅灰色
	 return ChartFactory.getRangeBarChartView(this, dataset, renderer,
	   Type.DEFAULT);
}
protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
      XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
      renderer.setAxisTitleTextSize(25);
      renderer.setChartTitleTextSize(35);
      renderer.setLabelsTextSize(25);
      renderer.setLegendTextSize(15);
      int length = colors.length;
      for (int i = 0; i < length; i++) {
        SimpleSeriesRenderer r = new SimpleSeriesRenderer();
        r.setColor(colors[i]);
        renderer.addSeriesRenderer(r);
      }
      return renderer;
    }



  protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,
        String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor,
        int labelsColor,String[] xvalues) {
	  renderer.setLabelsColor(Color.BLACK);
	  renderer.setXLabelsColor(Color.BLACK);
	  //renderer.setYLabelsColor(1,Color.BLACK);
      renderer.setChartTitle(title);
      renderer.setXTitle(xTitle);
      renderer.setYTitle(yTitle);
      renderer.setXAxisMin(xMin);
      renderer.setXAxisMax(xMax);
      renderer.setYAxisMin(yMin);
      renderer.setYAxisMax(yMax);
      renderer.setAxesColor(axesColor);
      renderer.setLabelsColor(labelsColor);
      //数据大于七条,则X轴方向可以滑动
      boolean b = false;
      if(xvalues.length>7)
    	  b = true;
      renderer.setBarSpacing(0.1);//设置间距
 	 renderer.setXLabels(0);//设置 X 轴不显示数字(改用我们手动添加的文字标签));//设置X轴显示的刻度标签的个数
 	 renderer.setMarginsColor(Color.WHITE);//外部颜色
 	 renderer.setBackgroundColor(Color.WHITE);//内部颜色
 	 for(int i=0;i<xvalues.length;i++)
 	 renderer.addXTextLabel(i+1,xvalues[i]);
 	 renderer.setYLabels(10);// 设置合适的刻度,在轴上显示的数量是 MAX / labels
 	 renderer.setMargins(new int[] { 30, 70, 10, 0 });//图形 4 边距 设置4边留白  设置图表的外边框
 	 renderer.setYLabelsAlign(Align.RIGHT);//设置y轴显示的分列,默认是 Align.CENTER
 	 renderer.setPanEnabled(b, false);//设置x方向可以滑动,y方向不可以滑动
 	 renderer.setZoomEnabled(false,false);//设置x,y方向都不可以放大或缩小
 	 SimpleSeriesRenderer r = renderer.getSeriesRendererAt(0);
 	 r.setDisplayChartValues(true);//设置是否在主题上方显示值
 	 r.setChartValuesTextSize(40);//柱体上方字的大小r.
 	 r.setChartValuesSpacing(5);//柱体上方字的与柱体顶部的距离
 	 r.setGradientEnabled(true);
 	 r.setGradientStart(0, Color.LTGRAY);
 	 r.setGradientStop((maxstep+10)/2, Color.GREEN);
      }
回复 点赞
发动态
发帖子
Android
创建于2009-10-09

4.6w+

社区成员

9.0w+

社区内容

移动平台 Android
社区公告
暂无公告