使用 JFreeChart 来创建基于 web 的图表
0.环境配置,添加Jar包并修改web.xml
1.组装柱状图所需要的数据集
2.创建柱状图
3.柱状图展现样式处理:
4.页面展现柱状图
I.JSP代码,将JFreeChart写入临时文件,用于页面展现
若要简单实现功能,可以只做三个操作:添加jar包,修改web.xml,编写jsp文件(集合上述代码)
1
<
servlet
>
2
<
servlet
-
name
>
DisplayChart
</
servlet
-
name
>
3
<
servlet
-
class
>
org.jfree.chart.servlet.DisplayChart
</
servlet
-
class
>
4
</
servlet
>
5
6
<
servlet
-
mapping
>
7
<
servlet
-
name
>
DisplayChart
</
servlet
-
name
>
8
<
url
-
pattern
>/
DisplayChart
</
url
-
pattern
>
9
</
servlet
-
mapping
>

2

3

4

5

6

7

8

9

1.组装柱状图所需要的数据集
1
DefaultCategoryDataset dataset
=
new
DefaultCategoryDataset();
2
dataset.addValue(柱状图长度,
""
,
"
柱体下方显示名称
"
);

2

2.创建柱状图
1
JFreeChart chart
=
ChartFactory.createBarChart3D(
"柱状图标题
"
,
"
横轴标题
"
,
"纵轴标题
"
,dataset, PlotOrientation.VERTICAL,
false
,
false
,
false
);

3.柱状图展现样式处理:
1
CategoryPlot plot
=
chart.getCategoryPlot();
2
//
设置网络背景颜色
3
plot.setBackgroundPaint(java.awt.Color.WHITE);
4
//
设置网格竖线颜色
5
plot.setDomainGridlinePaint(java.awt.Color.pink);
6
//
设置网格横线颜色
7
plot.setRangeGridlinePaint(java.awt.Color.pink);
8
BarRenderer3D renderer
=
new
BarRenderer3D();
9
renderer.setBaseItemLabelGenerator(
new
StandardCategoryItemLabelGenerator());
10
renderer.setBaseItemLabelsVisible(
true
);
11
//
设置柱宽度
12
renderer.setMaxBarWidth(
0.04
);
13
//
设置数值显示字体及大小
14
renderer.setItemLabelFont(
new
java.awt.Font(
"
黑体
"
,java.awt.Font.PLAIN,
10
));
15
//
设置正值柱图数值的显示位置
16
renderer.setPositiveItemLabelPosition(
new
ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_LEFT));
17
//
设置负值柱图数值的显示位置
18
renderer.setNegativeItemLabelPosition(
new
ItemLabelPosition(ItemLabelAnchor.OUTSIDE7,TextAnchor.BASELINE_LEFT));
19
renderer.setItemLabelAnchorOffset(10D);
20
renderer.setItemLabelsVisible(
true
);
21
//
设置柱的间距
22
renderer.setItemMargin(
0
);
23
plot.setRenderer(renderer);
24
plot.setDomainAxisLocation(AxisLocation.TOP_OR_LEFT);
25
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
26
org.jfree.chart.axis.CategoryAxis domainAxis
=
plot.getDomainAxis();
27
//
domainAxis.setLowerMargin(0.1);
//
设置距离图片左端距离此时为10%
28
//
domainAxis.setUpperMargin(0.1);
//
设置距离图片右端距离此时为百分之10
29
domainAxis.setCategoryLabelPositionOffset(
10
);
//
图表横轴与标签的距离(10像素)
30
domainAxis.setCategoryMargin(
0.2
);
//
横轴标签之间的距离20%
31
//
domainAxis.setMaximumCategoryLabelLines(1);
32
//
domainAxis.setMaximumCategoryLabelWidthRatio(0);

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

4.页面展现柱状图
I.JSP代码,将JFreeChart写入临时文件,用于页面展现
1
String filename
=
ServletUtilities.saveChartAsPNG(chart,
700
,
400
,
null
, session);
2
String graphURL
=
request.getContextPath()
+
"
/DisplayChart?filename=
"
+
filename;
II.页面展现

2

1
<
img src
=
"
<%=graphURL %>
"
width
=
"
700
"
height
=
"
400
"
border
=
"
0
"
usemap
=
"
#<%=filename%>
"
>

若要简单实现功能,可以只做三个操作:添加jar包,修改web.xml,编写jsp文件(集合上述代码)