java生成统计图_java生成各种统计图
目錄:
一、圖形及代碼:
1、餅形圖
2.1、普通柱形圖
2.2、XYDataset柱形圖
3、折線圖
4、區域圖
5、時序圖
6、組合圖
二web應用jfreeChar(區域圖)
三:DataUtils類代碼(所有代碼中均應用的類,得到隨即數據)
一、圖形及代碼
1、餅形圖
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
public class PieChart {
public static void
main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new
FileOutputStream("PieChart.png");
// 獲取數據集對象
PieDataset dataset = createPieDataset();
// 創建圖形對象
JFreeChart jfreechart =
ChartFactory.createPieChart3D("08年圖書銷量排行榜",
dataset, true, true, false);
// 獲得圖表區域對象
PiePlot pieplot = (PiePlot) jfreechart.getPlot();
// 設置圖表區域的標簽字體
pieplot.setLabelFont(new Font("宋體", 0, 12));
//
設置圖表區域無數據時的默認顯示文字
pieplot.setNoDataMessage("沒有銷售數據");
//
設置圖表區域不是圓形,由于是3D的餅形圖,建議設置為false
pieplot.setCircular(false);
//
設置圖表區域文字與圖表區域的間隔距離,0.02表示2%
pieplot.setLabelGap(0.02D);
//
將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream,
jfreechart,
500, 270);
}
private static PieDataset
createPieDataset() {
// 創建餅形圖數據集對象
DefaultPieDataset defaultpiedataset = new
DefaultPieDataset();
// 分別圖形區域的說明和數據
defaultpiedataset.setValue("JAVA",
DataUtils.getRandomData());
defaultpiedataset.setValue("C/C++",
DataUtils.getRandomData());
defaultpiedataset.setValue("PHP",
DataUtils.getRandomData());
defaultpiedataset.setValue("JavaScript",
DataUtils.getRandomData());
defaultpiedataset.setValue("Ajax",
DataUtils.getRandomData());
return defaultpiedataset;
}
}
package com.helloweenvsfei.jfreechart;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
public class PieChart {
public static void main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new FileOutputStream("PieChart.png");
// 獲取數據集對象
PieDataset dataset = createPieDataset();
// 創建圖形對象
JFreeChart jfreechart = ChartFactory.createPieChart3D("08年圖書銷量排行榜",
dataset, true, true, false);
// 獲得圖表區域對象
PiePlot pieplot = (PiePlot) jfreechart.getPlot();
// 設置圖表區域的 簽字體
pieplot.setLabelFont(new Font("宋體", 0, 12));
// 設置圖表區域 數據時的默認顯示文字
pieplot.setNoDataMessage("沒有銷售數據");
// 設置圖表區域不是圓形,由于是3D的餅形圖,建議設置為false
pieplot.setCircular(false);
// 設置圖表區域文字與圖表區域的間隔距離,0.02表示2%
pieplot.setLabelGap(0.02D);
// 將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
500, 270);
}
private static PieDataset createPieDataset() {
// 創建餅形圖數據集對象
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
// 分別圖形區域的說明和數據
defaultpiedataset.setValue("JAVA", DataUtils.getRandomData());
defaultpiedataset.setValue("C/C++", DataUtils.getRandomData());
defaultpiedataset.setValue("PHP", DataUtils.getRandomData());
defaultpiedataset.setValue("JavaScript", DataUtils.getRandomData());
defaultpiedataset.setValue("Ajax", DataUtils.getRandomData());
return defaultpiedataset;
}
}
效果:
2.1、普通柱形圖
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
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.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class BarChart {
public static void
main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new
FileOutputStream("BarChart.png");
// 獲取數據集對象
CategoryDataset dataset = createDataset();
// 創建圖形對象
JFreeChart jfreechart =
ChartFactory.createBarChart3D("08年圖書銷售量排名",
"按季度", "銷量",
dataset, PlotOrientation.VERTICAL, true, true,
false);
// 獲得圖表區域對象
CategoryPlot categoryPlot = (CategoryPlot)
jfreechart.getPlot();
// 設置網格線可見
categoryPlot.setDomainGridlinesVisible(true);
// 獲得x軸對象
CategoryAxis categoryAxis =
categoryPlot.getDomainAxis();
//
設置x軸顯示的分類名稱的顯示位置,如果不設置則水平顯示
//
設置后,可以斜像顯示,但分類角度,圖表空間有限時,建議采用
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions
.createUpRotationLabelPositions(0.39269908169872414D));
categoryAxis.setCategoryMargin(0.0D);
// 獲顯示圖形對象
BarRenderer3D barRenderer3d = (BarRenderer3D)
categoryPlot
.getRenderer();
// 設置不顯示邊框線
barRenderer3d.setDrawBarOutline(false);
//
將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream,
jfreechart,
500, 270);
}
private static
CategoryDataset createDataset() {
// 時間維度
String[] category1 = { "第一季度",
"第二季度", "第三季度", "第四季度" };
// 分類維度
String[] category2 = { "JAVA", "C/C++", "PHP" };
DefaultCategoryDataset defaultdataset = new
DefaultCategoryDataset();
for (int i = 0; i <
category1.length; i++) {
String
category = category1[i];
for (int j
= 0; j < category2.length; j++) {
String cat = category2[j];
// 模擬添加數據
defaultdataset.addValue(DataUtils.getRandomData(),
cat, category);
}
}
return defaultdataset;
}
}
package com.helloweenvsfei.jfreechart;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
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.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class BarChart {
public static void main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new FileOutputStream("BarChart.png");
// 獲取數據集對象
CategoryDataset dataset = createDataset();
// 創建圖形對象
JFreeChart jfreechart = ChartFactory.createBarChart3D("08年圖書銷售量排名",
"按季度", "銷量", dataset, PlotOrientation.VERTICAL, true, true,
false);
// 獲得圖表區域對象
CategoryPlot categoryPlot = (CategoryPlot) jfreechart.getPlot();
// 設置網 線可見
categoryPlot.setDomainGridlinesVisible(true);
// 獲得x軸對象
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// 設置x軸顯示的分類名稱的顯示位置,如果不設置則水平顯示
// 設置后,可以斜像顯示,但分類角度,圖表空間有限時,建議采用
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions
.createUpRotationLabelPositions(0.39269908169872414D));
categoryAxis.setCategoryMargin(0.0D);
// 獲顯示圖形對象
BarRenderer3D barRenderer3d = (BarRenderer3D) categoryPlot
.getRenderer();
// 設置不顯示邊框線
barRenderer3d.setDrawBarOutline(false);
// 將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
500, 270);
}
private static CategoryDataset createDataset() {
// 時間維度
String[] category1 = { "第一季度", "第二季度", "第三季度", "第四季度" };
// 分類維度
String[] category2 = { "JAVA", "C/C++", "PHP" };
DefaultCategoryDataset defaultdataset = new DefaultCategoryDataset();
for (int i = 0; i < category1.length; i++) {
String category = category1[i];
for (int j = 0; j < category2.length; j++) {
String cat = category2[j];
// 模擬添 數據
defaultdataset.addValue(DataUtils.getRandomData(), cat, category);
}
}
return defaultdataset;
}
}
效果:
2.2、XYDataset柱形圖
import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.XYBarDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class BarChart2 {
public static void
main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new
FileOutputStream("BarChart2.png");
// 獲取數據集對象
IntervalXYDataset dataset = createDataset();
// 創建圖形對象
JFreeChart jfreechart =
ChartFactory.createXYBarChart("08年圖書銷售量", null,
false, "銷量", dataset,
PlotOrientation.VERTICAL, true, false,
false);
// 設置背景為白色
jfreechart.setBackgroundPaint(Color.white);
// 獲得圖表區域對象
XYPlot xyplot = (XYPlot) jfreechart.getPlot();
// 設置區域對象背景為灰色
xyplot.setBackgroundPaint(Color.lightGray);
// 設置區域對象網格線調為白色
xyplot.setDomainGridlinePaint(Color.white);
xyplot.setRangeGridlinePaint(Color.white);
// 獲顯示圖形對象
XYBarRenderer xybarrenderer = (XYBarRenderer)
xyplot.getRenderer();
// 設置不顯示邊框線
xybarrenderer.setDrawBarOutline(false);
//
將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream,
jfreechart,
500, 270);
}
private static
IntervalXYDataset createDataset() {
// 創建基本數據
XYSeries xyseries = new XYSeries("JAVA");
XYSeries xyseries1 = new XYSeries("PHP");
for (int i = 1; i <= 12; i++) {
//
添加數據
xyseries.add(i,DataUtils.getRandomData());
xyseries1.add(i,DataUtils.getRandomData());
}
XYSeriesCollection xyseriescollection = new
XYSeriesCollection();
xyseriescollection.addSeries(xyseries);
xyseriescollection.addSeries(xyseries1);
return new XYBarDataset(xyseriescollection,
0.90000000000000002D);
}
}
package com.helloweenvsfei.jfreechart;
import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.XYBarDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class BarChart2 {
public static void main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new FileOutputStream("BarChart2.png");
// 獲取數據集對象
IntervalXYDataset dataset = createDataset();
// 創建圖形對象
JFreeChart jfreechart = ChartFactory.createXYBarChart("08年圖書銷售量", null,
false, "銷量", dataset, PlotOrientation.VERTICAL, true, false,
false);
// 設置背景為白色
jfreechart.setBackgroundPaint(Color.white);
// 獲得圖表區域對象
XYPlot xyplot = (XYPlot) jfreechart.getPlot();
// 設置區域對象背景為灰色
xyplot.setBackgroundPaint(Color.lightGray);
// 設置區域對象網 線調為白色
xyplot.setDomainGridlinePaint(Color.white);
xyplot.setRangeGridlinePaint(Color.white);
// 獲顯示圖形對象
XYBarRenderer xybarrenderer = (XYBarRenderer) xyplot.getRenderer();
// 設置不顯示邊框線
xybarrenderer.setDrawBarOutline(false);
// 將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
500, 270);
}
private static IntervalXYDataset createDataset() {
// 創建基本數據
XYSeries xyseries = new XYSeries("JAVA");
XYSeries xyseries1 = new XYSeries("PHP");
for (int i = 1; i <= 12; i++) {
// 添 數據
xyseries.add(i,DataUtils.getRandomData());
xyseries1.add(i,DataUtils.getRandomData());
}
XYSeriesCollection xyseriescollection = new XYSeriesCollection();
xyseriescollection.addSeries(xyseries);
xyseriescollection.addSeries(xyseries1);
return new XYBarDataset(xyseriescollection, 0.90000000000000002D);
}
}
效果:
3、折線圖
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
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.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;
public class LineChart {
public static void
main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new
FileOutputStream("LineChart.png");
// 獲取數據集對象
CategoryDataset dataset = createDataset();
// 創建圖形對象
JFreeChart jfreechart =
ChartFactory.createLineChart("08年圖書銷售量",
null, "銷售量", dataset,
PlotOrientation.VERTICAL, false, true,
false);
// 設置圖表的子標題
jfreechart.addSubtitle(new
TextTitle("按月份"));
// 創建一個標題
TextTitle texttitle = new TextTitle("日期: " +
new Date());
// 設置標題字體
texttitle.setFont(new Font("黑體", 0, 10));
// 設置標題向下對齊
texttitle.setPosition(RectangleEdge.BOTTOM);
// 設置標題向右對齊
texttitle.setHorizontalAlignment(HorizontalAlignment.RIGHT);
// 添加圖表的子標題
jfreechart.addSubtitle(texttitle);
// 設置圖表的背景色為白色
jfreechart.setBackgroundPaint(Color.white);
// 獲得圖表區域對象
CategoryPlot categoryplot = (CategoryPlot)
jfreechart.getPlot();
categoryplot.setBackgroundPaint(Color.lightGray);
categoryplot.setRangeGridlinesVisible(false);
// 獲顯示線條對象
LineAndShapeRenderer lineandshaperenderer =
(LineAndShapeRenderer) categoryplot
.getRenderer();
lineandshaperenderer.setBaseShapesVisible(true);
lineandshaperenderer.setDrawOutlines(true);
lineandshaperenderer.setUseFillPaint(true);
lineandshaperenderer.setBaseFillPaint(Color.white);
// 設置折線加粗
lineandshaperenderer.setSeriesStroke(0, new
BasicStroke(3F));
lineandshaperenderer.setSeriesOutlineStroke(0,
new BasicStroke(2.0F));
// 設置折線拐點
lineandshaperenderer.setSeriesShape(0,
new
java.awt.geom.Ellipse2D.Double(-5D, -5D, 10D, 10D));
//
將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream,
jfreechart,
500, 270);
}
private static
CategoryDataset createDataset() {
DefaultCategoryDataset defaultdataset = new
DefaultCategoryDataset();
for (int i = 1; i <= 12; i++) {
defaultdataset.addValue(DataUtils.getRandomData(),
"JAVA", i + "月");
defaultdataset.addValue(DataUtils.getRandomData(),
"PHP", i + "月");
}
return defaultdataset;
}
}
package com.helloweenvsfei.jfreechart;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
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.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;
public class LineChart {
public static void main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new FileOutputStream("LineChart.png");
// 獲取數據集對象
CategoryDataset dataset = createDataset();
// 創建圖形對象
JFreeChart jfreechart = ChartFactory.createLineChart("08年圖書銷售量",
null, "銷售量", dataset, PlotOrientation.VERTICAL, false, true,
false);
// 設置圖表的子 題
jfreechart.addSubtitle(new TextTitle("按月份"));
// 創建一個 題
TextTitle texttitle = new TextTitle("日期: " + new Date());
// 設置 題字體
texttitle.setFont(new Font("黑體", 0, 10));
// 設置 題向下對齊
texttitle.setPosition(RectangleEdge.BOTTOM);
// 設置 題向右對齊
texttitle.setHorizontalAlignment(HorizontalAlignment.RIGHT);
// 添 圖表的子 題
jfreechart.addSubtitle(texttitle);
// 設置圖表的背景色為白色
jfreechart.setBackgroundPaint(Color.white);
// 獲得圖表區域對象
CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
categoryplot.setBackgroundPaint(Color.lightGray);
categoryplot.setRangeGridlinesVisible(false);
// 獲顯示線條對象
LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot
.getRenderer();
lineandshaperenderer.setBaseShapesVisible(true);
lineandshaperenderer.setDrawOutlines(true);
lineandshaperenderer.setUseFillPaint(true);
lineandshaperenderer.setBaseFillPaint(Color.white);
// 設置折線 粗
lineandshaperenderer.setSeriesStroke(0, new BasicStroke(3F));
lineandshaperenderer.setSeriesOutlineStroke(0, new BasicStroke(2.0F));
// 設置折線拐點
lineandshaperenderer.setSeriesShape(0,
new java.awt.geom.Ellipse2D.Double(-5D, -5D, 10D, 10D));
// 將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
500, 270);
}
private static CategoryDataset createDataset() {
DefaultCategoryDataset defaultdataset = new DefaultCategoryDataset();
for (int i = 1; i <= 12; i++) {
defaultdataset.addValue(DataUtils.getRandomData(), "JAVA", i + "月");
defaultdataset.addValue(DataUtils.getRandomData(), "PHP", i + "月");
}
return defaultdataset;
}
}
效果 :
4、區域圖
import
java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
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.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleInsets;
public class AreaChart {
public static void
main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new
FileOutputStream("AreaChart.png");
// 獲取數據集對象
CategoryDataset dataset = createDataset();
// 創建圖形對象
JFreeChart jfreechart =
ChartFactory.createAreaChart("08年圖書銷售量排名",
"按季度", "銷量",
dataset, PlotOrientation.VERTICAL, true, true,
false);
// 獲得圖表區域對象
CategoryPlot categoryplot = (CategoryPlot)
jfreechart.getPlot();
//設置前景色為50%透明
categoryplot.setForegroundAlpha(0.5F);
//設置X軸偏移量
categoryplot.setAxisOffset(new
RectangleInsets(5D, 5D, 5D, 5D));
//設置北景色為淺灰色
categoryplot.setBackgroundPaint(Color.lightGray);
//設置顯示網格線
categoryplot.setDomainGridlinesVisible(true);
//設置網格線為白色
categoryplot.setDomainGridlinePaint(Color.white);
//設置顯示邊界線
categoryplot.setRangeGridlinesVisible(true);
//設置顯示邊界線為白色
categoryplot.setRangeGridlinePaint(Color.white);
//獲得X軸對象
CategoryAxis categoryaxis =
categoryplot.getDomainAxis();
//設置X軸標簽位置為45度角
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
//設置與X軸的補白為0
categoryaxis.setLowerMargin(0.0D);
categoryaxis.setUpperMargin(0.0D);
//
將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream,
jfreechart,
500, 270);
}
private static
CategoryDataset createDataset() {
// 時間維度
String[] category1 = { "第一季度",
"第二季度", "第三季度", "第四季度" };
// 分類維度
String[] category2 = { "JAVA", "C/C++", "PHP" };
DefaultCategoryDataset defaultdataset = new
DefaultCategoryDataset();
for (int i = 0; i <
category1.length; i++) {
String
category = category1[i];
for (int j
= 0; j < category2.length; j++) {
String cat = category2[j];
// 模擬添加數據
defaultdataset.addValue(DataUtils.getRandomData(),
cat, category);
}
}
return defaultdataset;
}
}
package com.helloweenvsfei.jfreechart;
import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
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.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleInsets;
public class AreaChart {
public static void main(String[] agrs) throws IOException{
// 打開一個輸出流
OutputStream outputStream=new FileOutputStream("AreaChart.png");
// 獲取數據集對象
CategoryDataset dataset = createDataset();
// 創建圖形對象
JFreeChart jfreechart = ChartFactory.createAreaChart("08年圖書銷售量排名",
"按季度", "銷量", dataset, PlotOrientation.VERTICAL, true, true,
false);
// 獲得圖表區域對象
CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
//設置前景色為50%透明
categoryplot.setForegroundAlpha(0.5F);
//設置X軸偏移量
categoryplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
//設置北景色為淺灰色
categoryplot.setBackgroundPaint(Color.lightGray);
//設置顯示網 線
categoryplot.setDomainGridlinesVisible(true);
//設置網 線為白色
categoryplot.setDomainGridlinePaint(Color.white);
//設置顯示邊界線
categoryplot.setRangeGridlinesVisible(true);
//設置顯示邊界線為白色
categoryplot.setRangeGridlinePaint(Color.white);
//獲得X軸對象
CategoryAxis categoryaxis = categoryplot.getDomainAxis();
//設置X軸 簽位置為45度角
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
//設置與X軸的補白為0
categoryaxis.setLowerMargin(0.0D);
categoryaxis.setUpperMargin(0.0D);
// 將圖表已數據流的方式返回給客戶端
ChartUtilities.writeChartAsPNG(outputStream, jfreechart,
500, 270);
}
private static CategoryDataset createDataset() {
// 時間維度
String[] category1 = { "第一季度", "第二季度", "第三季度", "第四季度" };
// 分類維度
String[] category2 = { "JAVA", "C/C++", "PHP" };
DefaultCategoryDataset defaultdataset = new DefaultCategoryDataset();
for (int i = 0; i < category1.length; i++) {
String category = category1[i];
for (int j = 0; j < category2.length; j++) {
String cat = category2[j];
// 模擬添 數據
defaultdataset.addValue(DataUtils.getRandomData(), cat, category);
}
}
return defaultdataset;
}
}
效果:
5、時序圖
import java.awt.BasicStroke;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
總結
以上是生活随笔為你收集整理的java生成统计图_java生成各种统计图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新网站如何做seo优化,这5个步骤让网站
- 下一篇: 手机中的计算摄影-超广角畸变校正