网站首页 > 教程分享 正文
最近工作中有这样一个需求,需要在word文档中插入折线图。之前生成图表一般都是由前端生成,自己作为一个后端也没使用java生成过图表,网上查了下JFreeChart可以实现相关功能,自己尝试了下确实能够满足需求,在此简单记录下。
1、引入maven依赖:
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.4</version>
</dependency>
2、单折线图
下面以一个展示月销售额折线图的例子:
@Test
public void test01() throws IOException {
// 创建数据集
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(12, "月销售额", "1月");
dataset.addValue(11, "月销售额", "2月");
dataset.addValue(15, "月销售额", "3月");
dataset.addValue(12, "月销售额", "4月");
dataset.addValue(14, "月销售额", "5月");
dataset.addValue(11, "月销售额", "6月");
dataset.addValue(14, "月销售额", "7月");
dataset.addValue(11, "月销售额", "8月");
dataset.addValue(14, "月销售额", "9月");
dataset.addValue(13, "月销售额", "10月");
dataset.addValue(14, "月销售额", "11月");
dataset.addValue(13, "月销售额", "12月");
// 创建并定制主题以支持中文
StandardChartTheme theme = (StandardChartTheme) StandardChartTheme.createJFreeTheme();
theme.setTitlePaint(Color.BLACK);
theme.setExtraLargeFont(new Font("宋体", Font.PLAIN, 18)); // 使用支持中文的字体
theme.setRegularFont(new Font("宋体", Font.PLAIN, 14));
theme.setLargeFont(new Font("宋体", Font.PLAIN, 16));
ChartFactory.setChartTheme(theme);
// 创建折线图
JFreeChart chart = ChartFactory.createLineChart(
"折线图", // 图表标题
"月份", // X轴标签
"月销售额", // Y轴标签
dataset // 数据集
);
int width = 640; // 图片宽度
int height = 480; // 图片高度
File file = new File("C:\\Users\\Administrator\\Desktop\\line_chart.png");
ChartUtils.saveChartAsPNG(file, chart, width, height);
}
效果图如下:
3、双折线图
在上述月销售额折线图的基础上,再加一条折线,该折线用来表示月利润
@Test
public void test02() throws IOException {
// 创建第一个数据系列
XYSeries series1 = new XYSeries("月均销售额");
series1.add(1,4);
series1.add(2,11);
series1.add(3,15);
series1.add(4,12);
series1.add(5,14);
series1.add(6,19);
series1.add(7,8);
series1.add(8,11);
series1.add(8,14);
series1.add(10,14);
series1.add(11,9);
series1.add(12,13);
// 创建第二个数据系列
XYSeries series2 = new XYSeries("月利润");
series2.add(1,2);
series2.add(2,4);
series2.add(3,8);
series2.add(4,5);
series2.add(5,7);
series2.add(6,13);
series2.add(7,3);
series2.add(8,7);
series2.add(8,7);
series2.add(10,12);
series2.add(11,7);
series2.add(12,11);
// 将两个数据系列放入数据集
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series1);
dataset.addSeries(series2);
// 创建并定制主题以支持中文
StandardChartTheme theme = (StandardChartTheme) StandardChartTheme.createJFreeTheme();
theme.setTitlePaint(Color.BLACK);
theme.setExtraLargeFont(new Font("宋体", Font.PLAIN, 18)); // 使用支持中文的字体
theme.setRegularFont(new Font("宋体", Font.PLAIN, 14));
theme.setLargeFont(new Font("宋体", Font.PLAIN, 16));
ChartFactory.setChartTheme(theme);
// 创建折线图
JFreeChart chart = ChartFactory.createXYLineChart(
"",
"月份",
"金额",
dataset,
PlotOrientation.VERTICAL,
true, // 是否显示图例
true, // 是否生成工具提示
false // 是否生成URL链接
);
int width = 640; // 图片宽度
int height = 480; // 图片高度
// 将图表输出为PNG图片
File file = new File("C:\\Users\\Administrator\\Desktop\\line_chart2.png");
ChartUtils.saveChartAsPNG(file, chart, width, height);
}
效果图如下:
当然了JFreeChart的功能不只是生成折线图,JFreeChart是一个强大的开源Java库,用于创建各种图表,如柱状图、折线图、饼图、散点图等。因为需求只需要生成折线图,所以只是简单了解了折线图的生成方式,感兴趣的可以自己研究下。
猜你喜欢
- 2024-10-20 福利:SaschArt 推出 LoudnessMeterFree 全新的免费响度分析器插件
- 2024-10-20 Java 将Excel工作表中的图表转换为图片
- 2024-10-20 3分钟学会程序员“面试回答规范”,不怕找不到工作的里面请
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)