Hallo Zusammen,
ich hoffe hier kennt sich jemand mit der JFreeChart Bibliothek aus ansonsten bitte an das richtige Forum verweisen.
Jedenfalls ergibt der Teil hier unten nicht das was ich will und zwar werden die Achsen nicht entsprechend der Kurven farblich markiert sondern total sondersam. Ich weiß nicht wo die Farbe cyan herkommt!!! Muss irgendwie eine zufallsgenerierte Farbe sein.
X, Y und Z sind richtig gemappt und farblich markiert, TX TY und TZ sind irgendwie falsch, da die Achse von TX schwarz ist, die kurve dazu aber gelb (orange) markiert ist. Genauso mit TY hier ist die entsprechende kurve magenta, aber die achse gelb(orange), zu guter letzt ist TZ als Linie cyan aber in der achse magenta. alles irgendwie um eins verrückt, aber wieso :-/ ich finde den fehler seit stunden einfach nicht..
ich habe mich versucht stark an die tutorial beispiele zu halten und mit xyz hat es auch geklappt aber ich verstehe nicht wieso es mit den zusätzlich tx ty und tz nicht klappt obwohl ich die einfach komplett analog eingebunden hat... das ist soo unlogisch.
http://s1.directupload.net/images/100507/wfjs3vg8.png
Danke für jede Antwort.
Grüße
ich hoffe hier kennt sich jemand mit der JFreeChart Bibliothek aus ansonsten bitte an das richtige Forum verweisen.
Jedenfalls ergibt der Teil hier unten nicht das was ich will und zwar werden die Achsen nicht entsprechend der Kurven farblich markiert sondern total sondersam. Ich weiß nicht wo die Farbe cyan herkommt!!! Muss irgendwie eine zufallsgenerierte Farbe sein.
X, Y und Z sind richtig gemappt und farblich markiert, TX TY und TZ sind irgendwie falsch, da die Achse von TX schwarz ist, die kurve dazu aber gelb (orange) markiert ist. Genauso mit TY hier ist die entsprechende kurve magenta, aber die achse gelb(orange), zu guter letzt ist TZ als Linie cyan aber in der achse magenta. alles irgendwie um eins verrückt, aber wieso :-/ ich finde den fehler seit stunden einfach nicht..
ich habe mich versucht stark an die tutorial beispiele zu halten und mit xyz hat es auch geklappt aber ich verstehe nicht wieso es mit den zusätzlich tx ty und tz nicht klappt obwohl ich die einfach komplett analog eingebunden hat... das ist soo unlogisch.
http://s1.directupload.net/images/100507/wfjs3vg8.png
Java:
private void createSeriesChartXYZ(Double[] sourceSeries1, Double[] sourceSeries2,
Double[] sourceSeries3, JTabbedPane output, DefaultMutableTreeNode node) {
XYSeries xys3 = null, xys4 = null, xys5 = null;
// erstelle datensätze
XYSeries xys0 = new XYSeries("X");
XYSeries xys1 = new XYSeries("Y");
XYSeries xys2 = new XYSeries("Z");
if (node.toString().equals("root")) {
xys3 = new XYSeries("TX");
xys4 = new XYSeries("TY");
xys5 = new XYSeries("TZ");
}
int i = 0;
for (double key : sourceSeries1) {
xys0.add(i++, key);
}
i = 0;
for (double key : sourceSeries2) {
xys1.add(i++, key);
}
i = 0;
for (double key : sourceSeries3) {
xys2.add(i++, key);
}
if (node.toString().equals("root")) {
Double[] tx = new Double[(stmAMCSeries.get(node.toString()).get("TX").size())],
ty = new Double[(stmAMCSeries.get(node.toString()).get("TY").size())],
tz = new Double[(stmAMCSeries.get(node.toString()).get("TZ").size())];
stmAMCSeries.get(node.toString()).get("TX").toArray(tx);
stmAMCSeries.get(node.toString()).get("TY").toArray(ty);
stmAMCSeries.get(node.toString()).get("TZ").toArray(tz);
i = 0;
for (double key : tx) {
xys3.add(i++, key);
}
i = 0;
for (double key : ty) {
xys4.add(i++, key);
}
i = 0;
for (double key : tz) {
xys5.add(i++, key);
}
}
// erstelle zeitreihen
XYSeriesCollection xydata0 = new XYSeriesCollection();
XYSeriesCollection xydata1 = new XYSeriesCollection();
XYSeriesCollection xydata2 = new XYSeriesCollection();
XYSeriesCollection xydata3 = new XYSeriesCollection();
XYSeriesCollection xydata4 = new XYSeriesCollection();
XYSeriesCollection xydata5 = new XYSeriesCollection();
xydata0.addSeries(xys0);
xydata1.addSeries(xys1);
xydata2.addSeries(xys2);
if (node.toString().equals("root")) {
xydata3.addSeries(xys3);
xydata4.addSeries(xys4);
xydata5.addSeries(xys5);
}
// erstelle chart
JFreeChart chart = ChartFactory.createXYLineChart(
"Joint Angle Progression", // titel
"Frame", //xachse
"Angle", //yachse
xydata0, //daten
PlotOrientation.VERTICAL, //orientierung
true, // legend?
true, // tooltips?
false // URLs?
);
XYPlot plot = chart.getXYPlot();
chart.setBackgroundPaint(Color.white);
plot.setOrientation(PlotOrientation.VERTICAL);
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
final StandardXYItemRenderer renderer = new StandardXYItemRenderer();
renderer.setBasePaint(Color.black);
NumberAxis axis0 = new NumberAxis("");
NumberAxis axis1 = new NumberAxis("");
NumberAxis axis2 = new NumberAxis("");
NumberAxis axis3 = new NumberAxis("");
NumberAxis axis4 = new NumberAxis("");
NumberAxis axis5 = new NumberAxis("");
// Setzen der Grenzen der Achsen
Range r0 = null, r1 = null, r2 = null;
if (!(node.toString().equals("root"))) {
if (lhmASF.get(":bonedata" + node.toString() + "limits")[0] != null && lhmASF.get(":bonedata" + node.toString() + "limits")[1] != null) {
r0 = new Range(Double.parseDouble(lhmASF.get(":bonedata" + node.toString() + "limits")[0]),
Double.parseDouble(lhmASF.get(":bonedata" + node.toString() + "limits")[1]));
}
if (lhmASF.get(":bonedata" + node.toString() + "limits")[2] != null && lhmASF.get(":bonedata" + node.toString() + "limits")[3] != null) {
r1 = new Range(Double.parseDouble(lhmASF.get(":bonedata" + node.toString() + "limits")[2]),
Double.parseDouble(lhmASF.get(":bonedata" + node.toString() + "limits")[3]));
}
if (lhmASF.get(":bonedata" + node.toString() + "limits")[4] != null && lhmASF.get(":bonedata" + node.toString() + "limits")[5] != null) {
r2 = new Range(Double.parseDouble(lhmASF.get(":bonedata" + node.toString() + "limits")[4]),
Double.parseDouble(lhmASF.get(":bonedata" + node.toString() + "limits")[5]));
}
}
if (r0 != null) {
axis0.setRange(r0);
}
if (r1 != null) {
axis1.setRange(r1);
}
if (r2 != null) {
axis2.setRange(r2);
}
if (node.toString().equals("root")) {
axis3.setRangeWithMargins(xydata3.getRangeBounds(true));
axis3.setAutoRangeIncludesZero(false);
axis4.setRangeWithMargins(xydata4.getRangeBounds(true));
axis4.setAutoRangeIncludesZero(false);
axis5.setRangeWithMargins(xydata5.getRangeBounds(true));
axis5.setAutoRangeIncludesZero(false);
}
// Achsen beschriften und einfärben
axis0.setLabelPaint(Color.red);
axis1.setLabelPaint(Color.blue);
axis2.setLabelPaint(Color.green);
if (node.toString().equals("root")) {
axis3.setLabelPaint(Color.black);
axis4.setLabelPaint(Color.orange);
axis5.setLabelPaint(Color.magenta);
}
axis0.setTickLabelPaint(Color.red);
axis1.setTickLabelPaint(Color.blue);
axis2.setTickLabelPaint(Color.green);
if (node.toString().equals("root")) {
axis3.setTickLabelPaint(Color.black);
axis4.setTickLabelPaint(Color.orange);
axis5.setTickLabelPaint(Color.magenta);
}
plot.setRangeAxis(0, axis0);
plot.setRangeAxis(1, axis1);
plot.setRangeAxis(2, axis2);
if (node.toString().equals("root")) {
plot.setRangeAxis(3, axis3);
plot.setRangeAxis(4, axis4);
plot.setRangeAxis(5, axis5);
}
// Achsenpostionen bestimmen
plot.setRangeAxisLocation(0, AxisLocation.BOTTOM_OR_LEFT);
plot.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_LEFT);
plot.setRangeAxisLocation(2, AxisLocation.BOTTOM_OR_LEFT);
if (node.toString().equals("root")) {
plot.setRangeAxisLocation(3, AxisLocation.BOTTOM_OR_RIGHT);
plot.setRangeAxisLocation(4, AxisLocation.BOTTOM_OR_RIGHT);
plot.setRangeAxisLocation(5, AxisLocation.BOTTOM_OR_RIGHT);
}
// Datensätze auf Chart einbinden
plot.setDataset(1, xydata1);
plot.setDataset(2, xydata2);
if (node.toString().equals("root")) {
plot.setDataset(3, xydata3);
plot.setDataset(4, xydata4);
plot.setDataset(5, xydata5);
}
plot.mapDatasetToRangeAxis(1, 1);
plot.mapDatasetToRangeAxis(2, 2);
if (node.toString().equals("root")) {
plot.mapDatasetToRangeAxis(3, 3);
plot.mapDatasetToRangeAxis(4, 4);
plot.mapDatasetToRangeAxis(5, 5);
}
plot.setRenderer(1, new StandardXYItemRenderer());
plot.getRenderer(1).setSeriesPaint(1, Color.blue);
plot.setRenderer(2, new StandardXYItemRenderer());
plot.getRenderer(2).setSeriesPaint(2, Color.green);
if (node.toString().equals("root")) {
plot.setRenderer(3, new StandardXYItemRenderer());
plot.getRenderer(3).setSeriesPaint(3, Color.black);
plot.setRenderer(4, new StandardXYItemRenderer());
plot.getRenderer(4).setSeriesPaint(4, Color.orange);
plot.setRenderer(5, new StandardXYItemRenderer());
plot.getRenderer(5).setSeriesPaint(5, Color.magenta);
}
// mache chart sichtbar
ChartPanel cp1 = new ChartPanel(chart);
output.add(cp1, 0);
output.setTitleAt(0, node.toString());
output.setSelectedIndex(0);
}
Danke für jede Antwort.
Grüße