2016-08-04 6 views
1

würde Ich mag gestapelte Flächendiagramm erhalten mit Diagramm in ersten Punkt beginnen und wie hier im letzten Punkt hinzu: enter image description hereJFree: Gestapelte Flächendiagramm weiter Malerei nach dem letzten Punkt und vor dem ersten

Aber Bild aus Punkt der ist Bereich wie hier: enter image description here

Wie kann ich gestapelter Bereich genau ab dem ersten Punkt beginnen und genau im letzten Punkt abschließen? (Verschiedene Manipulationen mit dateAxis.setLowerMargin (-0.075D) dateAxis.setUpperMargin (-0.075D) helfen nicht)

JFreeChart stackedAreaChart = ChartFactory.createStackedAreaChart(name, X_AXIS_TITLE, Y_AXIS_TITLE, dataset, 
      PlotOrientation.VERTICAL, true, true, false); 
    CategoryPlot plot = stackedAreaChart.getCategoryPlot(); 
    CategoryAxis dateAxis = plot.getDomainAxis(); 
    dateAxis.setLowerMargin(-0.075D); 
    dateAxis.setUpperMargin(-0.075D); 
    dateAxis.setCategoryMargin(0.0D); 
    StackArea renderer = new StackArea(); 

    dateAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); 
    ... 

    plot.setRenderer(renderer); 
    renderer.setBaseItemLabelGenerator(new LabelGenerator()); 
    renderer.setBaseItemLabelsVisible(true); 
    ... 
    plot.setRenderer(renderer); 
    plot.setAxisOffset(new RectangleInsets(5.0, 1.0, 5.0, 1.0));   

    ValueAxis rangeAxis = plot.getRangeAxis(); 
    NumberAxis axis2 = new NumberAxis(Y_AXIS_TITLE);  
    axis2.setAutoRangeIncludesZero(false); 
    axis2.setLabelFont(rangeAxis.getLabelFont()); 
    axis2.setTickLabelFont(rangeAxis.getTickLabelFont()); 
    ... 
    plot.setRangeAxis(1, axis2); 
    plot.setRangeAxisLocation(1, AxisLocation.TOP_OR_RIGHT); 
    plot.mapDatasetToRangeAxes(0, Arrays.asList(0, 1)); 

    setAxisColor(rangeAxis, axisColor); 
     rangeAxis.setTickLabelPaint(ColorUtils.VaadinAWTColor(params.getColorParams().getFontSlideColor())); 
    rangeAxis.setLabelPaint(ColorUtils.VaadinAWTColor(params.getColorParams().getFontSlideColor())); 
+1

die Frage ist viel zu allgemein. Wenn Sie nicht genau erklären können, was genau Sie erhalten möchten, und der Code nicht zur Verfügung gestellt wird - könnte es als geschlossen betrachtet werden. Bitte bearbeiten Sie Ihre Frage in Übereinstimmung mit den [Best Practices] (http://stackoverflow.com/help/how-to-ask) – Farside

Antwort

1

Sie können den gewünschten Effekt zu erhalten, indem die Standardränder auf dem Chart mit CategoryAxis, dh nicht ändern Sie sie wie die Demo tut.

CategoryAxis categoryaxis = categoryplot.getDomainAxis(); 
//categoryaxis.setLowerMargin(0.0D); 
//categoryaxis.setUpperMargin(0.0D); 
//categoryaxis.setCategoryMargin(0.0D); 

image1

ich gestapelt Bereich müssen für den ersten Punkt-genau aus C1 in Ihrem Bild, nicht früher beginnen und stoppen auf C8, später nicht.

Möglicherweise müssen Sie die Werte anpassen, um dem gewünschten Ergebnis näher zu kommen.

categoryaxis.setLowerMargin(-0.075D); 
categoryaxis.setUpperMargin(-0.075D); 
categoryaxis.setCategoryMargin(0.0D); 

image2

+0

Vielen Dank für die Antwort, aber in diesem Fall werde ich nur eine Lücke zwischen Y- Achsen und Start der gestapelten Fläche. Ich brauche eine gestapelte Fläche für den ersten Punkt - genau von C1 in deinem Bild, nicht früher, und halt auf C8, nicht später – user6676850

+0

Ich habe oben ausgearbeitet. – trashgod

+0

Leider wurde nach dem Hinzufügen nichts geändert: categoryaxis.setLowerMargin (-0.075D); Kategorieaxis.setUpperMargin (-0.075D); Kategorieaxis.setCategoryMargin (0.0D); – user6676850

Verwandte Themen