解决方案 »

  1.   

    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);
          }