JFreeChart的总结

因为之前在工作中用到了Echarts这个非常简单易用的图表插件,所以这段时间对图表的相关知识很感兴趣。回想到自己的毕业设计中也用到了图表的显示,当时使用的是JFreeChart,现在看看当时做的真的是不堪入目,虽然功能完成了,但是生成的图表实在是不忍直视,用户体验非常不好。但是JFreeChart也有他自己的优点,例如完全使用java语言编写,API简单,对于java程序员可以很快上手,而不需要像ECharts那样需要对js有一定的了解。下面就说说自己的JFreeChart的一些简单的了解吧。

JFreeChart有几个很重要的元素:

1.数据集Dataset,用于存放图表展示的数据

2.整个图表JFreeChart,包括标题,图表,图例

3.图表Plot,为显示图表的那一块

有了上面三个要素,就可以进行图表的操作了。例如:

public class HelloPieChart {

	public static void main(String[] args) throws IOException {
		//dataset是用于存放数据的数据集,JFreeChart中的数据集都继承自AbstractDataset
		DefaultPieDataset pieDataset=getDataset();
		//通过工厂方法生成一个图表对象。参数分别是图表的标题,数据集,是否需要图例,是否需要tooltips,是否需要对图表创建url
		JFreeChart chart=ChartFactory.createPieChart("Programming Language", pieDataset,true,false, false);
		//为整个图表设置背景色,整个chart包括标题,图表,图例等
		chart.setBackgroundPaint(ChartColor.WHITE);
		//plot为图表内图表的部分
		PiePlot plot=(PiePlot) chart.getPlot();
		//为图表内设置背景色
		plot.setBackgroundPaint(ChartColor.DARK_BLUE);
		
		//输出到本地
		FileOutputStream fos=new FileOutputStream(new File("D:\\ProgrammingLanguage.jpg"));
		//ChartUtilies是JFreeChart提供的工具类,writeChartAsPNG意思是将生成的图表作为png格式输出到D:\\ProgrammingLanguage.jpg
		ChartUtilities.writeChartAsPNG(fos, chart, 500, 300);
		fos.close();
	}
	
	/**
	 * 获取一个数据集
	 * @return 数据集
	 */
	private static DefaultPieDataset getDataset(){
		DefaultPieDataset dataset=new DefaultPieDataset();
		dataset.setValue("Java", 100);
		dataset.setValue("C", 150);
		dataset.setValue("C++", 120);
		dataset.setValue("PHP", 80);
		dataset.setValue("#C", 80);
		return dataset;
	}

}


上面示例为统计编程语言的市场份额(我瞎写的),并将数据生成一个饼状图,通过io流可以将生成的图表图片存储到文件系统中,再将其读取到需要显示的页面即可。

JFreeChart能生成的图表有很多,譬如说柱状图,饼图,散点图等。对于各种图表的生成有很多的方法,但是最基本的那几个要素都是共通的。例如下面的3D柱状图:

public class HelloBarChart {

	public static void main(String[] args) throws IOException {
		CategoryDataset dataset = getDataset();
		//设置语言,避免中文乱码的出现
		StandardChartTheme theme = new StandardChartTheme("CN");
		// 设置标题字体
		theme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20));
		// 设置图例的字体
		theme.setRegularFont(new Font("宋书", Font.PLAIN, 15));
		//设置轴向的字体 
		theme.setLargeFont(new Font("宋体", Font.PLAIN, 15));
		ChartFactory.setChartTheme(theme);
		//工厂类创建一个3D的柱状图。参数分别为标题,横轴文字,纵轴文字,数据集。
		JFreeChart chart = ChartFactory.createBarChart3D("Progamming Language","城市", "占比", dataset);
		chart.setBackgroundPaint(ChartColor.WHITE);
		CategoryPlot plot = chart.getCategoryPlot();
		plot.setBackgroundPaint(ChartColor.WHITE);

		FileOutputStream fos = new FileOutputStream(new File("D:\\progammingLanguageOnCity.jpg"));
		ChartUtilities.writeChartAsJPEG(fos, chart, 500, 300);
		fos.close();
	}

	private static CategoryDataset getDataset() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(100, "北京", "java");
		dataset.addValue(70, "西安", "java");
		dataset.addValue(10, "安康", "java");
		dataset.addValue(100, "北京", "php");
		dataset.addValue(60, "西安", "php");
		dataset.addValue(5, "安康", "php");
		dataset.addValue(100, "北京", "#c");
		dataset.addValue(50, "西安", "#c");
		dataset.addValue(2, "安康", "#c");
		return dataset;
	}
}

