jfreechart 是开放源代码站点sourceforge.net 上的一个 java 项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 )、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
应用jfreechart来画图需要两个jar包:jfreechart.jar和jcommon.jar,下载地址。
下面是一个画折线图的例子:
?
1
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
package yuth.jfree.demo;
/**
* 使用 categorydataset 数据集创建折线图
* 当数据多时,在jpanel中无法完全看到横坐标的值,显示为省略号。
* 解决方法:
* 方法1、将报表保存为图片时,设置图片的宽度足够大(2000或3000),图片可以显示横坐标值。
* 这种方法治标不治本,所以有了第2种方法
* 方法2、设置x轴上的lable让其45度倾斜。
*/
import java.awt.basicstroke;
import java.awt.color;
import java.awt.dimension;
import java.awt.font;
import java.awt.geom.ellipse2d;
import java.io.file;
import java.io.ioexception;
import java.net.url;
import java.text.decimalformat;
import java.util.random;
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.rectangleedge;
import org.jfree.ui.rectangleinsets;
import org.jfree.ui.refineryutilities;
public class linechartdemo1 extends applicationframe {
private static final long serialversionuid = -6354350604313079793l;
/* synthetic */static class class$demo$linechartdemo1;
public linechartdemo1(string string) {
super(string);
jpanel jpanel = createdemopanel();
jpanel.setpreferredsize(new dimension(500, 270));
setcontentpane(jpanel);
}
/**
* 如何区分不同的图例:根据defaultcategorydataset.addvalue()的第二个参数是否相同来区分。
* 同一个图例的数据的添加顺序影响最终的显示;不同图例的数据的添加顺序不影响最终的显示。
* @return
*/
private static categorydataset createdataset() {
defaultcategorydataset defaultcategorydataset = new defaultcategorydataset();
//defaultcategorydataset.addvalue()的参数解析:(数值,图例名,横坐标值)
/*
//添加数据方法1
//图例1
defaultcategorydataset.addvalue(212.0, "first", "1001.0");
defaultcategorydataset.addvalue(504.0, "first", "1001.1");
defaultcategorydataset.addvalue(1520.0, "first", "1001.2");
//图例2
defaultcategorydataset.addvalue(712.0, "second", "1001.0");
defaultcategorydataset.addvalue(1204.0, "second", "1001.1");
defaultcategorydataset.addvalue(1820.0, "second", "1001.2");
/*/
//*
//添加数据方法2
//实验随机数来生成测试结果
random random = new random(12345);
//图例1,40个数据
for(int i=0;i<40;i++){
defaultcategorydataset.addvalue(random.nextint(100000),
"first",string.valueof(1000+i) );
}
//图例2,40个数据
for (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", // 主轴标签(x轴)
"y",// 范围轴标签(y轴)
categorydataset, // 数据集
plotorientation.vertical,// 方向
false, // 是否包含图例
true, // 提示信息是否显示
false);// 是否使用urls
// 改变图表的背景颜色
jfreechart.setbackgroundpaint(color.white);
categoryplot categoryplot = (categoryplot) jfreechart.getplot();
categoryplot.setbackgroundpaint(color.lightgray);
categoryplot.setrangegridlinepaint(color.white);
categoryplot.setrangegridlinesvisible(false);
//修改范围轴。 我们将默认刻度值 (允许显示小数) 改成只显示整数的刻度值。
numberaxis numberaxis = (numberaxis) categoryplot.getrangeaxis();
numberaxis.setstandardtickunits(numberaxis.createintegertickunits());
// 设置x轴上的lable让其45度倾斜
categoryaxis domainaxis = categoryplot.getdomainaxis();
domainaxis.setcategorylabelpositions(categorylabelpositions.up_45); // 设置x轴上的lable让其45度倾斜
domainaxis.setlowermargin(0.0); // 设置距离图片左端距离
domainaxis.setuppermargin(0.0); // 设置距离图片右端距离
lineandshaperenderer lineandshaperenderer = (lineandshaperenderer) categoryplot
.getrenderer();
lineandshaperenderer.setshapesvisible(true);
lineandshaperenderer.setdrawoutlines(true);
lineandshaperenderer.setusefillpaint(true);
lineandshaperenderer.setbasefillpaint(color.white);
lineandshaperenderer.setseriesstroke(0, new basicstroke(3.0f));
lineandshaperenderer.setseriesoutlinestroke(0, new basicstroke(2.0f));
lineandshaperenderer.setseriesshape(0, new ellipse2d.double(-5.0, -5.0,
10.0, 10.0));
lineandshaperenderer.setitemmargin(0.4); //设置x轴每个值的间距(不起作用??)
// 显示数据值
decimalformat decimalformat1 = new decimalformat("##.##");// 数据点显示数据值的格式
lineandshaperenderer.setbaseitemlabelgenerator(new standardcategoryitemlabelgenerator(
"{2}", decimalformat1));// 设置数据项标签的生成器
lineandshaperenderer.setbaseitemlabelsvisible(true);// 基本项标签显示
lineandshaperenderer.setbaseshapesfilled(true);// 在数据点显示实心的小图标
return jfreechart;
}
public static jpanel createdemopanel() {
jfreechart jfreechart = createchart(createdataset());
try {
chartutilities.savechartasjpeg(
new file("d:/linechartdemo1.png"), //文件保存物理路径包括路径和文件名
// 1.0f, //图片质量 ,0.0f~1.0f
jfreechart, //图表对象
1024, //图像宽度 ,这个将决定图表的横坐标值是否能完全显示还是显示省略号
768);
} catch (ioexception e) {
// todo auto-generated catch block
e.printstacktrace();
} //图像高度
return new chartpanel(jfreechart);
}
public static void main(string[] strings) {
linechartdemo1 linechartdemo1 = new linechartdemo1(
"jfreechart - line chart demo 1");
linechartdemo1.pack();
refineryutilities.centerframeonscreen(linechartdemo1);
linechartdemo1.setvisible(true);
}
/* synthetic */
static class class $(string string) {
class var_class;
try {
var_class = class .forname(string);
} catch (classnotfoundexception classnotfoundexception) {
throw new noclassdeffounderror(classnotfoundexception.getmessage());
}
return var_class;
}
}
|
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
原文链接:https://blog.csdn.net/yuhentian/article/details/20213191
相关文章
猜你喜欢
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-29 90
-
2025-05-29 70
-
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2025-05-29 51 -
2025-05-29 59
-
2025-05-27 58
热门评论