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. python3.x 基础八:socket网络编程

    Socket socket就是一直以来说的“套接字”,用于描述:ip:端口,是通信链的句柄,客户端通过这个句柄进行请求和响应 普通文件的操作顺序:打开-读写-关闭,针对的是文件 socket是特殊的文 ...

  2. H3C S5500三层交换机划分Vlan与H3C路由组网

    基本属性: vlan特性:三层互通,两层隔离.三层交换机不同vlan之间默认是互通的,两次交换机不同vlan是隔离的. vlan IP:就是定义一个vlan下所有机器的网关地址,该vlan下的机器网关 ...

  3. 六、表达式:前缀&&后缀

    count为运算后的值.

  4. springboot连接数据源,配置数据库

    Spring官方DriverManagerDataSource的配置 修改yml #配置数据源的属性 spring: datasource: driver-class-name: com.mysql. ...

  5. APP定位元素之UiSelector

    1.UiSelector 类介绍 功能:通过各种属性与节点关系定位组件 操作步骤:找到对象->操作对象 2.四中匹配关系的介绍 (1)完全匹配 (2)包含匹配 (3)正则匹配 (4)起始匹 例子 ...

  6. [C# WPF] 关于将文本框竖起来(旋转文字)

    xx.xmal.cs 后台代码中动态添加控件到 UI 文字显示在一个 Canvas 中(定位用Canvas.SetLeft() / Canvas.SetTop() ), 为了实现排版效果,可适当在 T ...

  7. [书籍分享]0-006.App营销解密:移动互联网时代的营销革命

    封面 内容简介 如何在移动互联网上推广和销售自己的产品?如何通过移动互联网为顾客提供服务?如何在移动互联网上树立和传播自己的品牌?这几乎是当下所有互联网企业和传统企业都在思考的问题,企业要想在移动互联 ...

  8. Druid数据库连接池的使用

    Druid  阿里提供的数据库连接池,集以上连接池优点于一身,开发使用此连接池 使用配置文件方式获取Druid数据库连接池 TestDruid package com.aff.connection; ...

  9. Matlab矩阵学习三 矩阵的运算

    Matlab矩阵的运算 一.矩阵的加减 在matlab中,矩阵的加减和数的加减符号一样,都是"+"和”-“,不同的是两个进行运算的矩阵维度必须相同  二.数乘  三.乘法 矩阵乘法 ...

  10. MySQL 可重复读,差点就我背上了一个 P0 事故!

    小黑黑的碎碎念 哎,最近有点忙,备考复习不利,明天还要搬家,好难啊!! 本想着这周鸽了,但是想想还是不行,爬起来,更新一下,周更可不能断.偷懒一下,修改一下之前的一篇历史文章,重新发布一下. P0 事 ...