使用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效果的饼形图:如 ...
随机推荐
- zabbix 自动发现主机并关联模板
一.自动发现添加主机 1.利用agent自动发现主机 Configuration - Discovery -Create discovery rule 2.将自动发现的主机关联模板 Configura ...
- [转载] Objectiv-C 入门一二三
http://my.oschina.net/fuckphp/blog/92993 http://my.oschina.net/fuckphp/blog/93217 http://my.oschina. ...
- poj2778 AC自动机
以下内容均为转载,,只有代码是自己写的=-= http://blog.csdn.net/morgan_xww/article/details/7834801 转载地址 博主写的很好 ------- ...
- mysql中的联合查询(内联、左联、外联、右联、全联)
转 https://www.cnblogs.com/withscorpion/p/9454490.html 联合查询效率较高,举例子来说明联合查询:内联inner join .左联left oute ...
- byte值的问题
byte值的问题 byte b1 = 127; byte b2 = (byte)128; //-128 byte b3 = (byte)129; //-127 byte b4 = (byte)130; ...
- mybatis是怎样炼成的
前言 一些个人感受:不管分析什么源码,如果我们能摸索出作者的心路历程,跟着他的脚步一步一步往前走,这样才能接近事实的真相,也能更平滑更有趣的学习到知识.跟福尔摩斯探案一样,作者都经历了些什么,为什么他 ...
- JAVA WEB EL表达式注入
看猪猪侠以前的洞,顺便总结下: 一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的we ...
- vc程序设计--图形绘制2
// 实验2.cpp : 定义应用程序的入口点. // #include "framework.h" #include "实验2.h" #define MAX_ ...
- data类型的url
所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些"小"的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Ta ...
- Redis 单节点百万级别数据 读取 性能测试.
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 这里先进行造数据,向redis中写入五百万条数据,具体方式有如下三种: 方法一:(Lua 脚本) vim ...