achartengine两个条形图在一个图表中

时间:2014-02-18 17:07:15

标签: android graph

我有一个问题,我想在图表中制作两个图表。 这意味着一个条形图从0开始,一个图形从100开始。 换句话说,例如,一个图0~20并且在相同的垂直值中,80~100。

现在还有一个问题,我的y轴变量没有完全显示。 有没有什么办法解决这一问题? 谢谢。

这是我的代码:

  public Intent execute(Context context) {
    double[] minValues = new double[] { 0,0,0,0,0,0,0,0,0,0,0,0 };
    double[] maxValues = new double[] { 7, 12, 24, 28, 33, 35, 37, 36, 28, 19, 11, 4 };
    double[] minValues2 = new double[] { 80,70,60,30,20,10,30,40,50,60,80,90 };
    double[] maxValues2 = new double[] {100, 100, 100, 100, 100, 100, 100, 100, 100,100, 100,100 };

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    RangeCategorySeries series = new RangeCategorySeries("Temperature");
    RangeCategorySeries series2 = new RangeCategorySeries("Temperature2");
    int length = minValues.length;
    for (int k = 0; k < length; k++) {
      series.add(minValues[k], maxValues[k]);
    }
    for (int k = 0; k < length; k++) {
        series2.add(minValues[k], maxValues[k]);
      }
    dataset.addSeries(series.toXYSeries());
    dataset.addSeries(series2.toXYSeries());
    int[] colors = new int[] { Color.CYAN };
    XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
    renderer.setOrientation(Orientation.VERTICAL);

    setChartSettings(renderer, "Monthly temperature range", "", "Percentage", 0.5, 12.5,
        0, 100, Color.GRAY, Color.LTGRAY);
    renderer.setBarSpacing(0.5);
    renderer.setXLabels(0);
    renderer.setYLabels(10);
    renderer.addXTextLabel(0.9, "Var1");
    renderer.addXTextLabel(1.9, "Var2");
    renderer.addXTextLabel(2.9, "Var3");
    renderer.addXTextLabel(3.9, "Var4");
    renderer.addXTextLabel(4.9, "Var5");
    renderer.addXTextLabel(5.9, "Var6");
    renderer.addXTextLabel(6.9, "Var7");
    renderer.addXTextLabel(7.9, "Var8");
    renderer.addXTextLabel(8.9, "Var9");
    renderer.addXTextLabel(9.9, "Var10");
    renderer.addXTextLabel(10.9, "Var11");
    renderer.addXTextLabel(11.9, "Var12");
    renderer.setYLabelsPadding(30);
    renderer.setYLabelsAlign(Align.LEFT);
    double xMin=0;
    double xMax=100;
    double ymin=0;
    double ymax=100;
    double[] limits = new double[] {xMin,xMax,ymin,ymax};
    renderer.setMargins(new int[] {30, 70, 10, 0});
    renderer.setYLabelsAlign(Align.RIGHT);

    renderer.setPanLimits(limits);
    SimpleSeriesRenderer r = renderer.getSeriesRendererAt(0);
    r.setDisplayChartValues(true);
    r.setChartValuesTextSize(12);
    r.setChartValuesSpacing(3);
    r.setGradientEnabled(true);
    r.setGradientStart(-20, Color.BLUE);
    r.setGradientStop(20, Color.GREEN);
    return ChartFactory.getRangeBarChartIntent(context, dataset, renderer, Type.DEFAULT,
        "Temperature range");

显示错误。 有谁可以帮忙吗? 谢谢。!

1 个答案:

答案 0 :(得分:1)

设置每个轴(0或1)的渲染元素是您想要做的:

        renderer.setYTitle(cUnits,0);

    renderer.setLabelsColor(Color.WHITE);
    renderer.setXLabelsColor(Color.GREEN);
    renderer.setYLabelsColor(0, colors[0]);   <! -- left axis -->
    renderer.setYLabelsColor(1, colors[1]);   <! -- right axis -->

    renderer.setYTitle(dunits, 1);
    renderer.setYAxisAlign(Align.RIGHT, 1);
    renderer.setYLabelsAlign(Align.RIGHT, 1);