मेरे पास JFreeChart
स्कैटर प्लॉट पर प्लॉट के हजारों अंक हैं। अभी समस्या यह है कि मेरा प्रोग्राम "वर्ग" के साथ बिंदुओं की साजिश कर रहा है, लेकिन मुझे "वर्ग" से "बिंदुओं/मंडलियों" के बिंदुओं के Shape
को बदलने के तरीके पर कुछ मदद चाहिए। किसी भी मदद की सराहना की जाएगी।स्कैटर प्लॉट में अंक के आकार बदलना
// * मैं ShapeUtilities का उपयोग कर रहा है, लेकिन इसकी बिंदु के लिए "DaigonalCross" आकार बदल नहीं जब मैं XYItemRenderer/XYDotRenderer के लिए उपयोग कर रहा हूँ - कोई सुधार कृपया अगर कोड में anythng गलत .. * ///
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);
}
}
+1 [sscce] (http://sscce.org/) के लिए +1। – trashgod