1. 准备工作

  • 下载JFreeChart,我使用的版本为1.0.19,相关内容参见JFreeChart,下载链接为https://sourceforge.net/projects/jfreechart/files/
  • 导入jar包,本例子使用jcommon-1.0.23.jarjfreechart-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生成条形图的更多相关文章

  1. 利用Python进行数据分析(2) 尝试处理一份JSON数据并生成条形图

    一.JSON 数据准备 首先准备一份 JSON 数据,这份数据共有 3560 条内容,每条内容结构如下: 本示例主要是以 tz(timezone 时区) 这一字段的值,分析这份数据里时区的分布情况. ...

  2. 使用poi和jfreechart生成excel图表图片

    最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西.有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现. 除此之外,也有一些功能只需要生成对应的 ...

  3. 使用jfreechart生成柱状图、折线图、和饼状图

    JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计.下面我就详细介绍如 ...

  4. 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, ...

  5. JFreeChart生成饼形图(3) (转自 JSP开发技术大全)

    JFreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图: ...

  6. 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)

    利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...

  7. 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)

    利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...

  8. 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)

    利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...

  9. JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)

    FreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如 ...

随机推荐

  1. System.Web.mail ----虚拟发件人发送邮件

     转载别人的 使用SMTP发送邮件   说到邮件发送,先提一下SMTP. SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议.它是一组用于从源地址到目的 ...

  2. jQuery中prevAll得到的DOM元素顺序问题

    学习笔记,记录下学习中遇到的问题. 使用jQuery中的prevAll可以查找当前元素之前所有的同辈元素,但是却存在一个问题:得到的同辈元素的为正常顺序的反方向. 举个例子: <!doctype ...

  3. BZOJ1080 暴力+位移运算符的用法

    1080: [SCOI2008]劣质编码 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 337  Solved: 148[Submit][Status ...

  4. Gym101630L Laminar Family

    题目链接:https://cn.vjudge.net/problem/Gym-101630L 题目大意: 对于一个集合的集合,若其中任意两个集合 \(A\) 和 \(B\) 都满足下述三个条件之一:\ ...

  5. 非常实用的织梦dede所有标签调用方法大全

    关键描述调用标签: <meta name="keywords" content="{dede:field name='keywords'/}">&l ...

  6. Golang源码学习:调度逻辑(四)系统调用

    Linux系统调用 概念:系统调用为用户态进程提供了硬件的抽象接口.并且是用户空间访问内核的唯一手段,除异常和陷入外,它们是内核唯一的合法入口.保证系统的安全和稳定. 调用号:在Linux中,每个系统 ...

  7. [工具-006] C#如何模拟发包登录

    最近接到一个任务,就是模拟某个贴吧的登录发帖功能,我的思路是通过IE浏览器的工具对登陆操作进行抓包,记录登录时候请求的URL,请求方式,请求正文等信息进行模拟的发包. 1.首先我们要到登陆页面,以摇篮 ...

  8. leetcode56之合并区间

    题目描述: 给出一个区间的集合,请合并所有重叠的区间. 示例: 输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1, ...

  9. FTP免费工具,FTP免费工具推荐!

    IIS7服务器管理工具是FTP操作的客户端软件,能够作为批量操作FTP命令!同时,它还能够作为VNC的操作客户端进行VNC的相关操作!能够连接Windows和Linux的服务器和PC,并进行实时的检测 ...

  10. Chisel3 - util - Lookup

    https://mp.weixin.qq.com/s/g85Si6n37D9PYfR5hEoRQQ     实现一个查找逻辑.   参考链接: https://github.com/freechips ...