JFreeChart还提供了对数据库操作的数据集JDBCXxxDataset,可以直接将数据库返回结果作为结果集。应用也是非常的简单,例如:

public class HelloJDBCPieChart {
	
	public static final String driver="com.mysql.jdbc.Driver";
	public static final String url="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&transformedBitIsBoolean=true";
	public static final String username="root";
	public static final String password="";

	public static void main(String[] args) throws Exception {
		
		//sql表示查询major以及各个major的数量
		String sql="SELECT MAJOR,COUNT(MAJOR) AS MAJORCOUNT FROM STUDENT GROUP BY MAJOR";
		
		Connection connection=null;
		Class.forName(driver);
		connection=DriverManager.getConnection(url,username,password);
		//JDBCPieDataset可以连接数据库,查询后返回查询的数据集。数据集只有两列,第一列为字符串,第二列为数值。所以可以根据需求写出需要的sql。
		PieDataset dataset=new JDBCPieDataset(connection,sql);
		JFreeChart pieChart=ChartFactory.createPieChart3D("students", dataset, true, true, false);
		
		//输出到本地
		FileOutputStream fos=new FileOutputStream(new File("D:\\majors.jpg"));
		ChartUtilities.writeChartAsPNG(fos, pieChart, 500, 300);
	}

}


至此,就是最近的JFreeChart的一点小了解。JFreeChart有优点也有缺陷,优点就是对于java程序员可以很快的上手,API很方便。但是缺陷是只能生成图片,不及ECharts可以做到很好的用户交互。总之各有利弊,主要还是看实际工作中的具体情况再来选择使用什么来作为图表的显示。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置JFreeChart,您需要按照以下步骤进行操作: 1. 首先,您需要从JFreeChart的官方网站(http://www.jfree.org/jfreechart/download.html)下载最新版本的JFreeChart。 2. 在下载页面上,您将看到三个选项可供下载:JFreeChart、Documentation和JCommon。如果您只需要使用JFreeChart来生成统计图表,您只需要下载JFreeChart项目的压缩文件即可。如果您需要查看JFreeChart的API文档,您可以下载Documentation。而JCommon是JFreeChart所依赖的类库文件,如果您已经有了这些类库文件,那么可以选择不下载。 3. 下载完JFreeChart之后,您可以将其解压缩到您的项目目录中。 4. 接下来,您需要将JFreeChart的JAR文件添加到您的项目的构建路径中。具体操作方式取决于您使用的开发工具和构建系统。在大多数情况下,您只需将JAR文件拷贝到您的项目的lib目录下,并将其添加到构建路径中即可。 5. 一旦您完成了JFreeChart的配置,您就可以开始使用它来生成统计图表了。根据您的需求,您可以使用JFreeChart来生成各种类型的图表,例如饼图、柱状图、散点图、时序图、甘特图等等。只需按照JFreeChart的API文档提供符合其所需格式的数据,即可自动生成相应的图表。这些图表可以直接输出为图片文件,也可以导出为PDF或Excel文档。 希望这些步骤能够帮助您成功配置和使用JFreeChart来生成统计图表。如果您需要更详细的说明,请参考JFreeChart的官方文档或社区资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值