Hallo,
ich habe jetzt die letzten paar Tage mit jFreechart (1.0.1) herumprobiert - leider kann ich nur diese etwas ältere Version verwenden - und versucht, ein Diagramm meinen Ansprüchen nach anzupassen.
So sieht es derzeit aus. So hätte ich es gerne:
Was ich zwischen ist und soll gerne ändern würde ist folgendes:
Die Beschriftung der Achsen soll in dem gleichen dunkel-grau sein wie auch die Achsen selbst.
Das Raster hinter den Balken und der Rahmen um das Diagramm sollte durchgezogen sein und in der gleichen Farbe wie auch die Achsen.
Die Balken selbst sollen keine Border haben.
Die Balken sollten 75px breit sein.
Nice to have wäre:
Die y-Achsen-Beschriftung oberhalb der y-Achse
Die Umrandung um die Farben der Legende weg,
Die Farbblöcke etwas größer.
Könntet ihr mir da bitte helfen? Ich habe da schon etliches versucht zu ergooglen, in der API gesucht, aber ich finde keine passenden Methoden.
Hier mal mein Quellcode (ist nicht wirklich schön, aber da zu Testzwecken noch in keine speziellen Methoden verpackt,...):
Könnt ihr mir bitte sagen, mit welchen Methoden/wie ich das ganze so formatieren kann, wie ich es gerne hätte?
Vielen Dank und viele Grüße,
Dirk
ich habe jetzt die letzten paar Tage mit jFreechart (1.0.1) herumprobiert - leider kann ich nur diese etwas ältere Version verwenden - und versucht, ein Diagramm meinen Ansprüchen nach anzupassen.

So sieht es derzeit aus. So hätte ich es gerne:

Was ich zwischen ist und soll gerne ändern würde ist folgendes:
Die Beschriftung der Achsen soll in dem gleichen dunkel-grau sein wie auch die Achsen selbst.
Das Raster hinter den Balken und der Rahmen um das Diagramm sollte durchgezogen sein und in der gleichen Farbe wie auch die Achsen.
Die Balken selbst sollen keine Border haben.
Die Balken sollten 75px breit sein.
Nice to have wäre:
Die y-Achsen-Beschriftung oberhalb der y-Achse
Die Umrandung um die Farben der Legende weg,
Die Farbblöcke etwas größer.
Könntet ihr mir da bitte helfen? Ich habe da schon etliches versucht zu ergooglen, in der API gesucht, aber ich finde keine passenden Methoden.
Hier mal mein Quellcode (ist nicht wirklich schön, aber da zu Testzwecken noch in keine speziellen Methoden verpackt,...):
Code:
class StackBar {
public CategoryDataset createDataset() {
double[][] data = new double[][]{
{370,300}, // orangene Werte
{0,50}, // dunkel-blaue Werte
{0,20}, // hell-blaue Werte
};
String[] achsen = new String[] {"Alt", "Neu"};
String[] leg = new String[] {"Wert 1", "Wert 2", "Wert 3"};
return DatasetUtilities.createCategoryDataset(leg, achsen, data);
}
public JFreeChart createChart(final CategoryDataset dataset) {
final JFreeChart chart = ChartFactory.createStackedBarChart(
null, null, null,
dataset, PlotOrientation.VERTICAL, true, true, false);
chart.setBackgroundPaint(new Color(249, 231, 236));
CategoryPlot plot = chart.getCategoryPlot();
plot.getRenderer().setSeriesPaint(0, new Color(237, 100, 202));
plot.getRenderer().setSeriesPaint(1, new Color(1, 207, 38));
plot.getRenderer().setSeriesPaint(2, new Color(24, 24, 24));
plot.setDomainGridlineStroke(new BasicStroke(2));
plot.setOutlinePaint(new Color(137,138,140));
return chart;
}
class Blubb {
public static void main(...) {
StackBar sb = new StackBar();
CategoryDataset dataset = sb.createDataset();
JFreeChart chart = sb.createChart(dataset);
Plot plot = chart.getPlot();
chart.setBackgroundPaint(new Color(238,238,250));
plot.setBackgroundPaint(new Color(238,238,250));
chart.setBorderPaint(new Color(137,138,140));
chart.getLegend().setPosition(RectangleEdge.RIGHT);
chart.getLegend().setVerticalAlignment(VerticalAlignment.CENTER);
chart.getLegend().setBackgroundPaint(new Color(238,238,250));
chart.getLegend().setBorder(BlockBorder.NONE);
ChartPanel chartPanel = new ChartPanel(chart);
File file = new File("D:\\bla.png");
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
try {
ChartUtilities.saveChartAsPNG(file, chart, 500, 270);
} catch(IOException e) {
System.out.println("Fehler mit Grafik");
}
}
Könnt ihr mir bitte sagen, mit welchen Methoden/wie ich das ganze so formatieren kann, wie ich es gerne hätte?
Vielen Dank und viele Grüße,
Dirk