图表引擎 两个条形图合二为一



我有一个问题,我想在一个图中制作两个图。这意味着一个条形图从 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");

它的显示错误。有没有人可以帮忙?谢谢。!

为每个轴(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);

最新更新