Recentemente, estou projetando um curso de mineração de dados. Preciso exibir os resultados da análise de dados aos usuários de forma intuitiva. Isso requer o uso de gráficos de estatísticas de dados. Para realizar esta função, preciso de vários pacotes de terceiros.
1.jfreechart-1.0.13.jar
2.jcommon-1.0.16.jar
3.gnujaxp.jar
Vamos dar uma olhada na renderização final:
Principalmente jfreechart-1.0.13.jar, mas esses três pacotes devem estar completos. Compactei e carreguei todos os pacotes jar relacionados ao jfreechart junto com o projeto (código) do exemplo neste artigo.
Endereço de download: http://download.csdn.net/detail/pzhtpf/4327700
A seguir, implementamos este programa passo a passo.
1. No trabalho de preparação preliminar, esses três pacotes de terceiros são adicionados ao projeto deste artigo. O processo de adição é muito simples. Já escrevi um blog sobre como ler dados em tabelas do Excel com Java (alunos interessados podem). Dê uma olhada: http://blog.csdn.net/pzhtpf/article/details/7506135), você também precisa adicionar pacotes de terceiros. O processo de adição é exatamente o mesmo.
1. Crie um projeto java e crie uma nova pasta lib neste projeto;
2. Copie os três pacotes jar acima para lib
3. Em seguida, clique com o botão direito no projeto java e selecione Propriedades
4. Selecione Caminho de construção Java na lista à esquerda e Bibliotecas à direita.
5. Clique em Adicionar JARs
6. Em seguida, selecione os três jars na pasta lib deste projeto e clique em OK
Após sucesso, haverá uma pasta adicional no projeto: Bibliotecas Referenciadas
2. Código Java para implementar gráfico de colunas:
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; ;gráfico JFreeChart = ChartFactory.createBarChart3D( "Fruta", // Título do gráfico "Tipo de fruta", // Exibir rótulo do eixo do catálogo "Quantidade", // Exibir rótulo do conjunto de dados do eixo numérico, // Conjunto de dados PlotOrientation.VERTICAL, // Direção do gráfico: horizontal, vertical verdadeiro , // Se a legenda deve ser exibida (deve ser falsa para um gráfico de barras simples) false, // Se as ferramentas devem ser geradas false // Se devem ser gerados links de URL // Inicie o CategoryPlot a partir daqui); plot=chart.getCategoryPlot();//Obtém o objeto da área do 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(); //Obter colunar rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); , Font.BOLD, 15)); chart.getTitle().setFont(novo). Font("宋体",Font.BOLD,20));//Defina a fonte do título//Isso termina aqui. =new ChartPanel(chart,true); //chartFrame também pode ser usado aqui, que pode gerar diretamente um quadro independente } private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Pequim", "Apple"); dataset.addValue(100, "Xangai", "Apple"); dataset.addValue(100, "Guangzhou", "Apple"); , "Pequim", "Pêra"); dataset.addValue(200, "Xangai", "Pêra"); "Pêra"); dataset.addValue(300, "Pequim", "Uva"); dataset.addValue(300, "Xangai", "Uva"); dataset.addValue(400, "Pequim", "Banana"); dataset.addValue(400, "Xangai", "Banana"); "Banana"); dataset.addValue(500, "Pequim", "Litchi"); dataset.addValue(500, "Xangai", "dataset.addValue(500, "Guangzhou", "Litchi"); retornar conjunto de dados; } public ChartPanel getChartPanel(){ return frame1; As renderizações são as seguintes:
Mas depois de alterarmos os dados no método estático privado CategoryDataset getDataSet(){}, outro efeito será formado. Por exemplo, nós o alteramos para:
private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Apple", "Apple"); , "Uva", "Uva"); dataset.addValue(400, "Banana", "Banana"); dataset.addValue(500, "Litchi", "Litchi"); retornar conjunto de dados }As renderizações são as seguintes:
Três códigos Java para implementar o gráfico de pizza:
pacote com.njue.testJFreeChart; importar java.awt.Font; importar java.text.DecimalFormat; .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("Rendimento de frutas",data,true,false,false); //Definir a porcentagem PiePlot pieplot = (PiePlot) chart.getPlot(); um objeto DecimalFormat, principalmente definindo questões decimais NumberFormat nf = NumberFormat.getNumberInstance();//Obter um objeto NumberFormat StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator("{0} {2}", nf, df);//Obter o objeto StandardPieSectionLabelGenerator pieplot.setLabelGenerator(sp1);//Definir a porcentagem de exibição do gráfico de pizza //O conteúdo exibido quando não há dados pieplot.setNoDataMessage("Nenhum dado exibido"); ); pieplot.setIgnoreNullValues(true);//Definir para não exibir valores nulos pieplot.setIgnoreZeroValues(true);//Definir para não exibir valores negativos frame1=new ChartPanel (chart,true); setFont(new Font(" Song Dynasty",Font.BOLD,20));//Define a fonte do título PiePlot piePlot= (PiePlot) chart.getPlot();//Obtém o objeto da área do gráfico piePlot.setLabelFont(new Font("宋体",Font.BOLD,10));//Resolve caracteres ilegíveis chart.getLegend().setItemFont(new Font("黑体", Font.BOLD,10)); } private static DefaultPieDataset getDataSet() { conjunto de dados DefaultPieDataset = new DefaultPieDataset(); dataset.setValue("maçã",100); dataset.setValue("pêra",200); dataset.setValue("lichia",300); " ",500); retornar conjunto de dados; } public ChartPanel getChartPanel(){ return frame1; As renderizações são as seguintes:
4. Código Java para implementar gráfico de linhas:
pacote com.njue.testJFreeChart; importar java.awt.Font; importar org.jfree.chart.JFreeChart; .jfree.chart.axis.DateAxis; org.jfree.chart.axis.ValueAxis; importar org.jfree.chart.plot.XYPlot; importar org.jfree.data.time.Month; time.TimeSeriesCollection; importar org.jfree.data.xy.XYDataset; classe pública TimeSeriesChart { ChartPanel frame1; TimeSeriesChart(){ ) jfreechart.getPlot(); xyplot.getDomainAxis(); dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); frame1=new ChartPanel(jfreechart,true(new Font("黑体",Font.BOLD,14)); //Título inferior horizontal dateaxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //Título vertical ValueAxis rangeAxis=xyplot.getRangeAxis(); //Obter colunar rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); jfreechart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15)); jfreechart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//Definir a fonte do título} private static XYDataset createDataset() { //Este conjunto de dados é um pouco demais, mas é não é difícil de entender TimeSeries timeseries = new TimeSeries("legal & general European Index Trust", org.jfree.data.time.Month.class); 181.80000000000001D);timeseries.add(novo mês(3, 2001), 167.30000000000001D); 167.59999999999999D); 153.90000000000001D);timeseries.add(novo mês(9, 2001), 142.6999999999999D); 131.80000000000001D); 138.69999999999999D); 139.80000000000001D); timeseries.add(novo mês(6, 2002), 137D(novo mês(7, 2002), 132.80000000000001D); org.jfree.data.time.Month.class); timeseries1.add(novo mês(3, 2001), 123.2D) Mês(4, 2001), 117.2D(novo); Mês (5, 2001), 124.09999999999999D; 8, 2001), 116,5D);série temporal1.add(novo mês(9, 2001), 112,7D). );série temporal1.add(novo mês(12, 2001), 110.3D); 109.59999999999999D); Mês(4, 2002), 113.2D(novo Mês(5, 2002), 111.59999999999999D(novo Mês(6, 2002); 7, 2002), 101.59999999999999D); TimeSeriesCollection timeseriescollection = new TimeSeriesCollection.addSeries(timeseriescollection.addSeries(timeseriescollection);As renderizações são as seguintes:
Vamos dar uma olhada no método principal:
importar java.awt.GridLayout; importar javax.swing.JFrame; public class mainClass { public static void main(String args[]){ JFrame frame=new JFrame("Java Data Chart"); ,2,10,10)); frame.add(new BarChart().getChartPanel()); BarChart1().getChartPanel()); //Adicionar outro efeito do gráfico de colunas frame.add(new PieChart().getChartPanel()); //Adicionar gráfico de pizza frame.add(new TimeSeriesChart().getChartPanel()); //Adicionar um gráfico de linhas frame.setBounds(50, 50, 800, 600); Cinco resumo
O exemplo acima é um exemplo simples de implementação. Os alunos que desejam saber mais podem verificar as informações por conta própria. Na verdade, os códigos acima são fáceis de entender. Você pode ver que isso é implementado no aplicativo. Na verdade, mais gráficos estatísticos são usados no JavaWeb. Você também pode aprender sobre isso por conta própria.