📄 chartdrawer.java
字号:
import java.awt.Container;
import javax.swing.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
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;
/**
* A simple demonstration of the {@link XYLineAndShapeRenderer} class.
*/
public class ChartDrawer extends ApplicationFrame{
private String type;
/**
* Constructs the demo application.
*
* @param title the frame title.
*/
public ChartDrawer(final String title,JPanel c,DataPoints data) {
super(title);
type=title;
XYDataset dataset;
try{
if(type=="Training Set") {
dataset = createSampleDataset2(data);
}
else {
dataset = createSampleDataset3(data);
}
JFreeChart chart = ChartFactory.createXYLineChart(
title,
"X",
"Y",
dataset,
PlotOrientation.VERTICAL,
true,
false,
false
);
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesLinesVisible(0, false);
renderer.setSeriesShapesVisible(0, true);
renderer.setSeriesLinesVisible(1, false);
renderer.setSeriesShapesVisible(1, true);
renderer.setSeriesLinesVisible(2, false);
renderer.setSeriesShapesVisible(2, true);
renderer.setSeriesLinesVisible(3, false);
renderer.setSeriesShapesVisible(3, true);
plot.setRenderer(renderer);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 300));
setContentPane(chartPanel);
c.add(chartPanel);
}catch (Exception e){
System.out.println("exception");
}
}
private XYDataset createSampleDataset2(DataPoints data) throws Exception {
XYSeries series[]=new XYSeries[data.getMaxClusterNum()];
System.out.println("MaxClusterNum"+data.getMaxClusterNum());
System.out.println("ResultLength"+data.getLcount());
for(int j=0;j<data.getMaxClusterNum();j++){
series[j]=new XYSeries("Series"+j);
}
for(int s=0;s</*data.getTestingCount()*/data.getTrainingCount();s++){
series[(int)(data.getPoint()[s].DefaultClassify)-1].add(data.getPoint()[s].position[0],data.getPoint()[s].position[1]);
//series[(int)(data.getTestPoint()[s].DefaultClassify)-1].add(data.getTestPoint()[s].position[0],data.getTestPoint()[s].position[1]);
//now 800.txt can use (int)data.getResult()[s]-1 getting data;it should use
//(int)data.getResult()[s]
//series[(int)data.getResult()[s]-1].add(data.getX()[0][s],data.getX()[1][s]);
}
// series[0]=new XYSeries("Series"+0);
// series[(int)data.getResult()[0]].add(data.getX()[0][0],data.getX()[1][0]);
/* XYSeries series1 = new XYSeries("Series 1");
series1.add(1.0, 3.3);
series1.add(2.0, 4.4);
series1.add(3.0, 1.7);
XYSeries series2 = new XYSeries("Series 2");
series2.add(1.0, 7.3);
series2.add(2.0, 6.8);
series2.add(3.0, 9.6);
series2.add(4.0, 5.6);
*/
XYSeriesCollection dataset = new XYSeriesCollection();
for(int j=0;j<data.getMaxClusterNum();j++){
dataset.addSeries(series[j]);
}
// dataset.addSeries(series[3]);
return dataset;
}
private XYDataset createSampleDataset3(DataPoints data) throws Exception {
XYSeries series[]=new XYSeries[data.getMaxClusterNum()];
System.out.println("MaxClusterNum"+data.getMaxClusterNum());
System.out.println("ResultLength"+data.getLcount());
for(int j=0;j<data.getMaxClusterNum();j++){
series[j]=new XYSeries("Series"+j);
}
for(int s=0;s<data.getTestingCount()/*data.getTrainingCount()*/;s++){
series[(int)(data.getTestPoint()[s].DefaultClassify)-1].add(data.getTestPoint()[s].position[0],data.getTestPoint()[s].position[1]);
//series[(int)(data.getTestPoint()[s].DefaultClassify)-1].add(data.getTestPoint()[s].position[0],data.getTestPoint()[s].position[1]);
//now 800.txt can use (int)data.getResult()[s]-1 getting data;it should use
//(int)data.getResult()[s]
//series[(int)data.getResult()[s]-1].add(data.getX()[0][s],data.getX()[1][s]);
}
// series[0]=new XYSeries("Series"+0);
// series[(int)data.getResult()[0]].add(data.getX()[0][0],data.getX()[1][0]);
/* XYSeries series1 = new XYSeries("Series 1");
series1.add(1.0, 3.3);
series1.add(2.0, 4.4);
series1.add(3.0, 1.7);
XYSeries series2 = new XYSeries("Series 2");
series2.add(1.0, 7.3);
series2.add(2.0, 6.8);
series2.add(3.0, 9.6);
series2.add(4.0, 5.6);
*/
XYSeriesCollection dataset = new XYSeriesCollection();
for(int j=0;j<data.getMaxClusterNum();j++){
dataset.addSeries(series[j]);
}
// dataset.addSeries(series[3]);
return dataset;
}
/**
* Creates a sample dataset.
*
* @return A dataset.
*/
//800 need another process because cluster "0"
private XYDataset createSampleDataset() throws Exception {
DataPoints data=new DataPoints("");
data.parse();
XYSeries series[]=new XYSeries[data.getMaxClusterNum()];
System.out.println("MaxClusterNum"+data.getMaxClusterNum());
System.out.println("ResultLength"+data.getLcount());
for(int j=0;j<data.getMaxClusterNum();j++){
series[j]=new XYSeries("Series"+j);
}
for(int s=0;s<data.getLcount();s++){
//now 800.txt can use (int)data.getResult()[s]-1 getting data;it should use
//(int)data.getResult()[s]
series[(int)data.getResult()[s]-1].add(data.getX()[0][s],data.getX()[1][s]);
}
// series[0]=new XYSeries("Series"+0);
// series[(int)data.getResult()[0]].add(data.getX()[0][0],data.getX()[1][0]);
/* XYSeries series1 = new XYSeries("Series 1");
series1.add(1.0, 3.3);
series1.add(2.0, 4.4);
series1.add(3.0, 1.7);
XYSeries series2 = new XYSeries("Series 2");
series2.add(1.0, 7.3);
series2.add(2.0, 6.8);
series2.add(3.0, 9.6);
series2.add(4.0, 5.6);
*/
XYSeriesCollection dataset = new XYSeriesCollection();
for(int j=0;j<data.getMaxClusterNum();j++){
dataset.addSeries(series[j]);
}
// dataset.addSeries(series[3]);
return dataset;
}
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
/* public static void main(final String[] args) {
final ChartDrawer demo = new ChartDrawer(
"XYLineAndShapeRenderer Demo"
);
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -