JFreeChart - คู่มือฉบับย่อ

แผนภูมิคือการแสดงข้อมูลแบบกราฟิก มีเครื่องมือมากมายที่สามารถใช้เพื่อสร้างแผนภูมิประเภทต่างๆ JFreeChartโครงการก่อตั้งขึ้นในเดือนกุมภาพันธ์ พ.ศ. 2543 โดย David Gilbert ปัจจุบันเป็นไลบรารีการสร้างแผนภูมิที่ใช้กันอย่างแพร่หลายในหมู่นักพัฒนา Java

บทช่วยสอนนี้จะช่วยให้คุณเข้าใจว่า JFreeChart คืออะไรทำไมจึงต้องมีและวิธีต่างๆในการสร้างแผนภูมิประเภทต่างๆภายในแอปพลิเคชันที่ใช้ Java หรือแยกกัน

JFreeChart คืออะไร?

JfreeChart เป็นไลบรารีโอเพ่นซอร์สที่พัฒนาใน Java สามารถใช้ภายในแอปพลิเคชันที่ใช้ Java เพื่อสร้างแผนภูมิที่หลากหลาย ด้วยการใช้ JFreeChart เราสามารถสร้างแผนภูมิ 2D และ 3D ที่สำคัญทั้งหมดเช่นแผนภูมิวงกลมแผนภูมิแท่งแผนภูมิเส้นแผนภูมิ XY และแผนภูมิ 3 มิติ

ทำไมต้อง JFreeChart?

JFreeChart เป็นโอเพ่นซอร์สและฟรี 100% ซึ่งอนุญาตให้ใช้งานในแอปพลิเคชันเชิงพาณิชย์โดยไม่เสียค่าใช้จ่ายใด ๆ เราได้กำหนดประเด็นเพิ่มเติมไว้ที่นี่ว่าทำไมคุณควรใช้ JFreeChart -

  • มาพร้อมกับ API ที่มีเอกสารอย่างดีซึ่งทำให้เข้าใจได้ง่ายมาก

  • สนับสนุนแผนภูมิประเภทต่างๆเช่นแผนภูมิวงกลมแผนภูมิเส้นแผนภูมิแท่งแผนภูมิพื้นที่และแผนภูมิ 3 มิติ

  • JFreeChart นั้นง่ายต่อการขยายและสามารถใช้ได้ทั้งในฝั่งไคลเอ็นต์และแอปพลิเคชันฝั่งเซิร์ฟเวอร์

  • รองรับรูปแบบเอาต์พุตหลายรูปแบบเช่น PNG, JPEG, PDF, SVG เป็นต้น

  • ช่วยให้สามารถปรับแต่งแผนภูมิได้มากมาย

พิจารณาสถานการณ์ที่คุณกำลังพัฒนาแอปพลิเคชันและคุณต้องแสดงข้อมูลในรูปแบบของแผนภูมิและข้อมูลจะถูกเติมแบบไดนามิก ในกรณีนี้การแสดงข้อมูลในรูปแบบของแผนภูมิโดยใช้โปรแกรม JFreeChart นั้นง่ายมาก

JFreeChart เป็นที่นิยมสำหรับการสร้างแผนภูมิที่มีประสิทธิภาพและการตั้งค่าการติดตั้งที่ใช้งานง่าย บทนี้อธิบายขั้นตอนการตั้งค่า JFreeChart บน Windows และ Linux จำเป็นต้องมีการดูแลผู้ใช้ในขณะติดตั้ง JFreeChart

ความต้องการของระบบ

JDK 1.5 ขึ้นไป
Memory แรม 2GB
Disk Space ไม่มีข้อกำหนดขั้นต่ำ
Operating System Version Linux หรือ Windows

การติดตั้ง JFreeChart

ในการติดตั้ง JFreeChart มีสามขั้นตอนต่อไปนี้ ได้แก่ ...

ขั้นตอนที่ 1: ตรวจสอบการติดตั้ง Java

ในการตรวจสอบการติดตั้ง Java ให้เปิดคอนโซลและดำเนินการคำสั่ง java ต่อไปนี้ -

ระบบปฏิบัติการ งาน คำสั่ง
Windows เปิดคอนโซลคำสั่ง C:> java - เวอร์ชัน
ลินุกซ์ เปิดเทอร์มินัลคำสั่ง $ java - รุ่น

เมื่อการติดตั้ง Java เสร็จสิ้นอย่างถูกต้องคุณควรได้รับผลลัพธ์ต่อไปนี้สำหรับทั้งสองระบบปฏิบัติการ -

ส. เลขที่ ระบบปฏิบัติการและคำอธิบาย
1

Windows

เวอร์ชัน Java "1.7.0_60" Java (TM) SE Run Time Environment (build 1.7.0_60-b19) Java HotSpot (TM) 64-bit Server VM (build 24.60-b09, mixed mode)

2

Linux

เวอร์ชัน java "1.7.0_25" OpenJDK Runtime Environment (rhel2.3.10.4.el6_4-x86_64) OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

หากคุณไม่ได้ติดตั้ง Java ให้ติดตั้ง Java Software Development Kit (SDK) จากลิงค์ -

https://www.oracle.com/technetwork/java/javase/downloads/index.html

เราถือว่าคุณได้ติดตั้งเวอร์ชัน Java 1.7.0_60 ก่อนดำเนินการสำหรับบทช่วยสอนนี้

ขั้นตอนที่ 2: การตั้งค่าสภาพแวดล้อม JAVA

ตั้งค่า JAVA_HOMEตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่ติดตั้ง Java บนเครื่องของคุณ ตัวอย่างเช่น,

ส. เลขที่ ระบบปฏิบัติการและคำอธิบาย
1

Windows

ตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME เป็น C: \ ProgramFiles \ java \ jdk1.7.0_60

2

Linux

ส่งออก JAVA_HOME = / usr / local / java-current

ผนวกตำแหน่งคอมไพเลอร์ Java เข้ากับ System Path

ส. เลขที่ ระบบปฏิบัติการและคำอธิบาย
1

Windows

ต่อท้ายสตริง; C: \ Program Files \ Java \ jdk1.7.0_60 \ bin ต่อท้ายตัวแปรระบบ PATH

2

Linux

ส่งออก PATH = $ PATH: $ JAVA_HOME / bin /

ตรวจสอบคำสั่ง java -version จากคำสั่งที่แจ้งตามที่อธิบายไว้ข้างต้น

ขั้นตอนที่ 3: การติดตั้ง JFreeChart

ดาวน์โหลด JFreeChart.zip เวอร์ชันล่าสุดจากลิงค์ http://www.jfree.org/jfreechart/download/แตกไฟล์ที่ดาวน์โหลดมาจากตำแหน่งใดก็ได้จากจุดที่ไลบรารีที่ต้องการสามารถเชื่อมโยงกับโปรแกรม Java ของคุณ ภาพต่อไปนี้แสดงโครงสร้างของไดเร็กทอรีและไฟล์ -

เพิ่มพา ธ ที่สมบูรณ์ของไฟล์ jfreechart-1.0.18.jar และ jcommon-1.0.22.jar ไปยัง CLASSPATH ดังที่แสดงด้านล่าง -

ส. เลขที่ ระบบปฏิบัติการและคำอธิบาย
1

Windows

ต่อท้ายสตริง“ C: \ jfreechart-1.0.18 \ lib \ jfreechart-1.0.18.jar” และ“ C: \ jfreechart-1.0.18 \ lib \ jcommon-1.0.22.jar” ต่อท้ายผู้ใช้ CLASSPATH ตัวแปร

2

Linux

ส่งออก CLASSPATH = $ CLASSPATH: /usr/share/jfreechart1.0.18/lib/jfreechart-1.0.18.jar: /usr/share/jfreechart-1.0.18/lib/jcommon1.0.22.jar

Note - Inorder เพื่อสื่อสารกับฐานข้อมูล MySql คุณต้องตั้งค่า classpath เป็น mysql-connector-java-5.0.8-bin.jar เกินไป.

บทนี้จะอธิบายระดับคลาสพื้นฐานและสถาปัตยกรรมระดับแอปพลิเคชันของ JFreeChart เพื่อให้คุณได้ทราบถึงวิธีที่ JFreeChart โต้ตอบกับคลาสต่างๆและวิธีที่เหมาะกับแอปพลิเคชันที่ใช้ Java ของคุณ

สถาปัตยกรรมระดับชั้นเรียน

สถาปัตยกรรมระดับชั้นเรียนจะอธิบายว่าคลาสต่างๆจากไลบรารีโต้ตอบกันอย่างไรเพื่อสร้างแผนภูมิประเภทต่างๆ

ต่อไปนี้เป็นรายละเอียดของหน่วยที่ใช้ในแผนภาพด้านบน -

ส. เลขที่ หน่วยและคำอธิบาย
1

File

ซอร์สที่มีอินพุตของผู้ใช้ที่จะใช้สำหรับสร้างชุดข้อมูลในไฟล์

2

Database

ซอร์สที่มีอินพุตของผู้ใช้ที่จะใช้ในการสร้างชุดข้อมูลในฐานข้อมูล

3

Create Dataset

ยอมรับชุดข้อมูลและจัดเก็บชุดข้อมูลลงในวัตถุชุดข้อมูล

4

General Dataset

ชุดข้อมูลประเภทนี้ส่วนใหญ่จะใช้สำหรับแผนภูมิวงกลม

5

Category Dataset

ชุดข้อมูลประเภทนี้ใช้สำหรับแผนภูมิแท่งแผนภูมิเส้น ฯลฯ

6

Series Dataset

ชุดข้อมูลประเภทนี้ใช้สำหรับจัดเก็บชุดข้อมูลและสร้างแผนภูมิเส้น

7

Series Collection Dataset

ชุดข้อมูลประเภทต่างๆจะถูกเพิ่มลงในชุดข้อมูลชุดข้อมูล ชุดข้อมูลประเภทนี้ใช้สำหรับแผนภูมิ XYLine

8

Create Chart

นี่คือวิธีการที่ใช้ในการสร้างแผนภูมิขั้นสุดท้าย

9

Frame/Image

แผนภูมิจะแสดงบน Swing Frame หรือสร้างภาพขึ้น

สถาปัตยกรรมระดับแอปพลิเคชัน

สถาปัตยกรรมระดับแอ็พพลิเคชันอธิบายตำแหน่งที่ไลบรารี JFreeChart อยู่ภายใน Java Application

โปรแกรมไคลเอ็นต์รับข้อมูลผู้ใช้จากนั้นใช้ Java มาตรฐานและ JFreeChart API ตามข้อกำหนดเพื่อสร้างเอาต์พุตในรูปแบบของเฟรมซึ่งสามารถแสดงโดยตรงภายในแอปพลิเคชันหรือในรูปแบบรูปภาพเช่น JPEG หรือ PNG อย่างอิสระ

ในบทนี้เราจะพูดถึงแพคเกจคลาสและวิธีการที่สำคัญบางอย่างจากไลบรารี JFreeChart แพ็กเกจคลาสและเมธอดเหล่านี้ใช้บ่อยที่สุดในขณะที่สร้างแผนภูมิที่หลากหลายโดยใช้ไลบรารี JFreeChart

คลาส ChartFactory

ChartFactory เป็นคลาสนามธรรมภายใต้ org.jfree.chartแพ็คเกจ มีชุดวิธีการยูทิลิตี้สำหรับสร้างแผนภูมิมาตรฐาน

ต่อไปนี้เป็นรายการวิธีการที่สำคัญบางอย่าง -

ตัวสร้างคลาส

ส. เลขที่ คำอธิบาย
1

ChartFactory()

ตัวสร้างดีฟอลต์ของคลาส ChartFactory

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

createPieChart(java.lang.String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls)

วิธีนี้สร้างแผนภูมิวงกลมด้วยการตั้งค่าเริ่มต้น ส่งคืนวัตถุประเภท JfreeChart

2

createPieChart3D(java.lang.String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls

วิธีนี้สร้างแผนภูมิวงกลม 3 มิติโดยใช้ชุดข้อมูลที่ระบุ

3

createBarChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)

อาร์กิวเมนต์ java.lang.String categoryAxisLabel คือเลเบลสำหรับค่าที่วางบนแกน X อาร์กิวเมนต์ java.lang.String valueAxisLabel คือเลเบลสำหรับค่าที่วางบนแกน Y

วิธีนี้สร้างแผนภูมิแท่ง

4

createBarChart3D(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)

วิธีนี้สร้างแผนภูมิแท่งพร้อมเอฟเฟกต์ 3 มิติ ส่งคืนวัตถุประเภท JfreeChart

5

createLineChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)

วิธีนี้สร้างแผนภูมิเส้นพร้อมการตั้งค่าเริ่มต้น

6

createLineChart3D(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)

วิธีนี้สร้างแผนภูมิเส้นพร้อมเอฟเฟกต์ 3 มิติ

7

createXYLineChart(java.lang.String title, java.lang.String xAxisLabel, java.lang.String yAxisLabel, XYDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)

วิธีนี้จะสร้างแผนภูมิเส้นตาม XYDataset พร้อมการตั้งค่าเริ่มต้น

คลาส ChartFrame

คลาส ChartFrame ภายใต้แพ็คเกจ org.jfree.chart จัดเตรียมฟังก์ชันและยูทิลิตี้ที่เกี่ยวข้องกับเฟรมทั้งหมด คลาส ChartFrame สืบทอดฟังก์ชันจากคลาสพาเรนต์เช่นคลาส Frame, Window, Container และ Component

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

ChartFrame (java.lang.Frame String, JfreeChart chart)

มันสร้างกรอบ

2

Chart Frame (java.lang.Frame String, JfreeChart chart, boolean scrollpane)

มันสร้างกรอบ

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

getChartPanel()

วิธีนี้ส่งคืนแผงแผนภูมิสำหรับเฟรม

คลาส ChartPanel

คลาส ChartPanel จากไฟล์ org.jfree.chart แพคเกจใช้เป็นส่วนประกอบแกว่ง GUI สำหรับการแสดงวัตถุ JfreeChart

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

ChartPanel(JFreeChart chart)

ตัวสร้างนี้สร้างแผงที่แสดงแผนภูมิที่ระบุ

2

ChartPanel(JFreeChart chart, boolean useBuffer)

ตัวสร้างนี้สร้างแผงที่มีแผนภูมิ

3

ChartPanel(JFreeChart chart, boolean properties, boolean save, boolean print, boolean zoom, boolean tooltips)

ตัวสร้างนี้สร้างพาเนล JFreeChart

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

setPreferredSize(java.awt.Dimension)

วิธีนี้ใช้เพื่อกำหนดขนาดเฟรมโดยใช้ java.awt วัตถุคลาสมิติเป็นอาร์กิวเมนต์ วิธีนี้นำมาจาก javax.swing.JComponent

คลาส ChartUtilities

คลาส CharUtilites จาก org.jfree.chart แพ็คเกจมีชุดวิธียูทิลิตี้ของ JFreeCharts รวมถึงวิธีการแปลงแผนภูมิเป็นรูปแบบไฟล์ภาพเช่น PNG, JPEG และการสร้างแผนที่รูปภาพ HTML

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

ChartUtilities()

นี่คือตัวสร้างเริ่มต้นของคลาส

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

saveChartAsPNG(java.io.File file, JfreeChart chart, int width, int height)

วิธีนี้จะแปลงและบันทึกแผนภูมิเป็นไฟล์ที่ระบุในรูปแบบ PNG

2

saveChartAsJPEG(java.io.File file, JfreeChart chart, int width, int height)

วิธีนี้จะแปลงและบันทึกแผนภูมิไปยังไฟล์ที่ระบุในรูปแบบ JPEG

คลาส JFreeChart

คลาส JFreeChart เป็นคลาสหลักภายใต้ org.jfree.chartแพ็คเกจ คลาสนี้มีเมธอด JFreeChart เพื่อสร้างแผนภูมิแท่งแผนภูมิเส้นแผนภูมิวงกลมและผัง xy รวมทั้งข้อมูลอนุกรมเวลา

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

JfreeChart(Plot plot)

ตัวสร้างนี้สร้างแผนภูมิใหม่ตามพล็อตที่ให้มา

2

JfreeChart(java.lang.String title, java.awt.Font titleFont, Plot plot, boolean createLegend)

ตัวสร้างนี้สร้างแผนภูมิใหม่พร้อมชื่อเรื่องและพล็อตที่กำหนด

3

JfreeChart(java.lang.String title, Plot plot)

ตัวสร้างนี้สร้างแผนภูมิใหม่พร้อมชื่อเรื่องและพล็อตที่กำหนด

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

getXYPlot()

วิธีนี้ส่งกลับแผนภูมิลงจุดเป็น XYPlot. การใช้ XYPolt เราสามารถดำเนินการยูทิลิตี้บางอย่างบนแผนภูมิ xy

คลาส PiePlot

คลาสนี้เป็นส่วนหนึ่งของ org.jfree.chart.plotแพ็กเกจและขยายคลาส Plot จากแพ็คเกจเดียวกัน คลาสนี้มีวิธีการสร้าง Pie Plots

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

PiePlot()

มันสร้างพล็อตใหม่

2

PiePlot(PieDataset dataset)

สร้างพล็อตที่วาดแผนภูมิวงกลมสำหรับชุดข้อมูลที่ระบุ

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

setStartAngle(double angle)

วิธีนี้กำหนดมุมเริ่มต้นและส่ง PlotChangeEvent ไปยังผู้ฟังที่ลงทะเบียนทั้งหมด

คลาส PiePlot3D

คลาส PiePlot3D เป็นคลาสย่อยของคลาส PiePlot ภายใต้แพ็คเกจเดียวกัน ดังนั้นคลาสนี้จึงมีคุณสมบัติเช่นเดียวกับคลาส PiePlot ยกเว้นจะใช้ในการสร้างพล็อต 3 มิติ

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

PiePlot3D()

ตัวสร้างนี้สร้างอินสแตนซ์ใหม่โดยไม่มีชุดข้อมูล

2

PiePlot3D(PieDataset dataset)

ตัวสร้างนี้สร้างแผนภูมิวงกลมที่มีเอฟเฟกต์สามมิติโดยใช้ชุดข้อมูลที่ระบุ

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

setForegroundAlpha(float alpha)

ตั้งค่าอัลฟาโปร่งใสสำหรับพล็อตและส่ง PlotChangeEvent ไปยังผู้ฟังที่ลงทะเบียนทั้งหมด ซึ่งนำมาจากคลาส Plot หลัก

2

setInteriorGap(double percent)

มันกำหนดช่องว่างภายในและส่ง PlotChangeEvent ไปยังผู้ฟังที่ลงทะเบียนทั้งหมด สิ่งนี้ควบคุมช่องว่างระหว่างขอบของพล็อตพายและพื้นที่พล็อตเอง (กล่าวคือพื้นที่ที่มีป้ายชื่อส่วนปรากฏ) วิธีนี้นำมาจากคลาสแม่แบบ PiePlot

PlotOrientation Class

นี่คือคลาสอนุกรมที่มีอยู่ใน org.jfree.chart.plotแพ็คเกจและใช้เพื่อแสดงการวางแนวของพล็อต 2 มิติ การวางแนวอาจเป็นได้vertical หรือ horizontal. มันตั้งค่าการวางแนวของแกน Y พล็อตธรรมดามีแกน Y แนวตั้ง

สรุปฟิลด์

ส. เลขที่ ประเภท ฟิลด์และคำอธิบาย
1 พล็อต HORIZONTAL สำหรับพล็อตที่แกนช่วง (แกน Y) เป็นแนวนอน
2 พล็อต VERTICALสำหรับพล็อตที่แกนช่วง (แกน Y) เป็นแนวตั้ง นี่คือการวางแนวเริ่มต้น

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

isHorizontal()

วิธีนี้จะคืนค่าจริงหากการวางแนวนี้เป็นแนวนอนและเป็นเท็จ

2

isVertical()

วิธีนี้จะคืนค่าจริงหากการวางแนวนี้เป็นแนวตั้งและเป็นเท็จ

คลาส XYPlot

นี่คือคลาสทั่วไปที่มีอยู่ใน org.jfree.chart.plotแพ็กเกจและใช้สำหรับการลงจุดข้อมูลในรูปแบบคู่ (x, y) พล็อตนี้สามารถใช้ข้อมูลจากคลาสอื่น ๆ ที่ใช้ XYDataSet Interface XYPlot ใช้ XYItemRenderer เพื่อวาดแต่ละจุดบนพล็อต

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

XYPlot()

ผู้รับเหมารายนี้สร้างอินสแตนซ์ XYPlot ใหม่โดยไม่มีชุดข้อมูลไม่มีแกนและไม่มีตัวแสดงผล

2

XYPlot(XYDataset dataset, ValueAxis domainAxis, ValueAxis rangeAxis, XYItemRenderer renderer)

ตัวสร้างนี้สร้างพล็อตใหม่โดยมีชุดข้อมูลแกนและตัวแสดงผลที่ระบุ

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

setRenderer(XYItemRenderer renderer)

วิธีนี้ตั้งค่าตัวแสดงผลสำหรับชุดข้อมูลหลักและส่งเหตุการณ์การเปลี่ยนแปลงไปยังผู้ฟังที่ลงทะเบียนทั้งหมด

คลาส NumberAxis

ชั้นเรียนนี้มีให้ใน org.jfree.chart.axisแพคเกจและสามารถเข้าถึงข้อมูลตัวเลขของแกนใดก็ได้ เมื่อเราตั้งค่าช่วงของแกนใด ๆ เป็นค่าเริ่มต้นมันจะพอดีกับช่วงของข้อมูล แต่เมื่อใช้ NumberAxis คลาสเราสามารถกำหนดระยะขอบล่างและระยะขอบบนของโดเมนและแกนช่วงได้

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

NumberAxis( )

นี่คือตัวสร้างเริ่มต้นของ NumberAxis

2

NumberAxis( java.lang.String label)

Constructor NumberAxis ใช้ค่าดีฟอลต์เมื่อจำเป็น

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

setLowerMargin(double margin)

กำหนดระยะขอบล่างสำหรับแกน (เป็นเปอร์เซ็นต์ของช่วงแกน) และส่งไฟล์ AxisChangeEventให้กับผู้ฟังที่ลงทะเบียนทั้งหมด วิธีนี้นำมาจากคลาสแม่ของคลาส ValueAxis

2

setUpperMargin(double margin)

กำหนดระยะขอบบนสำหรับแกน (เป็นเปอร์เซ็นต์ของช่วงแกน) และส่งไฟล์ AxisChangeEventให้กับผู้ฟังที่ลงทะเบียนทั้งหมด วิธีนี้ยังมีอยู่ใน ValueAxis Class

คลาส XYLineAndShapeRenderer

นี่คือคลาสที่มีอยู่ภายใต้ org.jfree.chart.renderer.xyแพคเกจซึ่งดูแลการเชื่อมต่อจุดข้อมูลด้วยเส้นและวาดรูปร่างที่จุดข้อมูลแต่ละจุด คลาส renderer นี้ออกแบบมาเพื่อใช้กับไฟล์XYPlot ชั้นเรียน.

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

XYLineAndShapeRenderer()

สร้างตัวแสดงภาพใหม่โดยมองเห็นทั้งเส้นและรูปร่าง

2

XYLineAndShapeRenderer (เส้นบูลีนรูปร่างบูลีน)

สร้างตัวแสดงผลใหม่พร้อมคุณสมบัติเฉพาะ

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

setSeriesPaint(int series, java.awt.Paint paint)

วิธีนี้ตั้งค่าสีที่ใช้สำหรับซีรีส์และส่งไฟล์ RendererChangeEventให้กับผู้ฟังที่ลงทะเบียนทั้งหมด วิธีนี้นำมาจากคลาสนามธรรม AbstratRenderer จากแพ็คเกจ renderer ใน JFreeChart API

2

setSeriesStroke(int series, java.awt.Stroke stroke)

วิธีนี้ตั้งค่าจังหวะที่ใช้สำหรับอนุกรมและส่งไฟล์ RendererChangeEventให้กับผู้ฟังที่ลงทะเบียนทั้งหมด วิธีนี้นำมาจากคลาสนามธรรม AbstratRenderer ซึ่งเป็นคลาสระดับสูงของแพ็คเกจนี้

ชุดข้อมูลทั่วไปของ XYItemRenderer

นี่คืออินเทอร์เฟซสำหรับการแสดงผลรูปแบบของรายการเดียว (x, y) บน XYPlot แพคเกจคือorg.Jfree.data.generalซึ่งมีคลาสและอินเทอร์เฟซสำหรับกำหนดชุดข้อมูลประเภทต่างๆเพื่อสร้างแผนภูมิ

PieDataset

นี่คืออินเทอร์เฟซที่ใช้เป็นชุดข้อมูลสำหรับวัตถุประสงค์ทั่วไปโดยที่ค่าต่างๆเกี่ยวข้องกับคีย์ ตามชื่อที่แนะนำคุณสามารถใช้ชุดข้อมูลนี้เพื่อจัดหาข้อมูลสำหรับแผนภูมิวงกลม อินเทอร์เฟซนี้ขยายอินเตอร์เฟส KeyedValues ​​และ DataSet เมธอดทั้งหมดที่ใช้สำหรับอินเทอร์เฟซนี้นำมาจากอินเตอร์เฟส KeyedValues, Values ​​และ Dataset

คลาส DefaultPieDataset

นี่คือคลาสการใช้งานเริ่มต้นของอินเทอร์เฟซ PieDataset

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

DefaultPieDataset()

ตัวสร้างนี้สร้างชุดข้อมูลใหม่โดยเริ่มต้นว่างเปล่า

2

DefaultPieDataset(KeyedValues data)

สร้างชุดข้อมูลใหม่โดยการคัดลอกข้อมูลจากไฟล์ KeyedValues ตัวอย่าง.

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

setValue(java.lang.Comparable key, double value)

ตั้งค่าข้อมูลสำหรับคีย์และส่งไฟล์ DatasetChangeEvent ให้กับผู้ฟังที่ลงทะเบียนทั้งหมด

2

setValue(java.lang.Comparable key, java.lang.Number value)

ตั้งค่าข้อมูลสำหรับคีย์และส่งไฟล์ DatasetChangeEvent ให้กับผู้ฟังที่ลงทะเบียนทั้งหมด

ระดับ SeriesException

นี่คือคลาสยกเว้น ทำให้เกิดข้อยกเว้นในชุดเวลาของข้อมูลในชุดข้อมูล มีข้อยกเว้นเกิดขึ้นเมื่อเกิดข้อมูลซ้ำหรือไม่ถูกต้อง ต้องไม่ใช้อนุกรมเวลากับรายการที่ซ้ำกันและรูปแบบต้องถูกต้อง

DefaultCategoryDataset

นี่คือคลาสการใช้งานเริ่มต้นของอินเทอร์เฟซ CategoryDataset

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

DefaultCategoryDataset()

ตัวสร้างนี้สร้างชุดข้อมูลใหม่ที่ว่างเปล่า

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

addValue(double value, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

วิธีนี้จะเพิ่มค่าให้กับตารางโดยใช้คีย์ที่เทียบเคียงได้

2

addValue(java.lang.Number value, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

วิธีนี้จะเพิ่มค่าให้กับตาราง

3

setValue(double value, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

วิธีนี้จะเพิ่มหรืออัปเดตค่าในตารางและส่งไฟล์ DatasetChangeEvent ให้กับผู้ฟังที่ลงทะเบียนทั้งหมด

4

setValue(java.lang.Number value, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

วิธีนี้จะเพิ่มหรืออัปเดตค่าในตารางและส่งไฟล์ DatasetChangeEvent ให้กับผู้ฟังที่ลงทะเบียนทั้งหมด

อ้างอิง JFreeChart API สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการและฟิลด์อื่น ๆ

ชุดข้อมูลชุดข้อมูล

ชุดข้อมูลใช้โดยแผนภูมิ XY แพคเกจคือorg.Jfree.data.xyซึ่งมีคลาสและอินเทอร์เฟซที่เป็นของแผนภูมิ xy อินเทอร์เฟซหลักคือ XYDataset

XYDataset

นี่คืออินเทอร์เฟซที่สามารถเข้าถึงข้อมูลในรูปแบบของรายการ (x, y) ได้ ตามชื่อที่แนะนำคุณสามารถใช้ชุดข้อมูลนี้เพื่อแสดงแผนภูมิ XY วิธีการบางอย่างในอินเทอร์เฟซนี้นำมาจากอินเทอร์เฟซ SeriesDateset

XYZ ชุดข้อมูล

นี่คืออินเทอร์เฟซที่สามารถเข้าถึงข้อมูลในรูปแบบของรายการ (x, y, z) ได้ ตามชื่อที่แนะนำคุณสามารถใช้ชุดข้อมูลนี้เพื่อแสดงแผนภูมิ XYZ วิธีการบางอย่างในอินเทอร์เฟซนี้นำมาจาก SeriesDateset

XYSeries

นี่คือคลาสซึ่งแสดงถึงลำดับของรายการข้อมูลที่เป็นศูนย์หรือมากกว่าในรูปแบบ (x, y) โดยค่าเริ่มต้นรายการในชุดจะเรียงลำดับจากน้อยไปมากตามค่า x และอนุญาตให้มีค่า x ซ้ำกัน ทั้งการเรียงลำดับและค่าเริ่มต้นที่ซ้ำกันสามารถเปลี่ยนแปลงได้ในตัวสร้าง ค่า Y สามารถแสดงเป็นค่าว่างเพื่อแทนค่าที่ขาดหายไป

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

XYSeries(java.lang.Comparable key)

ตัวสร้างนี้สร้างชุดว่างใหม่

2

XYSeries(java.lang.Comparable key, boolean autoSort)

สร้างชุดว่างใหม่โดยมีการตั้งค่าสถานะการเรียงลำดับอัตโนมัติตามที่ร้องขอและอนุญาตให้มีค่าที่ซ้ำกัน

3

XYSeries(java.lang.Comparable key, boolean autoSort, boolean allowDuplicateXValues)

สร้างชุด xy ใหม่ที่ไม่มีข้อมูล

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

add(double x, double y)

วิธีนี้จะเพิ่มรายการข้อมูลลงในชุดข้อมูล

วิธีการข้างต้นใช้ในตัวอย่างบทช่วยสอน หากคุณต้องการเรียนรู้วิธีการและฟิลด์ที่เหลือโปรดอ้างอิง JFreeChart API

XYSeriesCollection

คลาส XYSeriesCollection มีคลาสหลักเช่น AbstractIntervelDataset, AbstractXYDatset, AbstractSeriesDataset และ AbstractDataset วิธีการบางอย่างในคลาสนี้เป็นของคลาสพาเรนต์ของคลาสนี้

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

XYSeriesCollection()

สร้างชุดข้อมูลว่างเปล่า

2

XYSeriesCollection(XYSeries xyseries)

สร้างชุดข้อมูลและเติมข้อมูลด้วยชุดข้อมูลชุดเดียว

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

addSeries(XYSeries series)

วิธีนี้จะเพิ่มชุดลงในคอลเลกชันและส่งไฟล์ DatasetChangeEvent ให้กับผู้ฟังที่ลงทะเบียนทั้งหมด

อ้างอิง JFreeChart API สำหรับวิธีการและฟิลด์ที่เหลือ

XYZDataset เริ่มต้น

คลาส DefaultXYZDataset มีคลาสแม่เช่น AbstractIntervelDataset, AbstractXYDatset, AbstractSeriesDataset, AbstractDataset และ AbstractXYZDataset วิธีการบางอย่างในคลาสนี้เป็นของคลาสพาเรนต์ของคลาสนี้

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

DefaultXYZDataset()

สร้างชุดข้อมูลว่างเปล่า

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

addSeries(java.lang.Comparable seriesKey, double[ ][ ] data )

วิธีนี้จะเพิ่มชุดลงในคอลเลกชันและส่งไฟล์ DatasetChangeEvent ให้กับผู้ฟังที่ลงทะเบียนทั้งหมด

โปรดอ้างอิง JFreeChart API สำหรับวิธีการและฟิลด์ที่เหลือ

อนุกรมเวลาใน JFreeCharts

แพคเกจคือ org.jfree.data.time. แพคเกจนี้ประกอบด้วยคลาสและอินเทอร์เฟซซึ่งใช้สำหรับข้อมูลที่เกี่ยวข้องกับเวลา

TimeSeries

คลาสนี้แสดงลำดับของรายการข้อมูลในรูปแบบของค่าคาบโดยที่ period เป็นอินสแตนซ์ของคลาสนามธรรม RegularTimePeriod เช่นคลาส Time, Day, Hour, Minute และ Second

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

TimeSeries(java.lang.Comparable name)

สร้างชุดใหม่ที่ว่างเปล่า

2

TimeSeries(java.lang.Comarable name, java.lang.String domain, java.lang.Strin range)

สร้างอนุกรมเวลาใหม่ที่ไม่มีข้อมูล

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

add(RegularTimePeriod period,double value)

วิธีนี้จะเพิ่มรายการข้อมูลใหม่ให้กับชุดข้อมูล

อ้างอิง JFreeChart API สำหรับวิธีการและฟิลด์ที่เหลือ

TimeSeriesCollection

นี่คือคลาสที่ใช้เป็นชุดของออบเจ็กต์อนุกรมเวลา คลาสนี้ใช้อินเทอร์เฟซ XYDataset และขยายอินเตอร์เฟซ IntervelXYDataset ทำให้สะดวกในการรวบรวมวัตถุข้อมูลแบบอนุกรม

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

TimeSeriesCollection()

สร้างชุดข้อมูลว่างโดยเชื่อมโยงกับเขตเวลาเริ่มต้น

2

TimeSeriesCollection(TimeSeries ชุด)

สร้างชุดข้อมูลที่มีชุดข้อมูลเดียว (สามารถเพิ่มได้มากขึ้น) โดยเชื่อมโยงกับเขตเวลาเริ่มต้น

3

TimeSeriesCollection(TimeSeries series โซน java.util.TimeZone)

สร้างชุดข้อมูลที่มีชุดข้อมูลชุดเดียว (สามารถเพิ่มได้มากกว่านี้) โดยเชื่อมโยงกับเขตเวลาเฉพาะ

4

TimeSeriesCollection(โซน java.util.TimeZone)

สร้างชุดข้อมูลว่างโดยเชื่อมโยงกับเขตเวลาเฉพาะ

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

addSeries(TimeSeries ชุด)

วิธีนี้จะเพิ่มชุดลงในคอลเลกชันและส่งไฟล์ DatasetChangeEvent ให้กับผู้ฟังที่ลงทะเบียนทั้งหมด

โปรดอ้างอิง JFreeChart API สำหรับวิธีการและฟิลด์ที่เหลือ

ประการที่สอง

ชั้นเรียนนี้แสดงถึงวินาทีในวันหนึ่ง ๆ คลาสนี้ไม่เปลี่ยนรูปซึ่งเป็นข้อกำหนดสำหรับคลาสย่อย RegularTimePeriod ทั้งหมด

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

Second()

มันสร้างวินาทีใหม่ตามวันที่ / เวลาของระบบ

2

Second(java.util.Date time)

มันสร้างอินสแตนซ์ใหม่จากวันที่ / เวลาที่ระบุและเขตเวลาเริ่มต้น

3

Second(java.util.Date time, java.util.TimeZone zone, java.util.Locale locale)

จะสร้างวินาทีใหม่ตามเวลาและเขตเวลาที่ระบุ

4

Second(int second, int minute, int hour, int day, int month, int year

มันสร้างวินาทีใหม่

5

Second(int second, Minute minute)

มันสร้างวินาทีใหม่

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

getSecond()

ส่งกลับวินาทีภายในนาที

2

next()

ส่งคืนวินาทีถัดจากวินาทีปัจจุบัน

โปรดอ้างอิง JFreeChart API สำหรับวิธีการและฟิลด์ที่เหลือ

เฟรมใน JFreeCharts

แพคเกจคือ org.jfree.ui. แพคเกจนี้เป็นของ JCommons API ของ JFreeChart ประกอบด้วยคลาสยูทิลิตี้ที่ใช้สำหรับสร้างเฟรมสำหรับแผนภูมิที่กำหนดค่าไว้ล่วงหน้า

ApplicationFrame

นี่คือคลาสพื้นฐานสำหรับการสร้างเฟรมหลักสำหรับแอปพลิเคชันง่ายๆ เฟรมจะรับฟังเหตุการณ์การปิดหน้าต่างและตอบสนองโดยการปิด JVM ใช้ได้ดีสำหรับแอปพลิเคชันสาธิตขนาดเล็ก สำหรับแอปพลิเคชันระดับองค์กรคุณต้องใช้สิ่งที่มีประสิทธิภาพมากขึ้น เมธอดหลักหลักในคลาสนี้นำมาจากคลาส Component, Container, Window, Frame และ Jframe

ตัวสร้างคลาส

ส. เลขที่ ตัวสร้างและคำอธิบาย
1

ApplicationFrame(java.lang.String title)

สร้างกรอบแอปพลิเคชันที่มีชื่อสตริง

คลาสนี้ช่วยในการสร้าง AWT Frames นี่คือเหตุผลว่าทำไมเราถึงใช้คลาสนี้เป็นซุปเปอร์คลาสในตัวอย่างบทช่วยสอนนี้

วิธีการซึ่งใช้ในรูปแบบคลาสพาเรนต์ใช้สำหรับการเปิดเฟรมปิดเฟรมเปลี่ยนขนาดเปลี่ยนพื้นหลังหรือสีพื้นหน้าและผู้ฟัง

โรงกลั่น

นี่คือชุดวิธีการยูทิลิตี้คลาสที่เกี่ยวข้องกับส่วนต่อประสานผู้ใช้

วิธีการเรียน

ส. เลขที่ วิธีการและคำอธิบาย
1

centerFrameOnScreen(java.awt.Window frame)

วางกรอบที่ระบุไว้ตรงกลางหน้าจอ

วิธีการข้างต้นใช้ในตัวอย่างบทช่วยสอน อ้างอิง JFreeChart API สำหรับวิธีการและฟิลด์ที่เหลือ

ในแผนภูมิวงกลมความยาวส่วนโค้งของแต่ละส่วนเป็นสัดส่วนกับปริมาณที่แสดง บทนี้แสดงให้เห็นถึงวิธีที่เราสามารถใช้ JFreeChart เพื่อสร้างPie Chart จากชุดข้อมูลธุรกิจที่กำหนด

ข้อมูลธุรกิจ

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการขายบนมือถือด้วยความช่วยเหลือของแผนภูมิวงกลม ต่อไปนี้เป็นรายชื่อแบรนด์มือถือต่างๆและยอดขาย (หน่วยต่อวัน)

ส. เลขที่ แบรนด์มือถือ ยอดขาย (หน่วยต่อวัน)
1 ไอโฟน 5 เอส 20
2 ซัมซุงแกรนด์ 20
3 MOTO G 40
4 Nokia Lumia 10

แอปพลิเคชันที่ใช้ AWT

ต่อไปนี้เป็นรหัสสำหรับสร้างแผนภูมิวงกลมโดยใช้ข้อมูลที่ระบุข้างต้น รหัสนี้ช่วยให้คุณฝังแผนภูมิวงกลมในแอปพลิเคชันที่ใช้ AWT

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
 
public class PieChart_AWT extends ApplicationFrame {
   
   public PieChart_AWT( String title ) {
      super( title ); 
      setContentPane(createDemoPanel( ));
   }
   
   private static PieDataset createDataset( ) {
      DefaultPieDataset dataset = new DefaultPieDataset( );
      dataset.setValue( "IPhone 5s" , new Double( 20 ) );  
      dataset.setValue( "SamSung Grand" , new Double( 20 ) );   
      dataset.setValue( "MotoG" , new Double( 40 ) );    
      dataset.setValue( "Nokia Lumia" , new Double( 10 ) );  
      return dataset;         
   }
   
   private static JFreeChart createChart( PieDataset dataset ) {
      JFreeChart chart = ChartFactory.createPieChart(      
         "Mobile Sales",   // chart title 
         dataset,          // data    
         true,             // include legend   
         true, 
         false);

      return chart;
   }
   
   public static JPanel createDemoPanel( ) {
      JFreeChart chart = createChart(createDataset( ) );  
      return new ChartPanel( chart ); 
   }

   public static void main( String[ ] args ) {
      PieChart_AWT demo = new PieChart_AWT( "Mobile Sales" );  
      demo.setSize( 560 , 367 );    
      RefineryUtilities.centerFrameOnScreen( demo );    
      demo.setVisible( true ); 
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ PieChart_AWT.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac PieChart_AWT.java $java PieChart_AWT

หากทุกอย่างเรียบร้อยมันจะรวบรวมและเรียกใช้เพื่อสร้าง Pie Graph ต่อไปนี้ -

หากคุณไม่จำเป็นต้องฝังแผนภูมิของคุณในแอปพลิเคชันใด ๆ คุณสามารถสร้างภาพแผนภูมิได้ที่พรอมต์คำสั่ง JFreeChart ช่วยให้คุณสามารถบันทึกภาพแผนภูมิในรูปแบบ JPG หรือ PNG

การสร้างภาพ JPEG

ให้เราเขียนตัวอย่างด้านบนอีกครั้งเพื่อสร้างภาพ JPEG จากบรรทัดคำสั่ง ต่อไปนี้เป็น API สองรายการที่จัดเตรียมโดยไลบรารี JFreeChart ซึ่งคุณสามารถใช้เพื่อสร้างภาพ PNG หรือ JPEG ตามความต้องการของคุณ

  • saveChartAsPNG() - API เพื่อบันทึกภาพในรูปแบบ PNG

  • saveChartAsJPEG() - API เพื่อบันทึกภาพในรูปแบบ JPEG

import java.io.*;

import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class PieChart {
   
   public static void main( String[ ] args ) throws Exception {
      DefaultPieDataset dataset = new DefaultPieDataset( );
      dataset.setValue("IPhone 5s", new Double( 20 ) );
      dataset.setValue("SamSung Grand", new Double( 20 ) );
      dataset.setValue("MotoG", new Double( 40 ) );
      dataset.setValue("Nokia Lumia", new Double( 10 ) );

      JFreeChart chart = ChartFactory.createPieChart(
         "Mobile Sales",   // chart title
         dataset,          // data
         true,             // include legend
         true,
         false);
         
      int width = 640;   /* Width of the image */
      int height = 480;  /* Height of the image */ 
      File pieChart = new File( "PieChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height );
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ PieChart.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac PieChart.java $java PieChart

หากทุกอย่างเรียบร้อยดีก็จะรวบรวมและเรียกใช้เพื่อสร้างไฟล์ภาพ JPEG ที่ชื่อ PieChart.jpeg ในไดเรกทอรีปัจจุบันของคุณ

บทนี้แสดงให้เห็นถึงวิธีที่คุณสามารถใช้ JFreeChart เพื่อสร้าง Bar Chart จากชุดข้อมูลธุรกิจที่กำหนด

แผนภูมิแท่งใช้แถบการวางแนวที่แตกต่างกัน (แนวนอนหรือแนวตั้ง) เพื่อแสดงการเปรียบเทียบในหมวดหมู่ต่างๆ แกนหนึ่ง (แกนโดเมน) ของแผนภูมิแสดงโดเมนเฉพาะที่กำลังเปรียบเทียบและอีกแกน (แกนช่วง) แสดงค่าที่ไม่ต่อเนื่อง

ข้อมูลธุรกิจ

ตัวอย่างต่อไปนี้แสดงสถิติรถยนต์ต่างๆโดยใช้แผนภูมิแท่ง ต่อไปนี้เป็นรายชื่อยี่ห้อรถยนต์พร้อมคุณสมบัติที่แตกต่างกันซึ่งเราจะแสดงโดยใช้แผนภูมิแท่ง -

รถยนต์ ความเร็ว คะแนนของผู้ใช้ มิลเลจ ความปลอดภัย
Fiat 1.0 3.0 5.0 5.0
Audi 5.0 6.0 10.0 4.0
Ford 4.0 2.0 3.0 6.0

แอปพลิเคชันที่ใช้ AWT

ต่อไปนี้เป็นรหัสสำหรับสร้างแผนภูมิแท่งจากข้อมูลที่ระบุข้างต้น รหัสนี้ช่วยให้คุณฝังแผนภูมิแท่งในแอปพลิเคชันที่ใช้ AWT

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset; 
import org.jfree.data.category.DefaultCategoryDataset; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities; 

public class BarChart_AWT extends ApplicationFrame {
   
   public BarChart_AWT( String applicationTitle , String chartTitle ) {
      super( applicationTitle );        
      JFreeChart barChart = ChartFactory.createBarChart(
         chartTitle,           
         "Category",            
         "Score",            
         createDataset(),          
         PlotOrientation.VERTICAL,           
         true, true, false);
         
      ChartPanel chartPanel = new ChartPanel( barChart );        
      chartPanel.setPreferredSize(new java.awt.Dimension( 560 , 367 ) );        
      setContentPane( chartPanel ); 
   }
   
   private CategoryDataset createDataset( ) {
      final String fiat = "FIAT";        
      final String audi = "AUDI";        
      final String ford = "FORD";        
      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 , fiat , speed );        
      dataset.addValue( 3.0 , fiat , userrating );        
      dataset.addValue( 5.0 , fiat , millage ); 
      dataset.addValue( 5.0 , fiat , safety );           

      dataset.addValue( 5.0 , audi , speed );        
      dataset.addValue( 6.0 , audi , userrating );       
      dataset.addValue( 10.0 , audi , millage );        
      dataset.addValue( 4.0 , audi , safety );

      dataset.addValue( 4.0 , ford , speed );        
      dataset.addValue( 2.0 , ford , userrating );        
      dataset.addValue( 3.0 , ford , millage );        
      dataset.addValue( 6.0 , ford , safety );               

      return dataset; 
   }
   
   public static void main( String[ ] args ) {
      BarChart_AWT chart = new BarChart_AWT("Car Usage Statistics", 
         "Which car do you like?");
      chart.pack( );        
      RefineryUtilities.centerFrameOnScreen( chart );        
      chart.setVisible( true ); 
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ BarChart_AWT.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac BarChar_AWT.java $java BarChart_AWT

หากทุกอย่างเรียบร้อยก็จะคอมไพล์และเรียกใช้เพื่อสร้าง Bar Graph ต่อไปนี้ -

การสร้างภาพ JPEG

ให้เราเขียนตัวอย่างด้านบนอีกครั้งเพื่อสร้างภาพ JPEG จากบรรทัดคำสั่ง

import java.io.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.ChartUtilities;

public class BarChart {
   
   public static void main( String[ ] args )throws Exception {
      final String fiat = "FIAT";
      final String audi = "AUDI";
      final String ford = "FORD";
      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 , fiat , speed );
      dataset.addValue( 3.0 , fiat , userrating );
      dataset.addValue( 5.0 , fiat , millage );
      dataset.addValue( 5.0 , fiat , safety );

      dataset.addValue( 5.0 , audi , speed );
      dataset.addValue( 6.0 , audi , userrating );
      dataset.addValue( 10.0 , audi , millage );
      dataset.addValue( 4.0 , audi , safety );

      dataset.addValue( 4.0 , ford , speed );
      dataset.addValue( 2.0 , ford , userrating );
      dataset.addValue( 3.0 , ford , millage );
      dataset.addValue( 6.0 , ford , safety );

      JFreeChart barChart = ChartFactory.createBarChart(
         "CAR USAGE STATIStICS", 
         "Category", "Score", 
         dataset,PlotOrientation.VERTICAL, 
         true, true, false);
         
      int width = 640;    /* Width of the image */
      int height = 480;   /* Height of the image */ 
      File BarChart = new File( "BarChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( BarChart , barChart , width , height );
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ในไฟล์ BarChart.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่แจ้งเป็น -

$javac BarChart.java $java BarChart

หากทุกอย่างเรียบร้อยดีก็จะรวบรวมและเรียกใช้เพื่อสร้างไฟล์ภาพ JPEG ที่ชื่อ BarChart.jpeg ในไดเรกทอรีปัจจุบันของคุณ

แผนภูมิเส้นหรือกราฟเส้นแสดงข้อมูลเป็นชุดของจุดข้อมูล (เครื่องหมาย) ที่เชื่อมต่อกันด้วยส่วนของเส้นตรง แผนภูมิเส้นแสดงให้เห็นว่าข้อมูลเปลี่ยนแปลงอย่างไรที่ความถี่เวลาเท่ากัน

บทนี้แสดงให้เห็นถึงวิธีที่เราสามารถใช้ JFreeChart เพื่อสร้าง Line Chart จากชุดข้อมูลธุรกิจที่กำหนด

ข้อมูลธุรกิจ

ตัวอย่างต่อไปนี้วาดแผนภูมิเส้นเพื่อแสดงแนวโน้มของจำนวนโรงเรียนที่เปิดในปีต่างๆเริ่มตั้งแต่ปี 1970

ให้ข้อมูลดังนี้ -

ปี จำนวนโรงเรียน
พ.ศ. 2513 15
พ.ศ. 2523 30
พ.ศ. 2533 60
พ.ศ. 2543 120
พ.ศ. 2556 240
พ.ศ. 2557 300

แอปพลิเคชันที่ใช้ AWT

ต่อไปนี้เป็นรหัสสำหรับสร้างแผนภูมิเส้นจากข้อมูลด้านบนที่ระบุ รหัสนี้ช่วยให้คุณฝังแผนภูมิเส้นในแอปพลิเคชันที่ใช้ AWT

import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineChart_AWT extends ApplicationFrame {

   public LineChart_AWT( String applicationTitle , String chartTitle ) {
      super(applicationTitle);
      JFreeChart lineChart = ChartFactory.createLineChart(
         chartTitle,
         "Years","Number of Schools",
         createDataset(),
         PlotOrientation.VERTICAL,
         true,true,false);
         
      ChartPanel chartPanel = new ChartPanel( lineChart );
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
      setContentPane( chartPanel );
   }

   private DefaultCategoryDataset createDataset( ) {
      DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
      dataset.addValue( 15 , "schools" , "1970" );
      dataset.addValue( 30 , "schools" , "1980" );
      dataset.addValue( 60 , "schools" ,  "1990" );
      dataset.addValue( 120 , "schools" , "2000" );
      dataset.addValue( 240 , "schools" , "2010" );
      dataset.addValue( 300 , "schools" , "2014" );
      return dataset;
   }
   
   public static void main( String[ ] args ) {
      LineChart_AWT chart = new LineChart_AWT(
         "School Vs Years" ,
         "Numer of Schools vs years");

      chart.pack( );
      RefineryUtilities.centerFrameOnScreen( chart );
      chart.setVisible( true );
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ LineChart_AWT.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac LineChart_AWT.java $java LineChart_AWT

หากทุกอย่างเรียบร้อยก็จะคอมไพล์และรันเพื่อสร้าง Line Graph ต่อไปนี้ -

การสร้างภาพ JPEG

ให้เราเขียนตัวอย่างด้านบนอีกครั้งเพื่อสร้างภาพ JPEG จากบรรทัดคำสั่ง

import java.io.*;

import org.jfree.chart.JFreeChart; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineChart {

   public static void main( String[ ] args ) throws Exception {
      DefaultCategoryDataset line_chart_dataset = new DefaultCategoryDataset();
      line_chart_dataset.addValue( 15 , "schools" , "1970" );
      line_chart_dataset.addValue( 30 , "schools" , "1980" );
      line_chart_dataset.addValue( 60 , "schools" , "1990" );
      line_chart_dataset.addValue( 120 , "schools" , "2000" );
      line_chart_dataset.addValue( 240 , "schools" , "2010" ); 
      line_chart_dataset.addValue( 300 , "schools" , "2014" );

      JFreeChart lineChartObject = ChartFactory.createLineChart(
         "Schools Vs Years","Year",
         "Schools Count",
         line_chart_dataset,PlotOrientation.VERTICAL,
         true,true,false);

      int width = 640;    /* Width of the image */
      int height = 480;   /* Height of the image */ 
      File lineChart = new File( "LineChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG(lineChart ,lineChartObject, width ,height);
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ LineChart.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac LineChart.java $java LineChart

หากทุกอย่างเรียบร้อยดีก็จะรวบรวมและดำเนินการเพื่อสร้างไฟล์ภาพ JPEG ที่ชื่อ LineChart.jpeg ในไดเรกทอรีปัจจุบันของคุณ

แผนภูมิ XY (กระจาย) ขึ้นอยู่กับชุดข้อมูลหนึ่งชุดซึ่งประกอบด้วยรายการค่า X และ Y แต่ละคู่ค่า (X, Y) คือจุดในระบบพิกัด ที่นี่ค่าหนึ่งจะกำหนดตำแหน่งแนวนอน (X) และอีกค่าหนึ่งกำหนดตำแหน่งแนวตั้ง (Y) บทนี้แสดงให้เห็นถึงวิธีที่เราสามารถใช้ JFreeChart เพื่อสร้างXY Chart จากชุดข้อมูลธุรกิจที่กำหนด

ข้อมูลธุรกิจ

ลองพิจารณาตัวอย่างที่เราต้องการสร้างแผนภูมิ XY สำหรับเบราว์เซอร์หลักทั้งหมด ที่นี่คะแนนประสิทธิภาพที่แตกต่างกันรวบรวมจากบุคคลประเภทต่างๆดังที่แสดงด้านล่าง -

Firefox หมวดหมู่ (X) คะแนน (Y)
1.0 1.0
2.0 4.0
3.0 3.0
Chrome หมวดหมู่ (X) คะแนน (Y)
1.0 4.0
2.0 5.0
3.0 6.0
IE หมวดหมู่ (X) คะแนน (Y)
3.0 4.0
4.0 5.0
5.0 4.0

แอปพลิเคชันที่ใช้ AWT

ต่อไปนี้เป็นรหัสสำหรับสร้างแผนภูมิ XY จากข้อมูลที่ระบุข้างต้น รหัสนี้ช่วยให้คุณฝังแผนภูมิ XY ในแอปพลิเคชันที่ใช้ AWT

import java.awt.Color; 
import java.awt.BasicStroke; 

import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.data.xy.XYSeries; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.xy.XYSeriesCollection; 
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;

public class XYLineChart_AWT extends ApplicationFrame {

   public XYLineChart_AWT( String applicationTitle, String chartTitle ) {
      super(applicationTitle);
      JFreeChart xylineChart = ChartFactory.createXYLineChart(
         chartTitle ,
         "Category" ,
         "Score" ,
         createDataset() ,
         PlotOrientation.VERTICAL ,
         true , true , false);
         
      ChartPanel chartPanel = new ChartPanel( xylineChart );
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
      final XYPlot plot = xylineChart.getXYPlot( );
      
      XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
      renderer.setSeriesPaint( 0 , Color.RED );
      renderer.setSeriesPaint( 1 , Color.GREEN );
      renderer.setSeriesPaint( 2 , Color.YELLOW );
      renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
      renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );
      renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );
      plot.setRenderer( renderer ); 
      setContentPane( chartPanel ); 
   }
   
   private XYDataset createDataset( ) {
      final XYSeries firefox = new XYSeries( "Firefox" );          
      firefox.add( 1.0 , 1.0 );          
      firefox.add( 2.0 , 4.0 );          
      firefox.add( 3.0 , 3.0 );          
      
      final XYSeries chrome = new XYSeries( "Chrome" );          
      chrome.add( 1.0 , 4.0 );          
      chrome.add( 2.0 , 5.0 );          
      chrome.add( 3.0 , 6.0 );          
      
      final XYSeries iexplorer = new XYSeries( "InternetExplorer" );          
      iexplorer.add( 3.0 , 4.0 );          
      iexplorer.add( 4.0 , 5.0 );          
      iexplorer.add( 5.0 , 4.0 );          
      
      final XYSeriesCollection dataset = new XYSeriesCollection( );          
      dataset.addSeries( firefox );          
      dataset.addSeries( chrome );          
      dataset.addSeries( iexplorer );
      return dataset;
   }

   public static void main( String[ ] args ) {
      XYLineChart_AWT chart = new XYLineChart_AWT("Browser Usage Statistics",
         "Which Browser are you using?");
      chart.pack( );          
      RefineryUtilities.centerFrameOnScreen( chart );          
      chart.setVisible( true ); 
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ XYLineChart_AWT.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น:

$javac XYLineChart_AWT.java $java XYLineChart_AWT

หากทุกอย่างเรียบร้อยมันจะคอมไพล์และรันเพื่อสร้าง XY Graph ต่อไปนี้ -

การสร้างภาพ JPEG

ให้เราเขียนตัวอย่างด้านบนอีกครั้งเพื่อสร้างภาพ JPEG จากบรรทัดคำสั่ง

import java.io.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.ChartUtilities; 

public class XYLineChart_image {

   public static void main( String[ ] args )throws Exception {
      final XYSeries firefox = new XYSeries( "Firefox" );
      firefox.add( 1.0 , 1.0 );
      firefox.add( 2.0 , 4.0 );
      firefox.add( 3.0 , 3.0 );
      
      final XYSeries chrome = new XYSeries( "Chrome" );
      chrome.add( 1.0 , 4.0 );
      chrome.add( 2.0 , 5.0 );
      chrome.add( 3.0 , 6.0 );
      
      final XYSeries iexplorer = new XYSeries( "InternetExplorer" );
      iexplorer.add( 3.0 , 4.0 );
      iexplorer.add( 4.0 , 5.0 );
      iexplorer.add( 5.0 , 4.0 );
      
      final XYSeriesCollection dataset = new XYSeriesCollection( );
      dataset.addSeries( firefox );
      dataset.addSeries( chrome );
      dataset.addSeries( iexplorer );

      JFreeChart xylineChart = ChartFactory.createXYLineChart(
         "Browser usage statastics", 
         "Category",
         "Score", 
         dataset,
         PlotOrientation.VERTICAL, 
         true, true, false);
      
      int width = 640;   /* Width of the image */
      int height = 480;  /* Height of the image */ 
      File XYChart = new File( "XYLineChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( XYChart, xylineChart, width, height);
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ XYLineChart_image.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac XYLineChart_image.java $java XYLineChart_image

หากทุกอย่างเรียบร้อยดีก็จะรวบรวมและเรียกใช้เพื่อสร้างไฟล์ภาพ JPEG ที่ชื่อ XYLineChart.jpeg ในไดเรกทอรีปัจจุบันของคุณ

แผนภูมิ 3 มิติคือแผนภูมิที่ปรากฏในรูปแบบสามมิติ คุณสามารถใช้แผนภูมิเหล่านี้เพื่อแสดงข้อมูลที่ดีขึ้นและชัดเจน แผนภูมิวงกลม 3 มิติเหมือนกับแผนภูมิวงกลมนอกจากนี้ยังมีเอฟเฟกต์ 3 มิติที่สวยงาม เอฟเฟกต์ 3 มิติสามารถทำได้โดยการเพิ่มโค้ดพิเศษเล็กน้อยซึ่งจะดูแลการสร้างเอฟเฟกต์ 3 มิติในแผนภูมิวงกลม

แผนภูมิวงกลม 3 มิติ

ลองพิจารณาตัวอย่างต่อไปนี้เพื่อแสดงการขายบนมือถือด้วยความช่วยเหลือของแผนภูมิวงกลม 3 มิติ ต่อไปนี้เป็นรายชื่อแบรนด์มือถือต่างๆและยอดขาย (หน่วยต่อวัน)

ส. เลขที่ แบรนด์มือถือ ยอดขาย (หน่วยต่อวัน)
1 ไอโฟน 5 เอส 20
2 ซัมซุงแกรนด์ 20
3 MOTO G 40
4 Nokia Lumia 10

ต่อไปนี้เป็นรหัสสำหรับสร้างแผนภูมิวงกลม 3 มิติจากข้อมูลที่ระบุข้างต้น รหัสนี้ช่วยให้คุณฝังแผนภูมิวงกลมในแอปพลิเคชันที่ใช้ AWT

import java.io.*; 

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PiePlot3D; 
import org.jfree.data.general.DefaultPieDataset; 
import org.jfree.chart.ChartUtilities;

public class PieChart3D {

   public static void main( String[ ] args )throws Exception {
      DefaultPieDataset dataset = new DefaultPieDataset( );             
      dataset.setValue( "IPhone 5s" , new Double( 20 ) );             
      dataset.setValue( "SamSung Grand" , new Double( 20 ) );             
      dataset.setValue( "MotoG" , new Double( 40 ) );             
      dataset.setValue( "Nokia Lumia" , new Double( 10 ) ); 

      JFreeChart chart = ChartFactory.createPieChart3D( 
         "Mobile Sales" ,  // chart title                   
         dataset ,         // data 
         true ,            // include legend                   
         true, 
         false);

      final PiePlot3D plot = ( PiePlot3D ) chart.getPlot( );             
      plot.setStartAngle( 270 );             
      plot.setForegroundAlpha( 0.60f );             
      plot.setInteriorGap( 0.02 );             
      int width = 640;   /* Width of the image */             
      int height = 480;  /* Height of the image */                             
      File pieChart3D = new File( "pie_Chart3D.jpeg" );                           
      ChartUtilities.saveChartAsJPEG( pieChart3D , chart , width , height );   
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ในไฟล์ PieChart3D.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่แจ้งเป็น -

$javac PieChart3D.java $java PieChart3D

หากทุกอย่างเรียบร้อยดีก็จะรวบรวมและเรียกใช้เพื่อสร้างไฟล์ภาพ JPEG ที่ชื่อ PieChart3D.jpeg มีแผนภูมิวงกลม 3 มิติดังต่อไปนี้ -

แผนภูมิแท่ง 3D

แผนภูมิแท่ง 3D เหมือนกับแผนภูมิแท่งนอกจากนี้ยังมีเอฟเฟกต์ 3 มิติที่สวยงาม เอฟเฟกต์ 3 มิติสามารถทำได้โดยการเพิ่มโค้ดพิเศษเล็กน้อยซึ่งจะดูแลการสร้างเอฟเฟกต์ 3 มิติในแผนภูมิแท่ง ลองพิจารณาตัวอย่างต่อไปนี้ที่แสดงให้เห็นถึงสถิติรถยนต์ต่างๆโดยใช้แผนภูมิแท่ง 3 มิติ ต่อไปนี้เป็นรายชื่อยี่ห้อรถยนต์พร้อมคุณสมบัติที่แตกต่างกันซึ่งเราจะแสดงโดยใช้แผนภูมิแท่ง -

รถยนต์ ความเร็ว คะแนนของผู้ใช้ มิลเลจ ความปลอดภัย
FIAT 1.0 3.0 5.0 5.0
AUDI 5.0 6.0 10.0 4.0
FORD 4.0 2.0 3.0 6.0

รหัสต่อไปนี้สร้างแผนภูมิแท่ง 3 มิติจากข้อมูลที่ระบุข้างต้น รหัสนี้ช่วยให้คุณฝังแผนภูมิแท่งในแอปพลิเคชันที่ใช้ AWT

import java.io.*; 

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.category.DefaultCategoryDataset; 
import org.jfree.chart.ChartUtilities; 

public class BarChart3D {
   
   public static void main( String[ ] args )throws Exception {
      final String fait = "FAIT";              
      final String audi = "AUDI";              
      final String ford = "FORD";              
      final String speed = "Speed";              
      final String popular = "Popular";              
      final String mailage = "Mailage";              
      final String userrating = "User Rating";              
      final String safety = "safety";        
      final DefaultCategoryDataset dataset = new DefaultCategoryDataset( ); 

      dataset.addValue( 1.0 , fait , speed );              
      dataset.addValue( 4.0 , fait , popular );              
      dataset.addValue( 3.0 , fait , userrating );              
      dataset.addValue( 5.0 , fait , mailage );              
      dataset.addValue( 5.0 , fait , safety );              
      
      dataset.addValue( 5.0 , audi , speed );              
      dataset.addValue( 7.0 , audi , popular );              
      dataset.addValue( 6.0 , audi , userrating );              
      dataset.addValue( 10.0 , audi , mailage );              
      dataset.addValue( 4.0 , audi , safety ); 
      
      dataset.addValue( 4.0 , ford , speed );              
      dataset.addValue( 3.0 , ford , popular );              
      dataset.addValue( 2.0 , ford , userrating );              
      dataset.addValue( 3.0 , ford , mailage );              
      dataset.addValue( 6.0 , ford , safety );                 
      
      JFreeChart barChart = ChartFactory.createBarChart3D(
         "Car Usage Statistics",             
         "Category",             
         "Score",             
         dataset,            
         PlotOrientation.VERTICAL,             
         true, true, false);
         
      int width = 640; /* Width of the image */              
      int height = 480; /* Height of the image */                              
      File barChart3D = new File( "barChart3D.jpeg" );                            
      ChartUtilities.saveChartAsJPEG( barChart3D, barChart, width, height);
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ BarChart3D.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac BarChart3D.java $java BarChart3

หากทุกอย่างเป็นไปด้วยดีกับสภาพแวดล้อมของคุณระบบจะรวบรวมและเรียกใช้เพื่อสร้างไฟล์ภาพ JPEG BarChart3D.jpeg มีแผนภูมิแท่ง 3D ดังต่อไปนี้ -

บทนี้แสดงให้เห็นถึงวิธีที่คุณสามารถใช้ JFreeChart เพื่อสร้าง Bubble Chartจากชุดข้อมูลธุรกิจที่กำหนด แผนภูมิฟองแสดงข้อมูลในลักษณะสามมิติ ฟองถูกพล็อตที่ตำแหน่งที่พิกัด (x, y) ตัดกัน ขนาดของฟองถือเป็นช่วงหรือปริมาณของแกน X และ Y

ข้อมูลธุรกิจ

ให้เราพิจารณาบุคคลที่แตกต่างกันพร้อมทั้งอายุน้ำหนักและความสามารถในการทำงาน ความจุกระทะสามารถถือเป็นจำนวนชั่วโมงที่พล็อตเป็นฟองอากาศในแผนภูมิ

น้ำหนัก
AGE 30 40 50 60 70 80
10 4 WORK
20 5
30 10
40 8
50 9
60 6

แอปพลิเคชันที่ใช้ AWT

ต่อไปนี้เป็นรหัสสำหรับสร้าง Bubble Chart จากข้อมูลที่ระบุข้างต้น รหัสนี้ช่วยให้คุณฝังแผนภูมิฟองในแอปพลิเคชันที่ใช้ AWT

import java.awt.Color; 
import java.awt.Dimension; 

import javax.swing.JPanel; 

import org.jfree.chart.*; 
import org.jfree.chart.axis.NumberAxis; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.renderer.xy.XYItemRenderer; 
import org.jfree.data.xy.DefaultXYZDataset; 
import org.jfree.data.xy.XYZDataset; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities;
  
public class BubbleChart_AWT extends ApplicationFrame {

   public BubbleChart_AWT( String s ) {
      super( s );                 
      JPanel jpanel = createDemoPanel( );                 
      jpanel.setPreferredSize(new Dimension( 560 , 370 ) );                 
      setContentPane( jpanel ); 
   }

   private static JFreeChart createChart( XYZDataset xyzdataset ) {
      JFreeChart jfreechart = ChartFactory.createBubbleChart(
         "AGE vs WEIGHT vs WORK",                    
         "Weight",                    
         "AGE",                    
         xyzdataset,                    
         PlotOrientation.HORIZONTAL,                    
         true, true, false);
         
      XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );                 
      xyplot.setForegroundAlpha( 0.65F );                 
      XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
      xyitemrenderer.setSeriesPaint( 0 , Color.blue );                 
      NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );                 
      numberaxis.setLowerMargin( 0.2 );                 
      numberaxis.setUpperMargin( 0.5 );                 
      NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );                 
      numberaxis1.setLowerMargin( 0.8 );                 
      numberaxis1.setUpperMargin( 0.9 );
                     
      return jfreechart;
   }

   public static XYZDataset createDataset( ) {
      DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset(); 
      double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };                 
      double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };                 
      double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };                 
      double ad3[][] = { ad , ad1 , ad2 };                 
      defaultxyzdataset.addSeries( "Series 1" , ad3 );
                   
      return defaultxyzdataset; 
   }

   public static JPanel createDemoPanel( ) {
      JFreeChart jfreechart = createChart( createDataset( ) );                 
      ChartPanel chartpanel = new ChartPanel( jfreechart );
                       
      chartpanel.setDomainZoomable( true );                 
      chartpanel.setRangeZoomable( true );
                 
      return chartpanel;
   }

   public static void main( String args[ ] ) {
      BubbleChart_AWT bubblechart = new BubbleChart_AWT( "Bubble Chart_frame" );   
      bubblechart.pack( );                 
      RefineryUtilities.centerFrameOnScreen( bubblechart );                 
      bubblechart.setVisible( true ); 
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ BubbleChart_AWT.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac BubbleChart_AWT.java $java BubbleChart_AW

หากทุกอย่างเรียบร้อยก็จะรวบรวมและเรียกใช้เพื่อสร้าง Bubble Graph ต่อไปนี้ -

การสร้างภาพ JPEG

ให้เราเขียนตัวอย่างด้านบนอีกครั้งเพื่อสร้างภาพ JPEG จากบรรทัดคำสั่ง

import java.io.*;

import java.awt.Color; 

import org.jfree.chart.*; 
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.chart.ChartUtilities;

public class BubbleChart_image {
   
   public static void main( String args[ ] )throws Exception {
      DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset( );
      double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };
      double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };
      double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };
      double ad3[ ][ ] = { ad , ad1 , ad2 };
      defaultxyzdataset.addSeries( "Series 1" , ad3 );

      JFreeChart jfreechart = ChartFactory.createBubbleChart(
         "AGE vs WEIGHT vs WORK", 
         "Weight", 
         "AGE", 
         defaultxyzdataset, 
         PlotOrientation.HORIZONTAL, 
         true, true, false);

      XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );
      xyplot.setForegroundAlpha( 0.65F );
      XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
      xyitemrenderer.setSeriesPaint( 0 , Color.blue );
      NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );
      numberaxis.setLowerMargin( 0.2 );
      numberaxis.setUpperMargin( 0.5 );
      NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );
      numberaxis1.setLowerMargin( 0.8 );
      numberaxis1.setUpperMargin( 0.9 );

      int width = 560;   /* Width of the image */
      int height = 370;  /* Height of the image */ 
      File bubbleChart = new File("BubbleChart.jpeg"); 
      ChartUtilities.saveChartAsJPEG(bubbleChart,jfreechart,width,height);
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ BubbleChart_image.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac BubbleChart_image.java $java BubbleChart_image

หากทุกอย่างเรียบร้อยดีก็จะรวบรวมและเรียกใช้เพื่อสร้างไฟล์ภาพ JPEG ที่ชื่อ BubbleChart.jpeg ในไดเรกทอรีปัจจุบันของคุณ

แผนภูมิอนุกรมเวลาแสดงลำดับของจุดข้อมูลซึ่งแตกต่างกันไปในช่วงเวลาที่เท่ากัน บทนี้แสดงให้เห็นถึงวิธีที่เราสามารถใช้ JFreeChart เพื่อสร้างTime Series Chart จากชุดข้อมูลธุรกิจที่กำหนด

ข้อมูลธุรกิจ

ให้เราพิจารณาตัวเลขสุ่มต่างๆที่สร้างขึ้นโดยใช้ Java API มาตรฐาน Math.random(). เราใช้ตัวเลขเหล่านี้เพื่อสร้างแผนภูมิอนุกรมเวลา คุณสามารถสร้างแผนภูมิที่คล้ายกันสำหรับจำนวนข้อผิดพลาดทั้งหมดที่เกิดขึ้นในเว็บไซต์ของคุณในช่วงเวลาที่กำหนด

แอปพลิเคชันที่ใช้ AWT

ต่อไปนี้เป็นรหัสสำหรับสร้างแผนภูมิอนุกรมเวลาจากตัวเลขที่สร้างโดย Math.random() ภายในเวลาที่กำหนด

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
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.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities;

public class TimeSeries_AWT extends ApplicationFrame {

   public TimeSeries_AWT( final String title ) {
      super( title );         
      final XYDataset dataset = createDataset( );         
      final JFreeChart chart = createChart( dataset );         
      final ChartPanel chartPanel = new ChartPanel( chart );         
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 370 ) );         
      chartPanel.setMouseZoomable( true , false );         
      setContentPane( chartPanel );
   }

   private XYDataset createDataset( ) {
      final TimeSeries series = new TimeSeries( "Random Data" );         
      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);
   }     

   private JFreeChart createChart( final XYDataset dataset ) {
      return ChartFactory.createTimeSeriesChart(             
         "Computing Test", 
         "Seconds",              
         "Value",              
         dataset,             
         false,              
         false,              
         false);
   }

   public static void main( final String[ ] args ) {
      final String title = "Time Series Management";         
      final TimeSeries_AWT demo = new TimeSeries_AWT( title );         
      demo.pack( );         
      RefineryUtilities.positionFrameRandomly( demo );         
      demo.setVisible( true );
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ TimeSeries_AWT.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac TimeSeries_AWT.java $java TImeSeries_AWT

หากทุกอย่างเรียบร้อยก็จะคอมไพล์และเรียกใช้เพื่อสร้างกราฟอนุกรมเวลาต่อไปนี้ -

การสร้างภาพ JPEG

ให้เราเขียนตัวอย่างด้านบนอีกครั้งเพื่อสร้างภาพ JPEG จากบรรทัดคำสั่ง

import java.io.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
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.chart.ChartUtilities;

public class TimeSeriesChart {
   
   public static void main( final String[ ] args )throws Exception {
      final TimeSeries series = new TimeSeries( "Random Data" );
      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" );
         }
      }
      
      final XYDataset dataset=( XYDataset )new TimeSeriesCollection(series);
      JFreeChart timechart = ChartFactory.createTimeSeriesChart(
         "Computing Test", 
         "Seconds", 
         "Value", 
         dataset,
         false, 
         false, 
         false);
         
      int width = 560;   /* Width of the image */
      int height = 370;  /* Height of the image */ 
      File timeChart = new File( "TimeChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( timeChart, timechart, width, height );
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ TimeSeriesChart.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac TimeSeriesChart.java $java TimeSeriesChart

หากทุกอย่างเป็นไปด้วยดีกับสภาพแวดล้อมของคุณระบบจะรวบรวมและเรียกใช้เพื่อสร้างไฟล์ภาพ JPEG TimeChart.jpeg ไฟล์ในไดเร็กทอรีปัจจุบันของคุณ

จนถึงตอนนี้เราได้ศึกษาวิธีสร้างแผนภูมิประเภทต่างๆโดยใช้ JFreeChart API โดยใช้ข้อมูลคงที่ แต่ในสภาพแวดล้อมการใช้งานจริงข้อมูลจะถูกจัดเตรียมในรูปแบบของไฟล์ข้อความด้วยรูปแบบที่กำหนดไว้ล่วงหน้าหรือมาจากฐานข้อมูลโดยตรง

บทนี้จะอธิบาย - วิธีที่เราสามารถอ่านข้อมูลง่ายๆจากไฟล์ข้อความที่กำหนดจากตำแหน่งที่กำหนดจากนั้นใช้ JFreeChart เพื่อสร้างแผนภูมิที่คุณเลือก

ข้อมูลธุรกิจ

พิจารณาว่าเรามีไฟล์ชื่อ mobile.txtโดยมีแบรนด์มือถือที่แตกต่างกันและยอดขาย (หน่วยต่อวัน) คั่นด้วยเครื่องหมายจุลภาค (,) -

Iphone 5S, 20   
Samsung Grand, 20   
MOTO G, 40  Nokia  
Lumia, 10

การสร้างแผนภูมิตามไฟล์

ต่อไปนี้เป็นรหัสสำหรับสร้างแผนภูมิวงกลมตามข้อมูลที่ให้ไว้ใน mobile.txt -

import java.io.*; 

import java.util.StringTokenizer; 

import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.general.DefaultPieDataset;

public class PieChart_File {
   
   public static void main( String[ ] args )throws Exception {
      
      String mobilebrands[ ] = {    
         "IPhone 5s" ,   
         "SamSung Grand" ,   
         "MotoG" ,    
         "Nokia Lumia" 
      };
      
      InputStream in = new FileInputStream( new File( "C:/temp/test.txt" ) );          
      BufferedReader reader = new BufferedReader(new InputStreamReader(in ) );          
      StringBuilder out = new StringBuilder();          
      String line;          
      DefaultPieDataset dataset = new DefaultPieDataset();          

      while (( line = reader.readLine() ) != null ) {
         out.append( line );
      }
      
      StringTokenizer s = new StringTokenizer( out.toString(), "," );
      int i = 0;      
      
      while( s.hasMoreTokens( ) && ( mobilebrands [i] != null ) ) {
         dataset.setValue(mobilebrands[i], Double.parseDouble( s.nextToken( ) ));
         i++;
      }
      
      JFreeChart chart = ChartFactory.createPieChart( 
         "Mobile Sales",    // chart title           
         dataset,           // data           
         true,              // include legend           
         true,           
         false);
      
      int width = 560;    /* Width of the image */          
      int height = 370;   /* Height of the image */                          
      File pieChart = new File( "pie_Chart.jpeg" );                        
      ChartUtilities.saveChartAsJPEG( pieChart, chart, width, height); 
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ PieChart_File.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac PieChart_File.java $java PieChart_File

หากทุกอย่างเรียบร้อยดีก็จะรวบรวมและเรียกใช้เพื่อสร้างไฟล์ภาพ JPEG ที่ชื่อ PieChart.jpeg ที่มีแผนภูมิต่อไปนี้

บทนี้อธิบายถึงวิธีที่คุณสามารถอ่านข้อมูลง่ายๆจากตารางฐานข้อมูลจากนั้นใช้ JFreeChart เพื่อสร้างแผนภูมิที่คุณเลือก

ข้อมูลธุรกิจ

พิจารณาว่าเรามีตาราง MySQL ต่อไปนี้ mobile_tbl (mobile_brand VARCHAR (100) NOT NULL, unit_sale INT NO NULL);

พิจารณาว่าตารางนี้มีบันทึกต่อไปนี้ -

แบรนด์มือถือ การขายหน่วย
ไอโฟน 5 เอส 20
ซัมซุงแกรนด์ 20
MotoG 40
Nokia Lumia 10

การสร้างแผนภูมิโดยใช้ฐานข้อมูล

ต่อไปนี้เป็นรหัสสำหรับสร้างแผนภูมิวงกลมตามข้อมูลที่ให้ไว้ในตาราง mobile_tbl ที่มีอยู่ใน test_db ในฐานข้อมูล MySQL ขึ้นอยู่กับความต้องการของคุณคุณสามารถใช้ฐานข้อมูลอื่นได้

import java.io.*; 
import java.sql.*; 

import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.general.DefaultPieDataset;

public class PieChart_DB {
   
   public static void main( String[ ] args )throws Exception {
      
      String mobilebrands[] = {
         "IPhone 5s",   
         "SamSung Grand",   
         "MotoG",            
         "Nokia Lumia" 
      };
      
      /* Create MySQL Database Connection */
      Class.forName( "com.mysql.jdbc.Driver" );
      Connection connect = DriverManager.getConnection( 
         "jdbc:mysql://localhost:3306/jf_testdb" ,     
         "root",     
         "root123");
      
      Statement statement = connect.createStatement( );
      ResultSet resultSet = statement.executeQuery("select * from mobile_data" );
      DefaultPieDataset dataset = new DefaultPieDataset( );
      
      while( resultSet.next( ) ) {
         dataset.setValue( 
         resultSet.getString( "mobile_brand" ) ,
         Double.parseDouble( resultSet.getString( "unit_sale" )));
      }
      
      JFreeChart chart = ChartFactory.createPieChart(
         "Mobile Sales",   // chart title           
         dataset,          // data           
         true,             // include legend          
         true,           
         false );

      int width = 560;    /* Width of the image */
      int height = 370;   /* Height of the image */ 
      File pieChart = new File( "Pie_Chart.jpeg" );
      ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height );
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ PieChart_DB.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac PieChart_DB.java $java PieChart_DB

หากทุกอย่างเรียบร้อยดีก็จะรวบรวมและเรียกใช้เพื่อสร้างไฟล์ภาพ JPEG ที่ชื่อ Pie_Chart.jpeg มีแผนภูมิต่อไปนี้