package JMain;
import JChart.*; import java.awt.Font; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import java.awt.BorderLayout; enum TypeChart{ PIE, LINE, BAR, TIMESERIES }
public class Chart_AWT extends ApplicationFrame { private JPanel contentPane; private JPanel chartPiePane; private JPanel chartLinePane; private static Chart_AWT window; public Chart_AWT( String title ) { super( title ); getContentPane().setLayout(null); contentPane = new JPanel(); getContentPane().add( contentPane ); chartPiePane = new JPanel(); chartPiePane.setBounds(27, 268, 662, 442); getContentPane().add(chartPiePane); chartPiePane.add( createDemoPanel( TypeChart.LINE ) ); chartLinePane = new JPanel(); chartLinePane.setBounds(119, 10, 662, 442); getContentPane().add( chartLinePane ); chartLinePane.add( createDemoPanel( TypeChart.TIMESERIES ) ); //ChartPanel chartPanel = new ChartPanel( ); //chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) ); } public static JPanel createDemoPanel( TypeChart type ) { switch(type) { case BAR: JChart.BarChart barChart = new JChart.BarChart(); return new ChartPanel( barChart.createChart("바(Bar) 차트", barChart.createDataset() ) ); case LINE: JChart.LineChart lineChart = new JChart.LineChart(); return new ChartPanel( lineChart.createChart("선(Line) 차트", lineChart.createDataset() ) ); case PIE: JChart.PieChart pieChart = new JChart.PieChart(); return new ChartPanel( pieChart.createChart("파이(Pie) 판매량 차트", pieChart.createDataset() ) ); case TIMESERIES: JChart.TimeSeriesChart timeChart = new JChart.TimeSeriesChart(); return new ChartPanel( timeChart.createChart("시계열 차트", timeChart.createDataset() ) ); default: return null; } // end of classes } public static void main( String[ ] args ) { window = new Chart_AWT( "차트" ); window.setSize( 800, 600 ); RefineryUtilities.centerFrameOnScreen( window ); window.setVisible( true ); } }
|
package JChart; import java.awt.Font; import java.io.File; import java.io.IOException; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; public class BarChart { public JFreeChart createChart( String chartTitle, CategoryDataset categoryDataset ) { JFreeChart chart = ChartFactory.createBarChart( chartTitle, // 차트 제목 "Category", // x축 제목 "Score", // y축 제목 categoryDataset, // 데이터셋 PlotOrientation.VERTICAL, true, true, false); // 제목 - 한글 chart.getTitle().setFont(new Font("돋움", Font.BOLD, 15)); chart.getLegend().setItemFont(new Font("돋움", Font.BOLD, 15)); CategoryPlot plot = (CategoryPlot) chart.getPlot();
// 범위, 도메인 - 한글 plot.getDomainAxis().setLabelFont(new Font("돋움", Font.PLAIN, 13)); plot.getDomainAxis().setTickLabelFont(new Font("돋움", Font.PLAIN, 11)); plot.getRangeAxis().setLabelFont(new Font("돋움", Font.PLAIN, 13)); plot.getRangeAxis().setTickLabelFont(new Font("돋움", Font.PLAIN, 11)); int width = 560; /* Width of the image */ int height = 370; /* Height of the image */ File fileChart = new File( "pie_Chart.jpeg" ); try { ChartUtilities.saveChartAsJPEG( fileChart, chart, width, height ); } catch(IOException e) { System.out.println( e.getMessage() ); } return chart; } public CategoryDataset createDataset( ) { final String a1 = "A자동차"; final String b1 = "B자동차"; final String c1 = "C자동차"; final String speed = "Speed"; final String millage = "Millage"; final String userrating = "User Rating"; final String safety = "safety"; final DefaultCategoryDataset dataset = new DefaultCategoryDataset( ); dataset.addValue( 1.0 , a1 , speed ); dataset.addValue( 3.0 , a1 , userrating ); dataset.addValue( 5.0 , a1 , millage ); dataset.addValue( 5.0 , a1 , safety ); dataset.addValue( 5.0 , b1 , speed ); dataset.addValue( 6.0 , b1 , userrating ); dataset.addValue( 10.0 , b1 , millage ); dataset.addValue( 4.0 , b1 , safety ); dataset.addValue( 4.0 , c1 , speed ); dataset.addValue( 2.0 , c1 , userrating ); dataset.addValue( 3.0 , c1 , millage ); dataset.addValue( 6.0 , c1 , safety ); return dataset; } }
|
package JChart; import java.awt.Font; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; public class LineChart{ public DefaultCategoryDataset createDataset( ) { DefaultCategoryDataset dataset = new DefaultCategoryDataset( ); dataset.addValue( 15 , "명" , "1970" ); dataset.addValue( 30 , "명" , "1980" ); dataset.addValue( 60 , "명" , "1990" ); dataset.addValue( 120 , "명" , "2009" ); dataset.addValue( 240 , "명" , "2013" ); dataset.addValue( 300 , "명" , "2017" ); return dataset; } public JFreeChart createChart( String chartTitle, DefaultCategoryDataset dataset ) { JFreeChart chart = ChartFactory.createLineChart( chartTitle, // title - 제목 "년도(Years)", // x축 제목 "명", // y축 제목 dataset , // 데이터셋 PlotOrientation.VERTICAL, true,true,false); // 제목 - 한글 chart.getTitle().setFont(new Font("돋움", Font.BOLD, 15)); chart.getLegend().setItemFont(new Font("돋움", Font.BOLD, 15)); CategoryPlot plot = (CategoryPlot) chart.getPlot(); // 범위, 도메인 - 한글 plot.getDomainAxis().setLabelFont(new Font("돋움", Font.PLAIN, 13)); plot.getDomainAxis().setTickLabelFont(new Font("돋움", Font.PLAIN, 11)); plot.getRangeAxis().setLabelFont(new Font("돋움", Font.PLAIN, 13)); plot.getRangeAxis().setTickLabelFont(new Font("돋움", Font.PLAIN, 11)); return chart; } }
|
package JChart; import java.awt.Font; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; public class PieChart{ public PieDataset createDataset( ) { DefaultPieDataset dataset = new DefaultPieDataset( ); dataset.setValue( "이아 5s" , new Double( 20 ) ); dataset.setValue( "송송" , new Double( 20 ) ); dataset.setValue( "모터" , new Double( 40 ) ); dataset.setValue( "루미아" , new Double( 10 ) ); return dataset; } public JFreeChart createChart( String charTitle , PieDataset dataset ) { JFreeChart chart = ChartFactory.createPieChart( charTitle, // chart title dataset, // data true, // include legend true, false); chart.getTitle().setFont(new Font("돋움", Font.BOLD, 15)); chart.getLegend().setItemFont(new Font("돋움", Font.BOLD, 15)); PiePlot plot = (PiePlot) chart.getPlot(); plot.setLabelFont(new Font("돋움", Font.PLAIN, 12)); return chart; } }
|
package JChart; import java.awt.Font; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.XYPlot; import org.jfree.data.general.SeriesException; import org.jfree.data.time.Second; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries;
public class TimeSeriesChart { public XYDataset createDataset( ) { TimeSeries series = new TimeSeries( "Random Time" ); Second current = new Second( ); double value = 100.0; for (int i = 0; i < 4000; i++) { try { value = value + Math.random( ) - 0.5; series.add ( current, new Double( value ) ); current = ( Second ) current.next( ); } catch ( SeriesException e ) { System.err.println("Error adding to series"); } } return new TimeSeriesCollection(series); }
public JFreeChart createChart( String chartTItle, final XYDataset dataset ) { JFreeChart chart = ChartFactory.createTimeSeriesChart( chartTItle, // 차트 제목 "Seconds", // x축 제목 "Value", // y축 제목 dataset, false, false, false); // 제목 - 한글 chart.getTitle().setFont(new Font("돋움", Font.BOLD, 15)); //chart.getLegend().setItemFont(new Font("돋움", Font.BOLD, 15)); XYPlot plot = (XYPlot) chart.getPlot(); // 범위, 도메인 - 한글 plot.getDomainAxis().setLabelFont(new Font("돋움", Font.PLAIN, 13)); plot.getDomainAxis().setTickLabelFont(new Font("돋움", Font.PLAIN, 11)); plot.getRangeAxis().setLabelFont(new Font("돋움", Font.PLAIN, 13)); plot.getRangeAxis().setTickLabelFont(new Font("돋움", Font.PLAIN, 11)); return chart; }
}
|