M
MrWhy
Gast
Hallo
Ich habe wieder einmal ein Problem...
Ich habe mir eine Klasse geschrieben die einen Chart zeichnet mit JFreeChart wenn ich nun die daten auswähle dann kommt alles so raus wie es soll... nur wenn ich das Programm nicht schließe und gleich einen neuen Datensatz auswähle zeichnet er nicht mehr die 2 Achse sonder macht nur einen Strich... hier mal ein wenig code dazu
Ich hoffe mir kann dabei jemand helfen...
Danke !!!
Gruß
MrWhy
Ich habe wieder einmal ein Problem...
Ich habe mir eine Klasse geschrieben die einen Chart zeichnet mit JFreeChart wenn ich nun die daten auswähle dann kommt alles so raus wie es soll... nur wenn ich das Programm nicht schließe und gleich einen neuen Datensatz auswähle zeichnet er nicht mehr die 2 Achse sonder macht nur einen Strich... hier mal ein wenig code dazu
Code:
public class Chart extends JFrame {
public Chart(final String btitle, String data1title, double[] dx, double[] d1y, String data2title,double[] d2y)
{
super(btitle);
final XYDataset dataset1 = createDataset1(dx, d2y, data1title);
final NumberAxis axis2 = new NumberAxis("Contrast");
final String chartTitle = "Dual Axis Demo 2";
final XYSeries s2 = new XYSeries("Contrast", false, true);
final XYSeriesCollection dataset = new XYSeriesCollection();
final JFreeChart chart = ChartFactory.createXYLineChart(
btitle, // chart title
"Voltage", // domain axis label
"Current", // range axis label
dataset1, // data
PlotOrientation.VERTICAL,
true, // include legend
true,
false);
final XYPlot plot = chart.getXYPlot();
chart.setBackgroundPaint(Color.white);
/*Fügt dem Chartpanel die 2. Achse hinzu
*/
axis2.setAutoRangeIncludesZero(true);
plot.setRangeAxis(1, axis2);
plot.setDataset(1, createDataset2(dx, d1y, data2title));
plot.mapDatasetToRangeAxis(1, 1);
final XYItemRenderer renderer = plot.getRenderer();
if (renderer instanceof StandardXYItemRenderer) {
final StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
//rr.setPlotShapes(true);
rr.setShapesFilled(true);
}
final StandardXYItemRenderer renderer2 = new StandardXYItemRenderer();
renderer2.setSeriesPaint(0, Color.black);
//renderer2.setPlotShapes(true);
//renderer.setToolTipGenerator(StandardXYToolTipGenerator.getTimeSeriesInstance());
plot.setRenderer(1, renderer2);
final ChartPanel chartPanel = new ChartPanel(chart);
setContentPane(chartPanel);
}
/* Erstellt das Datenset 1
*@param dx = XAchse (Voltage)
*@param d2y = YAchse (Current)
*@param data2title = Name des Datensets
*@return dataset = Fertiges Datensets
*/
private XYDataset createDataset1(double[] dx, double[] d1y, String data1title)
{
final XYSeries s1 = new XYSeries(data1title, false, true);
int l = dx.length;
for (int i = 0; i <= l-1 ; i++) {
double y = d1y[i]/2.25;
s1.add(dx[i], y);
}
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(s1);
return dataset;
}
/* Erstellt das Datenset 2
*@param dx = XAchse (Voltage)
*@param d2y = YAchse (Contrast)
*@param data2title = Name des Datensets
*@return dataset = Fertiges Datensets
*/
private XYDataset createDataset2(double[] dx,double[] d2y, String data2title)
{
final XYSeries s2 = new XYSeries(data2title, false, true);
int l = dx.length;
for (int i = 0; i <= l-1 ; i++)
{
s2.add(dx[i], d2y[i]);
}
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(s2);
return dataset;
}
/* Instanziert den Chart
*btitle = Titel des Charts
*data1Title = Titel der Datenquelle 1
*data2title = Titel der Datenquelle 2
*dx = Daten der X Achse
*d1y = Daten der Y Achse Current
*d2y = Daten der Y Achse Contrast
*/
public static void charts(String btitle, String data1title, double[] dx, double[] d1y, String data2title, double[] d2y) {
final Chart demo = new Chart(btitle, data1title, dx, d1y, data2title, d2y);
demo.setDefaultCloseOperation(demo.DISPOSE_ON_CLOSE);
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
try {
demo.finalize();
} catch (Throwable ex) {
ex.printStackTrace();
}
}
}
Ich hoffe mir kann dabei jemand helfen...
Danke !!!
Gruß
MrWhy