我有一个ArrayList
从用户输入中获取数据,我创建了一个按钮,激活时会启动XY线图。我遇到的问题是我不断收到错误而我的LineGraph
不会创建。
我真的不知道如何从ArrayList
获取数据并将其放入XYSeries
。
Iterator it = dataXY.iterator();
XYSeries p1 = new XYSeries("XY");
while( it.hasNext()) {
p1.add((XYDataItem) it.next());
}
XYSeriesCollection xydata = new XYSeriesCollection();
xydata.addSeries(p1);
JFreeChart lineChart = ChartFactory.createXYLineChart("XY chart", "X", "Y", xydata, PlotOrientation.HORIZONTAL, true, true, false);
lineChart.setBackgroundPaint(Color.WHITE);
final XYPlot plot = lineChart.getXYPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesPaint(0, Color.BLACK);
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
plot.setRenderer( renderer );
plot.setBackgroundPaint(Color.WHITE);
ChartFrame frame = new ChartFrame ("XY Line Graph", lineChart);
frame.setVisible(true);
frame.setSize(700,500);
所有这些代码都在我的"动作事件中;创建图表"按钮。任何有关如何制作此图表的帮助都非常感谢。
答案 0 :(得分:1)
最后我甚至不需要转换为数组,尽管我设法这样做:
// converting arraylist to array
double [][] p1 = new double[dataXY.size()][dataXY.size()];
for (int i=0; i<dataXY.size(); i++) {
int x = dataXY.get(i).getX(); int y = dataXY.get(i).getY();
p1[i][0] = x;
p1[i][1] = y;
}
无论如何,我所做的是使用XYSeries并使用for循环将我的所有值添加到系列中,如下所示:
XYSeriesCollection ds = new XYSeriesCollection();
XYSeries s1 = new XYSeries("XY data");
for (int i=0; i<dataXY.size(); i++) {
int x = dataXY.get(i).getX(); int y = dataXY.get(i).getY();
s1.add(y, x);
}
ds.addSeries(s1);