O Jfreechart é um projeto Java no site de código aberto fonteforge.net. Ele é usado principalmente para uma variedade de gráficos, incluindo: gráficos de pizza, gráficos de barras (gráficos normais de barras e gráficos de barras de pilha), gráficos de linha, gráficos de área, gráficos de distribuição, gráficos mistos, gráficos de Gantt e alguns painéis.
Para aplicar o Jfreechart para desenhar o Pictures, você precisa de dois pacotes de jar: jfreechart.jar e jcommon.jar, endereço de download.
Aqui está um exemplo de desenho de um gráfico de linha:
pacote yuth.jfree.demo; /*** Crie um gráfico de linha usando o conjunto de dados CategoryDataset* Quando houver muitos dados, o valor da coordenada horizontal não pode ser totalmente visto no JPanel e é exibido como uma elipse. * Solução: * Método 1. Ao salvar o relatório como uma imagem, defina a largura da imagem como grande o suficiente (2000 ou 3000), para que a imagem possa exibir o valor da coordenada horizontal. * Este método trata os sintomas, mas não a causa raiz; portanto, existe um segundo método* Método 2: Defina a possibilidade de inclinar o eixo x para incliná-lo 45 graus. */ importar java.awt.basicsTroke; importar java.awt.color; importar java.awt.dimension; importar java.awt.font; importar java.awt.geom.ellipse2d; importar java.io.file; importar java.io.ioException; importar java.net.url; importar java.text.decimalformat; importar java.util.random; importar javax.swing.imageicon; importar javax.swing.jpanel; importar org.jfree.Chart.ChartFactory; importar org.jfree.Chart.ChartPanel; importar org.jfree.Chart.Chartutities; importar org.jfree.chart.jfreechart; importar org.jfree.chart.axis.categoryaxis; importar org.jfree.chart.axis.categoryLabelPositions; importar org.jfree.chart.axis.NumberAxis; importar org.jfree.chart.labels.standardcategoryItemLabelGenerator; importar org.jfree.chart.plot.categoryplot; importar org.jfree.chart.plot.plotorientation; importar org.jfree.chart.renderer.category.LineAndshapenderer; importar org.jfree.chart.title.textTitle; importar org.jfree.data.category.categoryDataset; importar org.jfree.data.category.defaultCategoryDataset; importar org.jfree.ui.ApplicationFrame; importar org.jfree.ui.horizontalalIignment; importar org.jfree.ui.rectangledge; importar org.jfree.ui.rectangleinsets; importação org.jfree.ui.refineryutities; classe pública linechartDemo1 estende o aplicativo {private estático final serialversionuid = -6354350604313079793L; / * Synthetic */classe estática Classe $ Demo $ linechartDemo1; public linechartDemo1 (string string) {super (string); Jpanel jpanel = createMopanel (); jpanel.setPreferredSize (nova dimensão (500, 270)); setContentPane (JPanel); } /*** Como distinguir diferentes lendas: distinguir com base no segundo parâmetro de defaultCategoryDataset.addvalue () é o mesmo. * A ordem dos dados adicionados na mesma legenda afeta a tela final; A ordem dos dados adicionados nas diferentes lendas não afeta a tela final. * @return */ categoria estática privadaDataSET crioutaset () {defaultCategoryDataSet defaultCategoryDataset = new DefaultCategoryDataset (); //DefaultCategoryDataset.addvalue () Análise de parâmetros: (numérico, nome da legenda, valor de coordenada horizontal) /* // Adicione o método de dados 1 // Legenda 1 DefaultCategoryDataSet.addValue (212.0, "First", "1001.0"); defaultCategoryDataset.addvalue (504.0, "First", "1001.1"); defaultCategoryDataset.addvalue (1520.0, "First", "1001.2"); // Legenda 2 DefaultCategoryDataset.addValue (712.0, "Second", "1001.0"); defaultCategoryDataset.addvalue (1204.0, "Second", "1001.1"); defaultCategoryDataset.addvalue (1820.0, "Second", "1001.2"); /*///* // Adicione o método de dados 2 // Experimente o número aleatório para gerar resultados do teste aleatório = novo aleatório (12345); // legenda 1, 40 dados para (int i = 0; i <40; i ++) {defaultCategoryDataset.addvalue (aleatoriamente.nextint (100000), "primeiro", string.valueof (1000+i)); } // legenda 2, 40 dados para (int i = 0; i <40; i ++) {defaultCategoryDataset.addvalue (aleatom.nextint (100000), "segundo", string.valueof (1000+i)); } //*/return defaultCategoryDataSet; } private estático jfreechart createChart (categorydataSet categorydataSet) {jfreechart jfreechart = cartfactory.createlinechart ("test teste de jfreechart", // título do gráfico "x", // spindle label (x-axis) "y", // range axis (y-axis) Plotorientation.vertical, // orientação falsa, // se deve incluir legend true, // mensagem solicitada se falsa); // se deve usar os URLs // altere a cor de fundo do gráfico jfreechart.setbackgroundPaint (color.white); Categoryplot categoryplot = (categoryplot) jfreechart.getplot (); categoryplot.setBackgroundPaint (color.lightGray); categoryplot.setRangeGridLinePaint (color.white); categoryplot.setRangeGridLinesVisible (false); // modifica o eixo da faixa. Alteramos o valor da escala padrão (permitido exibir decimais) para exibir apenas valores de escala inteira. Númeroxis numberRaxis = (númeroxis) categoryplot.getrangeaxis (); numberRaxis.SetStandardTickunits (númeroxis.createInteGerTickunits ()); // Defina a habilitação no eixo x para inclinar 45 graus categoryaxis domainaxis = categoryplot.getDomainaxis (); Domainaxis.SetCategoryLabelPositions (categoryLabelPositions.up_45); // Defina a habilitação no eixo x para inclinar 45 graus domainaxis.setLowerMargin (0,0); // Defina a distância da extremidade esquerda da imagem dominaxis.setupperMargin (0,0); // Defina a distância da extremidade direita da imagem linendshapenderador lineandshapendender = (linendshapenderer) categoryplot .getRenderer (); lineandshapenderer.setShapeSVisible (true); lineandshapenderer.setDrawoutLines (true); lineandshapenderer.setUseFillPaint (true); lineandshapenderer.setBaseFillPaint (color.white); lineandshapenderer.SetSeriEssTroke (0, New BasicsTroke (3.0F)); lineandshapenderer.SetSeriesOutLateStroke (0, New BasicsTroke (2.0F)); lineandshapenderer.SetSeriESSHAPE (0, new ellipse2d.double (-5,0, -5,0, 10.0, 10.0)); lineandshapenderer.setItemmargin (0,4); //Set the spacing of each value of the x-axis (not working??) // Show data value DecimalFormat decimalformat1 = new DecimalFormat("##.##");// The format of data point displaying data values lineandshaperenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator( "{2}", decimalformat1));// Definir o gerador do item de dados Rótulo linendshapenderer.setBaseItemLabelsVisible (true); // O rótulo básico Exibir linendshapenderer.setBaseshapesFilled (true); // mostra pequenos ícones sólidos no Data Point Return jfreechart; } public static jpanel CreateMopanel () {jfreechart jfreechart = createChart (criadoTASET ()); tente {Chartutilities.SaveChartasjpeg (novo arquivo ("d: /linechartDemo1.png"), // O caminho físico para salvar o arquivo inclui o caminho e o nome do arquivo // 1.0f, // Qualidade da imagem, a imagem de uma imagem, a queda de imagens, o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que você está fazendo, com o objetivo de avaliar o uso de uma imagem para o uso de uma imagem de imagem, e a imagem de e -mail // 1. 768); } catch (ioexception e) {// TODO GATO GENERADO AUTOMENTADO BLOCO E.PRINTSTACKTRACE (); } // Altura da imagem Retornar novo ChartPanel (Jfreechart); } public static void main (string [] strings) {linechartDemo1 linechartDemo1 = new LineChartDemo1 ("Jfreechart - Demo 1 do gráfico de linha"); linechartDemo1.pack (); Refineryutities.CenterFrameOnscreen (LineChartDemo1); linechartDemo1.setVisible (true); } / * sintético * / classe estática classe $ (string string) {classe var_class; tente {var_class = classe.formaName (string); } Catch (ClassNotFoundException ClassNotFoundException) {THLHET NEW NOCLASSDEFFONDERROR (ClassNotFoundException.getMessage ()); } retornar var_class; }}Resultados em execução:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.