使用JFreeChart生成条形图
1. 准备工作
- 下载
JFreeChart
,我使用的版本为1.0.19,相关内容参见JFreeChart,下载链接为https://sourceforge.net/projects/jfreechart/files/。 - 导入
jar
包,本例子使用jcommon-1.0.23.jar
和jfreechart-1.0.19.jar
,所以只需要导入这两个包即可。在java
项目下新建目录lib
,将上述两个包复制到该目录下,然后在Eclipse
下选中这两个包,右键单击选中Build Path
菜单项,接着单击Add to Build Path
子项添加jar
包到该项目中。
2. 实例
数据如下:
完整代码如下:
//CreateImage.java
package jfreechart_test;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartColor;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.StandardBarPainter;
import org.jfree.data.category.DefaultCategoryDataset;
public class CreateImage {
public static void createImage() {
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(26, "参考值", "MMSE");
dataset.addValue(4, "参考值", "言语记忆N5");
dataset.addValue(29, "参考值", "注意功能");
dataset.addValue(30, "参考值", "言语流畅性");
dataset.addValue(22, "参考值", "命名测验");
dataset.addValue(38, "参考值", "执行功能");
dataset.addValue(28, "测量值", "MMSE");
dataset.addValue(4, "测量值", "言语记忆N5");
dataset.addValue(30, "测量值", "注意功能");
dataset.addValue(46, "测量值", "言语流畅性");
dataset.addValue(24, "测量值", "命名测验");
dataset.addValue(48, "测量值", "执行功能");
// 创建主题样式
StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
// 设置标题字体
standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 15));
// 设置图例的字体
standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 12));
// 设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 12));
// 应用主题样式
ChartFactory.setChartTheme(standardChartTheme);
JFreeChart barChart = ChartFactory.createBarChart("认知能力得分", null, null, dataset,
PlotOrientation.VERTICAL, true, true, false);
//图表背景色
barChart.setBackgroundPaint(ChartColor.WHITE);
CategoryPlot categoryplot = (CategoryPlot) barChart.getPlot();
categoryplot.setBackgroundPaint(ChartColor.WHITE);
//柱图的呈现器
BarRenderer renderer = new BarRenderer();
renderer.setBarPainter(new StandardBarPainter());//取消渐变效果
renderer.setIncludeBaseInRange(true); // 显示每个柱的数值,并修改该数值的字体属性
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseOutlinePaint(ChartColor.BLACK); // 设置柱子边框颜色
renderer.setDrawBarOutline(true); // 设置柱子边框可见
renderer.setItemMargin(0.05); // 组内柱子间隔为组宽的10%
renderer.setMaximumBarWidth(0.05);// 设置条形柱最大宽度
renderer.setBaseItemLabelsVisible(true, true);
renderer.setShadowVisible(false);//不显示阴影
categoryplot.setRenderer(renderer); // 给柱图添加呈现器
//修改x轴标签方向
CategoryAxis categoryaxis = barChart.getCategoryPlot().getDomainAxis();
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
int width = 500; //图像宽度
int height = 380; //图像高度
File BarChart = new File("d:\\test.png");
try {
ChartUtilities.saveChartAsJPEG(BarChart, barChart, width, height);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//CreateImageIns.java
package jfreechart_test;
public class CreateImageIns {
public static void main(String[] args) {
CreateImage.createImage();
}
}
结果展示:
3. 其他
1. 改变柱子颜色
renderer.setSeriesPaint(i, ChartColor.WHITE);//将第i个柱子设置为白色
在上述CreateImage.java的createImage()方法中的柱图呈现器下面添加如下代码:
//设置柱子颜色
for(int i = 0; i < 12; i++) {
if(i % 2 == 0) {
renderer.setSeriesPaint(i, ChartColor.GRAY);
} else {
renderer.setSeriesPaint(i, ChartColor.WHITE);
}
}
结果为:
使用JFreeChart生成条形图的更多相关文章
- 利用Python进行数据分析(2) 尝试处理一份JSON数据并生成条形图
一.JSON 数据准备 首先准备一份 JSON 数据,这份数据共有 3560 条内容,每条内容结构如下: 本示例主要是以 tz(timezone 时区) 这一字段的值,分析这份数据里时区的分布情况. ...
- 使用poi和jfreechart生成excel图表图片
最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西.有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现. 除此之外,也有一些功能只需要生成对应的 ...
- 使用jfreechart生成柱状图、折线图、和饼状图
JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计.下面我就详细介绍如 ...
- d3 使用随机数据生成条形图
).map(function(){ ,)(),); }) // 返回 [27.2, 12.9, 12.2, 6.8, 9.4, 7.1, 17.5, 30, 16.6, 24.3, 19, 16.6, ...
- JFreeChart生成饼形图(3) (转自 JSP开发技术大全)
JFreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图: ...
- 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)
利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...
- 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)
利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...
- 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...
- JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)
FreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如 ...
随机推荐
- Docker 错误:network xxx id xxxx has active endpoints
问题描述:Docker Compose 部署的项目,使用docker-compose down 命令关闭时,提示错误: Removing network xxxl_default ERROR: net ...
- SqlServer2008查询性能优化_第一章
- [JavaWeb基础] 020.Velocity 模板引擎简单示例
1.什么是Velocity 一种J2EE的前端模版技术,和JSP,Freemarker差不多,都是用来展示网页内容的.和JSP不同的是velocity只能显示Action中的数据,不能处理数据.不能写 ...
- 个人工具,编辑器visual studio code
个人收集的使用方法:简化版 主要基于基础web前端开发,visual studio code教程——基础使用.扩展插件安装使用 下载地址: https://visualstudio.microsoft ...
- 透过 NestedScrollView 源码解析嵌套滑动原理
NestedScrollView 是用于替代 ScrollView 来解决嵌套滑动过程中的滑动事件的冲突.作为开发者,你会发现很多地方会用到嵌套滑动的逻辑,比如下拉刷新页面,京东或者淘宝的各种商品页面 ...
- 这些Java8官方挖过的坑,你踩过几个?
导读:系统启动异常日志竟然被JDK吞噬无法定位?同样的加密方法,竟然出现部分数据解密失败?往List里面添加数据竟然提示不支持?日期明明间隔1年却输出1天,难不成这是天上人间?1582年神秘消失的10 ...
- jQuery-简单理解
1.概念 jQuery是js的一个类库,主要封装的是js中DOM操作部分,使用和原生js一样 2.代码展示 HTML部分 封装原理 test测试 JS部分 //声明对象 var bjsxt = {}; ...
- 【HIVE】数据分析HQL的编写方法/思路
SQL编写一般思路: 1)复杂的查询,先划分为小任务,以降低难度.分别实现各个小任务后,再进行汇总: 2)涉及多表时,先进行联表查询: 3)简单分组,一般只需要group by即可: 4)组内TopN ...
- Java实现 LeetCode 696 计数二进制子串(暴力)
696. 计数二进制子串 给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的. 重复出现的子串要计算它们出现的次数. 示例 1 ...
- Java实现 蓝桥杯 猜算式
猜算式 看下面的算式: □□ x □□ = □□ x □□□ 它表示:两个两位数相乘等于一个两位数乘以一个三位数. 如果没有限定条件,这样的例子很多. 但目前的限定是:这9个方块,表示1~9的9个数字 ...