JFREECHART는 오픈 소스 사이트 SourceForge.net의 Java 프로젝트입니다. 주로 파이 차트, 막대 차트 (일반 막대 차트 및 스택 막대 차트), 라인 차트, 영역 차트, 배포 차트, 혼합 차트, 간트 차트 및 일부 대시 보드를 포함한 다양한 차트에 사용됩니다.
JFREECHART를 적용하여 그림을 그리려면 JFREECHART.JAR 및 JCOMMON.JAR의 두 개의 JAR 패키지가 필요합니다.
다음은 라인 차트를 그리는 예입니다.
패키지 yuth.jfree.demo; /*** CategoryDataset DataSet을 사용하여 라인 차트 작성* 데이터가 많으면 JPANEL에서 수평 좌표의 값을 완전히 볼 수 없으며 타원으로 표시됩니다. * 솔루션 : * 메소드 1. 보고서를 그림으로 저장할 때 그림의 너비를 충분히 크게 설정하여 (2000 또는 3000) 그림이 수평 좌표 값을 표시 할 수 있도록하십시오. *이 방법은 증상을 취급하지만 근본 원인은 아니기 때문에 두 번째 방법* 방법 2 : x 축에 Lable을 45도 기울 이도록 설정하십시오. */ import java.awt.basicstroke; import java.awt.color; java.awt.dimension import; Java.awt.Font 가져 오기; java.awt.geom.ellipse2d; import java.io.file; import java.io.ioexception; import java.net.url; import java.text.decimalformat; java.util.random import; import javax.swing.imageicon; import javax.swing.jpanel; import org.jfree.chart.chartfactory; import org.jfree.chart.chartpanel; import org.jfree.chart.chartutilities; import org.jfree.chart.jfreechart; import org.jfree.chart.axis.categoryaxis; import org.jfree.chart.axis.categoryLabelPositions; import org.jfree.chart.axis.numberaxis; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.plot.categoryPlot; import org.jfree.chart.plot.plotorientation; import org.jfree.chart.renderer.category.lineandshaperenderer; import org.jfree.chart.title.texttitle; import org.jfree.data.category.categoryDataset; import org.jfree.data.category.defaultCategoryDataset; import org.jfree.ui.applicationFrame; import org.jfree.ui.horizontalalignment; import org.jfree.ui.rectangledge; import org.jfree.ui.rectingleinsets; org.jfree.ui.refineryutilities import; 공개 클래스 LinechartDemo1은 ApplicationFrame {private static final long serialversionuid = -6354350604313079793L; / * 합성 */정적 클래스 클래스 $ demo $ linechartdemo1; public linechartdemo1 (String String) {super (string); jpanel jpanel = createMopanel (); jpanel.setpreferredsize (New Dimension (500, 270)); SetContentPane (JPANEL); } /*** 다른 범례를 구별하는 방법 : defaultCategoryDatAset.addValue ()의 두 번째 매개 변수가 동일인지 여부를 기반으로 구별합니다. * 동일한 범례에 추가 된 데이터 순서는 최종 디스플레이에 영향을 미칩니다. 다른 범례에 추가 된 데이터 순서는 최종 디스플레이에 영향을 미치지 않습니다. * @return */ private static categoryDataset wayatAset () {defaultCategoryDatAset defaultCategoryDatAset = 새 DefaultCategoryDataset (); //defaultCategoryDataset.addValue () 매개 변수 분석 : (숫자, 범례 이름, 수평 좌표 값) / / /// 데이터 메소드 추가 1 // Legend 1 DefaultCategoryDataset.addValue (212.0, "First", "1001.0"); defaultCategoryDataset.AddValue (504.0, "First", "1001.1"); defaultCategoryDataset.AddValue (1520.0, "First", "1001.2"); // Legend 2 DefaultCategoryDataset.AddValue (712.0, "Second", "1001.0"); defaultCategoryDataset.AddValue (1204.0, "Second", "1001.1"); defaultCategoryDataset.AddValue (1820.0, "Second", "1001.2"); /*///* // 데이터 추가 방법 2 // 시험 결과를 생성하기 위해 임의 숫자 실험 랜덤 랜덤 = new Random (12345); // LEGEND 1, 40 데이터 (int i = 0; i <40; i ++) {defaultCategoryDataset.AddValue (random.nextInt (100000), "First", String.Valueof (1000+i)); } // LEGEND 2, 40 (int i = 0; i <40; i ++) {defaultCategoryDataset.AddValue (random.nextInt (100000), "second", String.Valueof (1000+i)); } //*/return defaultCategoryDataset; } private static jfreechart createChart (CategoryDataset CategoryDataset) {jfreechart jfreechart = Chartfactory.createlineChart ( "jfreechart test", // 차트 제목 "x", // Spindle Label (x-Axis) "y", // 범위 Axistation (y-axtoration), // DataSetorient, // // // Orientation False, // LEGEND TRUE, // FALSE 여부를 포함할지 여부); // URL 사용 여부 // 차트의 배경색 변경 JFREECHART.SETBACKGRUNEGPAINT (COLOR.WHITE); CategoryPlot CategoryPlot = (CategoryPlot) jfreechart.getPlot (); CategoryPlot.setbackgroundpaint (Color.lightGray); CategoryPlot.setRangeGridLinePaint (Color.white); CategoryPlot.setRangeGridLinesvisible (False); // 범위 축을 수정합니다. 정수 스케일 값 만 표시하도록 기본 스케일 값 (소수 표시)을 변경합니다. numberaxis numberRaxis = (numberaxis) categoryPlot.getRangeAxis (); numberRaxis.SetStandardTickUnits (NumberAxis.CreateInteGertickUnits ()); // X 축에서 LABLE를 설정하여 45도 CategoryAxis domainaxis = CategoryPlot.getDomainaxis (); domainaxis.setCategoryLabelPositions (categoryLabelPositions.up_45); // X 축에 LABLE를 설정하여 45도 Domainaxis.SetLowerMargin (0.0); // 그림의 왼쪽 끝에서 거리를 설정합니다. // 사진의 오른쪽 끝에서 거리를 설정하십시오. LineAndshaperenderer lineandshaperenderer = (LineAndshaperender) categoryPlot .getRenderer (); Lineandshaperender.setshapesvisible (true); Lineandshaperenderer.setDrawOutlines (true); Lineandshaperender.setuseFillPaint (true); Lineandshaperender.setbasefillpaint (Color.white); Lineandshaperender.setseriesstroke (0, New Basicstroke (3.0f)); Lineandshaperenderer.setseriesoutlinestroke (0, New Basicstroke (2.0f)); Lineandshaperender.setseriesshape (0, New Ellipse2d.double (-5.0, -5.0, 10.0, 10.0)); Lineandshaperenderer.setitemmargin (0.4); // x 축의 각 값을 설정하지 않음 (작동하지 않아요? 데이터 항목 레이블 Lineandshaperenderer.setbaseitemlabelsvesible (true)의 생성기; // 기본 항목 레이블 디스플레이 lineandshaperender.setbaseshapesfilled (true); // 데이터 포인트에 단단한 작은 아이콘 표시 jfreechart; } public static jpanel createMopanel () {jfreechart jfreechart = createChart (createAtaset ()); try {chartUtilities.sevechartasjpeg (새 파일 ( "d :/linechartdemo1.png"), // 파일을 저장하는 물리적 경로에는 경로와 파일 이름 // 1.0f, // 이미지 품질, 0.0f ~ 1.0f jfreechart, // 차트 객체 1024, // 이미지가 포함되어 있는지,이 차트가 완전히 표시되는지 여부를 결정할 수 있는지 여부를 결정합니다. 768); } catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } // 이미지 높이 리턴 새 ChartPanel (jfreechart); } public static void main (String [] strings) {LinechartDemo1 LinechartDemo1 = New LinechartDemo1 ( "jfreechart- 줄 차트 데모 1"); linechartdemo1.pack (); 정유 공장 .Centerframeonscreen (LinechartDemo1); LinechartDemo1.set -Visible (true); } / * 합성 * / 정적 클래스 클래스 $ (문자열 문자열) {class var_class; try {var_class = class.forname (String); } catch (classNotFoundException classNotFoundException) {새 noclassDeffoundError (classNotFoundException.getMessage ()); } return var_class; }}실행 결과 :
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.