java中使用JFreeChart生成饼图和曲线图(横坐标字符串)

2024-02-15 01:48

本文主要是介绍java中使用JFreeChart生成饼图和曲线图(横坐标字符串),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近项目中有个需求要根据不同的数据,生成一个饼图,用来表示各部分的占比情况,测试了很多,最后发现JFreeChart最简便实用,下面是具体实现过程

1,pom文件中添加jar包的引用

org.jfree jfreechart 1.0.19 2,创建生成图片的方法

public class JFreeChartUtil {
public static void main(String[] args) {
DefaultPieDataset pds = new DefaultPieDataset();
pds.setValue(“00点-04点”, 100);
pds.setValue(“04点-08点”, 200);
pds.setValue(“08点-12点”, 300);
pds.setValue(“12点-16点”, 400);
pds.setValue(“16点-20点”, 500);
pds.setValue(“20点-24点”, 600);
String filePath = “d:/pie.jpg”;
createPieChart(pds,filePath);
}

public static void createPieChart(DefaultPieDataset pds, String filePath) {try {// 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接JFreeChart chart = ChartFactory.createPieChart("今日放屁次数:时间段分布图", pds, false, false, true);// 如果不使用Font,中文将显示不出来Font font = new Font("宋体", Font.BOLD, 12);// 设置图片标题的字体chart.getTitle().setFont(font);// 得到图块,准备设置标签的字体PiePlot plot = (PiePlot) chart.getPlot();// 设置标签字体plot.setLabelFont(font);plot.setStartAngle(new Float(3.14f / 2f));// 设置plot的前景色透明度plot.setForegroundAlpha(0.7f);// 设置plot的背景色透明度plot.setBackgroundAlpha(0.0f);// 设置标签生成器(默认{0})// {0}:key {1}:value {2}:百分比 {3}:sumplot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1}占{2})"));// 将内存中的图片写到本地硬盘ChartUtilities.saveChartAsJPEG(new File(filePath), chart, 600, 300);} catch (Exception e) {e.printStackTrace();}  
}

}
3,生成的效果图如下:

在这里插入图片描述

4,生成折线图的代码

public class JFreeChartUtil {
public static void main(String[] args) {
DefaultCategoryDataset ds = new DefaultCategoryDataset();
ds.setValue(10, “ibm”, “2018-05-21”);
ds.setValue(20, “ibm”, “2018-05-22”);
ds.setValue(32, “ibm”, “2018-05-23”);
ds.setValue(25, “ibm”, “2018-05-24”);
ds.setValue(0, “ibm”, “2018-05-25”);
ds.setValue(4, “ibm”, “2018-05-26”);
ds.setValue(32, “ibm”, “2018-05-27”);
ds.setValue(0, “ibm”, “2018-05-28”);
ds.setValue(358, “ibm”, “2018-05-29”);
ds.setValue(4, “ibm”, “2018-05-30”);
String filePath = “d:/lgg.jpg”;
createPieChart(pds,filePath);
}

public static void createLineChart(DefaultCategoryDataset ds, String filePath) {
try {
// 创建柱状图.标题,X坐标,Y坐标,数据集合,orientation,是否显示legend,是否显示tooltip,是否使用url链接
JFreeChart chart = ChartFactory.createLineChart(“近30天每日放屁次数趋势图”, “”, “次数”, ds, PlotOrientation.VERTICAL,false, true, true);
chart.setBackgroundPaint(Color.WHITE);
Font font = new Font(“宋体”, Font.BOLD, 12);
chart.getTitle().setFont(font);
chart.setBackgroundPaint(Color.WHITE);
// 配置字体(解决中文乱码的通用方法)
Font xfont = new Font(“仿宋”, Font.BOLD, 12); // X轴
Font yfont = new Font(“宋体”, Font.BOLD, 12); // Y轴
Font titleFont = new Font(“宋体”, Font.BOLD, 12); // 图片标题
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.getDomainAxis().setLabelFont(xfont);
categoryPlot.getDomainAxis().setLabelFont(xfont);
categoryPlot.getRangeAxis().setLabelFont(yfont);
chart.getTitle().setFont(titleFont);
categoryPlot.setBackgroundPaint(Color.WHITE);
// x轴 // 分类轴网格是否可见
categoryPlot.setDomainGridlinesVisible(true);
// y轴 //数据轴网格是否可见
categoryPlot.setRangeGridlinesVisible(true);
// 设置网格竖线颜色
categoryPlot.setDomainGridlinePaint(Color.LIGHT_GRAY);
// 设置网格横线颜色
categoryPlot.setRangeGridlinePaint(Color.LIGHT_GRAY);
// 没有数据时显示的文字说明
categoryPlot.setNoDataMessage(“没有数据显示”);
// 设置曲线图与xy轴的距离
categoryPlot.setAxisOffset(new RectangleInsets(0d, 0d, 0d, 0d));
// 设置面板字体
Font labelFont = new Font(“SansSerif”, Font.TRUETYPE_FONT, 12);
// 取得Y轴
NumberAxis rangeAxis = (NumberAxis) categoryPlot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
rangeAxis.setAutoRangeIncludesZero(true);
rangeAxis.setUpperMargin(0.20);
rangeAxis.setLabelAngle(Math.PI / 2.0);
// 取得X轴
CategoryAxis categoryAxis = (CategoryAxis) categoryPlot.getDomainAxis();
// 设置X轴坐标上的文字
categoryAxis.setTickLabelFont(labelFont);
// 设置X轴的标题文字
categoryAxis.setLabelFont(labelFont);
// 横轴上的 Lable 45度倾斜
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
// 设置距离图片左端距离
categoryAxis.setLowerMargin(0.0);
// 设置距离图片右端距离
categoryAxis.setUpperMargin(0.0);
// 获得renderer 注意这里是下嗍造型到lineandshaperenderer!!
LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryPlot.getRenderer();
// 是否显示折点
lineandshaperenderer.setBaseShapesVisible(true);
// 是否显示折线
lineandshaperenderer.setBaseLinesVisible(true);
// series 点(即数据点)间有连线可见 显示折点数据
lineandshaperenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
lineandshaperenderer.setBaseItemLabelsVisible(true);
ChartUtilities.saveChartAsJPEG(new File(filePath), chart, 1207, 500);
} catch (Exception e) {
e.printStackTrace();
}
}
}
5,效果图如下:

在这里插入图片描述
————————————————
版权声明:本文为CSDN博主「编码小王子」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011900448/article/details/80541504

这篇关于java中使用JFreeChart生成饼图和曲线图(横坐标字符串)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/710147

相关文章

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的