Recientemente estoy diseñando un curso de minería de datos. Necesito mostrar los resultados del análisis de datos a los usuarios de forma intuitiva. Esto requiere el uso de gráficos de estadísticas de datos. Para realizar esta función, necesito varios paquetes de terceros:
1.jfreechart-1.0.13.jar
2. jcommon-1.0.16.jar
3. gnujaxp.jar
Echemos un vistazo a la representación final:
Principalmente jfreechart-1.0.13.jar, pero estos tres paquetes deben estar completos. He comprimido y subido todos los paquetes jar relacionados con jfreechart junto con el proyecto (código) del ejemplo de este artículo. Los estudiantes interesados pueden descargarlo.
Dirección de descarga: http://download.csdn.net/detail/pzhtpf/4327700
A continuación, implementamos este programa paso a paso.
1. En el trabajo de preparación preliminar, estos tres paquetes de terceros se agregan al proyecto de este artículo. El proceso de adición es muy simple. He escrito un blog antes sobre cómo leer datos en tablas de Excel con Java (los estudiantes interesados pueden hacerlo). Eche un vistazo: http://blog.csdn.net/pzhtpf/article/details/7506135), también necesita agregar paquetes de terceros. El proceso de adición es exactamente el mismo. Aquí lo revisaremos:
1. Cree un proyecto Java y cree una nueva carpeta lib en este proyecto;
2. Copie los tres paquetes jar anteriores a lib
3. Luego haga clic derecho en el proyecto java y seleccione Propiedades
4. Seleccione Ruta de compilación de Java en la lista de la izquierda y Bibliotecas a la derecha.
5. Haga clic en Agregar JAR
6. Luego seleccione los tres archivos jar en la carpeta lib de este proyecto y haga clic en Aceptar.
Después del éxito, habrá una carpeta adicional en el proyecto: Bibliotecas referenciadas.
2. Código Java para implementar el gráfico de columnas:
importar java.awt.Font; importar org.jfree.chart.ChartFactory; importar org.jfree.chart.ChartPanel; importar org.jfree.chart.JFreeChart; chart.axis.ValueAxis; importar org.jfree.chart.plot.CategoryPlot; org.jfree.chart.plot.PlotOrientation; importar org.jfree.data.category.CategoryDataset; importar org.jfree.data.category.DefaultCategoryDataset; conjunto de datos de categoría pública { ChartPanel frame1; ; gráfico JFreeChart = ChartFactory.createBarChart3D( "Fruta", // Título del gráfico "Tipo de fruta", // Mostrar etiqueta del eje del catálogo "Cantidad", // Mostrar etiqueta del conjunto de datos del eje numérico, // Conjunto de datos PlotOrientation.VERTICAL, // Dirección del gráfico: horizontal, vertical verdadero , // Si se muestra la leyenda (debe ser falsa para un gráfico de barras simple) false, // Si se generan herramientas false // Si se generan enlaces URL // Iniciar CategoryPlot desde aquí); plot=chart.getCategoryPlot();//Obtener el objeto del área del gráfico CategoryAxis domainAxis=plot.getDomainAxis(); //Lista inferior horizontal domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14)); Título inferior horizontal domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); // Título vertical ValueAxis rangeAxis=plot.getRangeAxis(); //Obtener rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); , Fuente.BOLD, 15)); chart.getTitle().setFont(nuevo Font("宋体",Font.BOLD,20));//Establecer la fuente del título//Esto termina aquí Aunque el código es un poco excesivo, tiene un solo propósito: resolver el problema de los caracteres chinos confusos frame1. =new ChartPanel(chart,true); //chartFrame también se puede utilizar aquí, que puede generar directamente un marco independiente } private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); conjunto de datos.addValue(100, "Pekín", "Apple"); conjunto de datos.addValue(100, "Shanghái", "Apple"); conjunto de datos.addValue(100, "Guangzhou", "Apple"); , "Pekín", "Pera"); conjunto de datos.addValue(200, "Shanghai", "Pera"); "Pera"); conjunto de datos.addValue(300, "Pekín", "Uva"); conjunto de datos.addValue(300, "Shanghai", "Uva"); conjunto de datos.addValue(400, "Pekín", "Banana"); conjunto de datos.addValue(400, "Shanghai", "Banana"); "Banana"); conjunto de datos.addValue(500, "Pekín", "Litchi"); conjunto de datos.addValue(500, "Shanghai", "Litchi"); devolver conjunto de datos; } public ChartPanel getChartPanel(){ devolver marco1; Las representaciones son las siguientes:
Pero después de cambiar los datos en el método privado estático CategoryDataset getDataSet(){}, se formará otro efecto. Por ejemplo, lo cambiamos a:
conjunto de datos estático privado getDataSet() { conjunto de datos DefaultCategoryDataset = nuevo DefaultCategoryDataset(); dataset.addValue(100, "Apple", "Apple"); , "Uva", "Uva"); conjunto de datos.addValue(400, "Plátano", "Plátano"); dataset.addValue(500, "Litchi", "Litchi"); devolver conjunto de datos;Las representaciones son las siguientes:
Tres códigos Java para implementar un gráfico circular:
paquete com.njue.testJFreeChart; importar java.awt.Font; importar java.text.DecimalFormat; importar java.text.NumberFormat; importar javax.swing.JPanel; .ChartPanel; importar org.jfree.chart.JFreeChart; org.jfree.chart.labels.StandardPieSectionLabelGenerator; importar org.jfree.chart.plot.PiePlot; importar org.jfree.data.general.DefaultPieDataset; ; gráfico JFreeChart = ChartFactory.createPieChart3D("Fruit Yield",data,true,false,false); //Establece el porcentaje PiePlot pieplot = (PiePlot) chart.getPlot(); un objeto DecimalFormat, principalmente configura problemas decimales NumberFormat nf = NumberFormat.getNumberInstance();//Obtener un objeto NumberFormat StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator("{0} {2}", nf, df);//Obtener el objeto StandardPieSectionLabelGenerator pieplot.setLabelGenerator(sp1);//Establecer el porcentaje de visualización del gráfico circular //El contenido que se muestra cuando no hay datos pieplot.setNoDataMessage("No se muestran datos"); ); gráfico circular .setLabelGap(0.02D); pieplot.setIgnoreNullValues(true);//Establecer para no mostrar valores nulos pieplot.setIgnoreZeroValues(true);//Establecer para no mostrar valores negativos frame1=new ChartPanel (chart,true); setFont(new Font(" Song Dynasty",Font.BOLD,20));// Establece la fuente del título PiePlot piePlot= (PiePlot) chart.getPlot();//Obtener el objeto del área del gráfico piePlot.setLabelFont(new Font("宋体",Font.BOLD,10));//Resolver caracteres confusos chart.getLegend().setItemFont(new Font("黑体", Font.BOLD,10)); } privado estático DefaultPieDataset getDataSet() { DefaultPieDataset conjunto de datos = new DefaultPieDataset(); conjunto de datos.setValue("manzana",100); conjunto de datos.setValue("pera",200); conjunto de datos.setValue("uva",300); conjunto de datos.setValue("plátano",400); " ",500); devolver conjunto de datos; } public ChartPanel getChartPanel(){ devolver marco1; Las representaciones son las siguientes:
4. Código Java para implementar el gráfico de líneas:
paquete com.njue.testJFreeChart; importar java.awt.Font; importar java.text.SimpleDateFormat; importar org.jfree.chart.ChartFactory; importar org.jfree.chart.ChartPanel; .jfree.chart.axis.DateAxis; org.jfree.chart.axis.ValueAxis; importar org.jfree.chart.plot.XYPlot; importar org.jfree.data.time.Month; importar org.jfree.data.time.TimeSeries; time.TimeSeriesCollection; importar org.jfree.data.xy.XYDataset; clase pública TimeSeriesChart { ChartPanel frame1; TimeSeriesChart(){ ) jfreechart.getPlot(); Eje de fecha eje de fecha = (Eje de fecha) xyplot.getDomainAxis(); dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); frame1=new ChartPanel(jfreechart,true); //Título inferior horizontal dateaxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //Título vertical ValueAxis rangeAxis=xyplot.getRangeAxis(); //Obtener rango de columnas.setLabelFont(new Font("黑体",Font.BOLD,15)); jfreechart.getLegend().setItemFont(nueva fuente("黑体", Font.BOLD, 15)); jfreechart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//Establecer la fuente del título} private static XYDataset createDataset() { //Este conjunto de datos es un poco excesivo, pero es no es difícil de entender TimeSeries timeseries = new TimeSeries("legal & general European Index Trust", org.jfree.data.time.Month.class)(new Month(2, 2001), 181.80000000000001D); serie temporal.add(nuevo mes(3, 2001), 167.30000000000001D); 167.59999999999999D); timeseries.add(nuevo mes(6, 2001), 158.80000000000001D); 153.90000000000001D); serie temporal.add(nuevo mes(9, 2001), 142.69999999999999D); 131.80000000000001D); timeseries.add(nuevo mes(12, 2001), 139.59999999999999D); 138.69999999999999D); serie temporal.add(nuevo mes (3, 2002), 137.30000000000001D); 139.80000000000001D); timeseries.add(nuevo mes(6, 2002), 137D); timeseries.add(nuevo mes(7, 2002), 132.80000000000001D); org.jfree.data.time.Month.class); timeseries1.add(nuevo mes(2, 2001), 129.5999999999999D; timeseries1.add(nuevo mes(3, 2001), 123.2D); timeseries1.add(nuevo mes(3, 2001), 123.2D) Mes(4, 2001), 117.2D; timeseries1.add(nuevo); Mes (5, 2001), 124.09999999999999D); serie temporal1.add(nuevo mes (6, 2001), 122.59999999999999D); 8, 2001), 116.5D; serie temporal1.add(nuevo mes(9, 2001), 112.7D ); serie temporal1.add(nuevo mes(12, 2001), 110.3D); series temporales1.add(nuevo mes (1, 2002), 111.7D); 109.59999999999999D; serie temporal1.add(nuevo); Mes (4, 2002), 113.2D); serie temporal1.add(nuevo mes (5, 2002), 111.59999999999999D); serie temporal1.add(nuevo mes (6, 2002), 108.8D); 7, 2002), 101.59999999999999D); TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(); timeseriescollection.addSeries(timeseries); timeseriescollection.addSeries(timeseries1);Las representaciones son las siguientes:
Echemos un vistazo al método principal:
importar java.awt.GridLayout; importar javax.swing.JFrame; clase pública mainClass {public static void main(String args[]){ JFrame frame=new JFrame("Gráfico de datos Java"); ,2,10,10)); frame.add(new BarChart().getChartPanel()); //Agregar gráfico de barras frame.add(new BarChart1().getChartPanel()); //Agregar otro efecto de gráfico de columnas frame.add(new PieChart().getChartPanel()); //Agregar gráfico circular frame.add(new TimeSeriesChart().getChartPanel ()); //Agregar un gráfico de líneas frame.setBounds(50, 50, 800, 600); frame.setVisible(true); Cinco resumen
Lo anterior es un ejemplo simple de implementar. Los estudiantes que quieran saber más pueden verificar la información por sí mismos. De hecho, los códigos anteriores son fáciles de entender, siempre que combinen con su situación real. Puede ver que esto se implementa en la aplicación. De hecho, se utilizan más gráficos estadísticos en JavaWeb. También puede aprenderlo usted mismo.