【发布时间】:2011-10-03 16:01:53
【问题描述】:
我有数千个点要绘制在 JFreeChart 散点图上。
现在的问题是我的程序正在用“正方形”绘制点,但我需要一些帮助来了解如何将点的Shape 从“正方形”更改为“点/圆”。
任何帮助将不胜感激。
//*我正在使用 ShapeUtilities,但是当我用于 XYItemRenderer/XYDotRenderer 时,它不会将点的形状更改为“DaigonalCross”--如果代码中有任何错误,请更正.. *///
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Shape;
import java.util.*;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYDotRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.util.ShapeUtilities;
public class SPlotfinal extends ApplicationFrame {
public SPlotfinal(String s) {
super(s);
JPanel jpanel = createDemoPanel();
jpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(jpanel);
}
public static JPanel createDemoPanel() {
JFreeChart jfreechart = ChartFactory.createScatterPlot("Scatter Plot Demo",
"X", "Y", samplexydataset2(), PlotOrientation.VERTICAL, true, true, false);
Shape cross = ShapeUtilities.createDiagonalCross(3, 1);
XYPlot xyPlot = (XYPlot) jfreechart.getPlot();
XYItemRenderer renderer = xyPlot.getRenderer();
renderer.setBaseShape(cross);
renderer.setBasePaint(Color.red);
//changing the Renderer to XYDotRenderer
//xyPlot.setRenderer(new XYDotRenderer());
XYDotRenderer xydotrenderer = new XYDotRenderer();
xyPlot.setRenderer(xydotrenderer);
xydotrenderer.setSeriesShape(0, cross);
xyPlot.setDomainCrosshairVisible(true);
xyPlot.setRangeCrosshairVisible(true);
return new ChartPanel(jfreechart);
}
private static XYDataset samplexydataset2() {
int cols = 20;
int rows = 20;
double[][] values = new double[cols][rows];
XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
XYSeries series = new XYSeries("Random");
Random rand = new Random();
for (int i = 0; i < values.length; i++) {
for (int j = 0; j < values[i].length; j++) {
double x = Math.round(rand.nextDouble() * 500);
double y = Math.round(rand.nextDouble() * 500);
series.add(x, y);
}
}
xySeriesCollection.addSeries(series);
return xySeriesCollection;
}
public static void main(String args[]) {
SPlotfinal scatterplotdemo4 = new SPlotfinal("Scatter Plot Demo 4");
scatterplotdemo4.pack();
RefineryUtilities.centerFrameOnScreen(scatterplotdemo4);
scatterplotdemo4.setVisible(true);
}
}
【问题讨论】:
-
为sscce+1。
标签: java jfreechart