JFreeChart(1)

简介:  今天开始学习JFreeChart了,JFreeChart的主要功能就是创建各种各样的图表!可以很方便的表现一些数据!以前学习的一些笔记都是放自己电脑上的,近来突然觉得有时候换电脑什么的想看自己原来的笔记就有点麻烦了,所以决定以后就把笔记都以博客的形式进行发表,这样以后看的时候也好看一点!...



 今天开始学习JFreeChart了,JFreeChart的主要功能就是创建各种各样的图表!可以很方便的表现一些数据!以前学习的一些笔记都是放自己电脑上的,近来突然觉得有时候换电脑什么的想看自己原来的笔记就有点麻烦了,所以决定以后就把笔记都以博客的形式进行发表,这样以后看的时候也好看一点!好了,下面就开始我的JFreeChart的学习了!

使用JFreeChart的整体步骤一般就三个而已,第一步是准备要用来显示的数据,第二步是创建一个JFreeChart对象,JFreeChart对象通过前面的数据(dataset)来生成一个图表,第三步是显示生成的图表;

下面是一个入门示例,生成pieChart;

 

第一步:取得数据

JFreeChart可以通过任何实现了PieDataset接口的类取得数据来生成一个JFreeChart对象,而DefaultPieDataset则是实现了这个接口的,下面我们就可以利用这个接口来生成数据了!

DefaultPieDataset defaultPieDataset = new DefaultPieDataset();
defaultPieDataset.setValue("中文 1", 43.2);
defaultPieDataset.setValue("Category 2", 27.8);
defaultPieDataset.setValue("Category 3", 79.5);

 

第二步:利用前面的数据来生成JFreeChart对象;

JfreeChart里面提供了一个ChartFactory对象,可以方便我们来创建各种各样的chart对象

JFreeChart jfreeChart = ChartFactory.createPieChart("中文标题",//标题
defaultPieDataset,//上面生成的数据,即传入要用于显示的数据
true,//是否显示图例
true,//是否生成工具提示
true);//是否生成URL

 

第三步:显示生成的图表

显示生成的图标可以有很多种方式,在WEB程序中可以直接以流的方式写到客户端,也可以把生成的图表以图片的形式保存在服务器上,然后客户端访问该图片,我这里举的是最简单的那种,即把图表直接显示在一个frame里面,关于这个JFreeChart的一个ChartFrame对象已经封装好了!

ChartFrame chartframe = new ChartFrame("Test", jfreeChart);//First表示该Frame的标题,jfreechart表示要显示的JFreeChart对象
chartframe.pack();//自适应窗体
chartframe.setVisible(true);

 至此一个简单显示图表的问题就解决了,

关于这个还有一个就是中文问题,就是在标题或者标签出现中文的时候会出现乱码,这个问题将在下面的完整代码里面进行解决

下面是一个完整的代码

  

package com.tiantian.everything.chart;

import java.awt.Font;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;

public class Test {

	@SuppressWarnings("unchecked")
	public static void main(String args[]) {
		DefaultPieDataset defaultPieDataset = new DefaultPieDataset();
		defaultPieDataset.setValue("中文 1", 43.2);
		defaultPieDataset.setValue("中 2", 27.8);
		defaultPieDataset.setValue("Category 3", 79.5);
		
		JFreeChart jfreeChart = ChartFactory.createPieChart("中文标题",// 标题
				defaultPieDataset,// 上面生成的数据,即传入要用于显示的数据
				true,// 是否显示图例
				true,// 是否生成工具提示
				true);// 是否生成URL
		
		// 如果前面的标题是中文的话则在页面是显示的时候会出现乱码,我的解决方法是在生成了JFreeChart对象后,
		// 将JFreeChart对象的标题重新设置一次,并将它的字体设置为中文字体,这样就不乱码了
		jfreeChart.setTitle(new TextTitle(jfreeChart.getTitle().getText(),
				new Font("宋体", Font.CENTER_BASELINE, 21)));
		
		// 这个对象是JFreeChart对象包含的一个主体对象,每个JFreeChart对象都包含一个类似的对象,
		// 该对象有前面的数据的引用等
		PiePlot piePlot = (PiePlot) jfreeChart.getPlot();
		
		// 如果没有这句的上面的标签出现中文的时候也是会乱码的,pieLot可以直接这样设置它的标签的字体,
		// 但是JFreeChart我就没有找到可以直接设置它的标题的字体的方法
		piePlot.setLabelFont(new Font("宋体", Font.CENTER_BASELINE, 16));
		
		// 下面一段是对下方显示的图例的中文的解决
		jfreeChart.getLegend(0).setItemFont(
				new Font("宋体", Font.CENTER_BASELINE, 15));
		
		ChartFrame chartframe = new ChartFrame("Test", jfreeChart);// First表示该Frame的标题,jfreechart表示要显示的JFreeChart对象
		chartframe.pack();// 自适应窗体
		chartframe.setVisible(true);
	}

}

 

 还可以将生成的Chart输出到一个输出流里面:

ChartUtilities.writeChartAsJPEG(fos,// 输出到哪个输出流   
                1, // jpeg 图片的质量,0~1之间   
                chart, // 统计图表对象   
                800,// 长   
                600// 宽   
                );   

 

 

 
 
目录
相关文章
|
JavaScript 物联网 5G
物联网设备连接的下一个引爆点:4G Cat.1
物联网从概念兴起至今已经过了好几些年了。何为物联网,首先要定义何为“物”(Things),笔者理解所有具备连接能力的设备都可以是物,比如一个手环,一个WiFi台灯,或者NB-IoT水表等。
物联网设备连接的下一个引爆点:4G Cat.1
|
8月前
|
人工智能 IDE API
10行代码,实现你的专属阿里云OpenAPI MCP Server
本文介绍如何用10行Python代码创建专属阿里云OpenAPI MCP Server。针对传统MCP Server工具固化、开发复杂等问题,提出借助alibaba-cloud-ops-mcp-server实现灵活拓展的方案。通过配置服务与API名称,运行简短代码即可生成支持SSE连接的MCP Server。用户无需深入了解阿里云OpenAPI细节,大幅降低开发门槛。未来将探索通用工具设计,实现固定工具调用任意API,进一步提升灵活性与效率。
|
6月前
|
人工智能 运维 监控
基于魔搭MCP广场的AI效率革命:在通义灵码中一键调用2400+工具的开发指南
MCP广场技术架构解析与效率优化全攻略。通过统一工具接入规范、智能路由引擎及Serverless执行器,显著降低集成成本,提升AI开发效率。实战演示从环境配置到工具调用全流程,并深入讲解异步处理、成本控制、安全接入等企业级方案。实测数据显示,工具接入周期缩短93%,年节省超85万元。适合追求高效AI研发的团队参考。
318 0
|
存储 开发者 Python
【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
5779 0
【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
|
机器学习/深度学习 算法 Java
【智能优化算法】基于金豺优化算法求解单目标优化问题附matlab代码
【智能优化算法】基于金豺优化算法求解单目标优化问题附matlab代码
【智能优化算法】基于金豺优化算法求解单目标优化问题附matlab代码
|
消息中间件 监控 Cloud Native
|
弹性计算 数据库 黑灰产治理
阿里云服务器免费试用活动可试用配置、参与条件及规则汇总
本文介绍了阿里云服务器免费试用活动及可申请试用的云服务器实例规格、配置及试用时长、参与条件等信息
1088 0
阿里云服务器免费试用活动可试用配置、参与条件及规则汇总
|
编解码 安全 关系型数据库