Java画折线图

??? JFreeChart 是开放源代码站点SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 )、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。

??? 应用jfreechart来画图需要两个jar包:jfreechart.jar和jcommon.jar,直接去官网下载就成:

https://sourceforge.net/projects/jfreechart/files/

?? 下载完成后解压,然后将jfreechart.jar和jcommon.jar两个包导入到需要画表的项目中,导入的方法:

右击项目所在的包,选中Build Path,然后选择? Configure?Build Path,点击Libraries,再点击Add External JARS,将上述两个包添加进去就可以用啦

最近在写排序算法,忽然想对比一下各种排序算法的实际运行时间,所以画个图表可以更加直观的进行比较。

代码实现画折线图

class?chart{?
????????//?步骤1:创建CategoryDataset对象(准备数据)?
????CategoryDataset?dataset?=?createDataset();??
????CategoryDataset?dataset1?=?createDataset1();
????//?步骤2:根据Dataset?生成JFreeChart对象,以及做相应的设置??
????JFreeChart?freeChart?=?createChart(dataset);?
????JFreeChart?freeChart1?=?createChart1(dataset1);?
????
????
????//根据CategoryDataset创建JFreeChart对象
????public?static?JFreeChart?createChart(CategoryDataset?categoryDateset){
????????
????????//?创建JFreeChart对象:ChartFactory.createLineChart??
????????JFreeChart?jfreechart?=?ChartFactory.createLineChart("The?Confrontation?Of?Sorts?In?Best?Case",?//?标题
????????????????"Sort?By",?????????//categoryAxisLabel?(category轴,横轴,X轴标签)
????????????????"Spent?Time",??????//?valueAxisLabel(value轴,纵轴,Y轴的标签)
????????????????categoryDateset,??//Dataset??
????????????????PlotOrientation.VERTICAL,?false,?//?legend?
????????????????false,??????????//Tooltips
????????????????false);????????//URLs
????????
????????//?使用CategoryPlot设置各种参数。??
????????CategoryPlot?plot?=?(CategoryPlot)jfreechart.getPlot();??
????????
????????//?背景色?透明度??
????????plot.setBackgroundAlpha(0.5f);??
????????
????????//?前景色?透明度??
????????plot.setForegroundAlpha(1.0f);??
????????
????????//?其他设置?参考?CategoryPlot类??
????????LineAndShapeRenderer?renderer?=?(LineAndShapeRenderer)plot.getRenderer();??
????????renderer.setBaseShapesVisible(true);?//?series?点(即数据点)可见??
????????renderer.setBaseLinesVisible(true);?//?series?点(即数据点)间有连线可见??
????????renderer.setUseSeriesOffset(true);?//?设置偏移量??
????????renderer.setBaseItemLabelGenerator(new?StandardCategoryItemLabelGenerator());??
????????renderer.setBaseItemLabelsVisible(true);??
????????return?jfreechart;??
????}
????
????public?static?CategoryDataset?createDataset()?{??
????????String[]?rowKeys?=?{"Sort"};??
????????String[]?colKeys?=?{"HeapSort","ShellSort","BubbleSort","QuickSort","RadixSort","SimpleSort"};??
????????
????????double[][]?data?=?{{TimeChat.btime_Heap,TimeChat.btime_Shell,TimeChat.btime_Bubble,TimeChat.btime_Quick,TimeChat.btime_Radix,TimeChat.btime_Simple},};???
????????//System.out.println(TimeChat.btime_Heap);
????????return?DatasetUtilities.createCategoryDataset(rowKeys,?colKeys,?data);??
????}
????
????//最坏情况下
?????public?static?JFreeChart?createChart1(CategoryDataset?categoryDateset){
????????
????????//?创建JFreeChart对象:ChartFactory.createLineChart??
????????JFreeChart?jfreechart?=?ChartFactory.createLineChart("The?Confrontation?Of?Sorts?In?Worst?Case",?//?标题
????????????????"Sort?By",???????????//categoryAxisLabel?(category轴,横轴,X轴标签)?
????????????????"Spent?Time",???????//valueAxisLabel(value轴,纵轴,Y轴的标签)
????????????????categoryDateset,????//?Dataset
????????????????PlotOrientation.VERTICAL,?false,?//?legend?
????????????????false,????????????//Tooltips?
????????????????false);??????????//?URLs?
????????
?
????????CategoryPlot?plot?=?(CategoryPlot)jfreechart.getPlot();?
????????plot.setBackgroundAlpha(0.5f);???
????????plot.setForegroundAlpha(0.5f);
????????LineAndShapeRenderer?renderer?=?(LineAndShapeRenderer)plot.getRenderer();?
????????renderer.setBaseShapesVisible(true);?//?series?点(即数据点)可见?
????????renderer.setBaseLinesVisible(true);?//?series?点(即数据点)间有连线可见?
????????renderer.setUseSeriesOffset(true);?//?设置偏移量?
????????renderer.setBaseItemLabelGenerator(new?StandardCategoryItemLabelGenerator());?
????????renderer.setBaseItemLabelsVisible(true);?
????????return?jfreechart;?
?????}
?????
?????public?static?CategoryDataset?createDataset1()?{?
????????String[]?rowKeys?=?{"Sort"};?
????????String[]?colKeys?=?{"HeapSort","ShellSort","BubbleSort","QuickSort","RadixSort","SimpleSort"};?
???????
????????double[][]?data?=?{{TimeChat.wtime_Heap,TimeChat.wtime_Shell,TimeChat.wtime_Bubble,TimeChat.wtime_Quick,TimeChat.wtime_Radix,TimeChat.wtime_Simple},};??
????????//System.out.println(TimeChat.btime_Heap);
????????return?DatasetUtilities.createCategoryDataset(rowKeys,?colKeys,?data);?
????}
?????
}

将图表建好之后需要借助ChartPanel类将其显示出来,或者可以将生成的图表以图片格式保存到本地,我选择将它直接显示出来:

public?class?TimeChart{
?????public?static?void?main(String[]?strings){
??????????TimeChat?tc?=?new?TimeChat();?//另一个类,初始化data[][]中的变量
??????????chart?ct?=?new?chart();
??????????ChartPanel?chartf?=?new?ChartPanel(ct.freeChart,true);
??????????ChartPanel?chartf1?=?new?ChartPanel(ct.freeChart1,true);
??????????JFrame?jf?=?new?JFrame();
??????????jf.add(chartf,BorderLayout.WEST);
??????????jf.add(chartf1,BorderLayout.EAST);
??????????jf.setVisible(true);
??????????jf.setSize(1400,?600);
??????????jf.setLocationRelativeTo(null);
?????}
}

运行效果如下

时间: 2024-08-02 00:58:50

Java画折线图的相关文章

python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)

最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指正. 一.最简单的基本框架如下:已知x,y,画出折线图并保存.此时x和y均为数字. 1 # -*- coding: utf-8 -*- 2 3 import matplotlib.pyplot as plt #引入matplotlib的pyplot子库,用于画简单的2D图 4 import random 5

IOS使用Core-Plot画折线图

关于Core-Plot的配置,大家可以参考我的上一篇博客:http://1.wildcat.sinaapp.com/?p=99 版权所有,转载请注明原文转自:http://blog.csdn.net/wildcatlele/article/details/25483923 大家可以到:http://1.wildcat.sinaapp.com/?p=102观看本篇博客更友好的排版格式 或者你英语好也可以参考github上的wiki介绍:https://code.google.com/p/core-

Cocos2d3.0 画折线图

实现用2dx画折线图,为以后用2dx开发应用做准备 下面记录下使用方法 auto lineView = DJLineChart::create(); std::vector<float> vec; vec.push_back(130); vec.push_back(520); vec.push_back(60); vec.push_back(0); vec.push_back(140); vec.push_back(100); vec.push_back(30); vec.push_back(

Matplotlib学习---用matplotlib画折线图(line chart)

这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图. 数据地址:https://raw.githubusercontent.com/jakevdp/data-CDCbirths/master/births.csv 准备工作:先导入matplotlib和pandas,用pandas读取csv文件,然后创建一个图像和一个坐标轴 import pandas as pd from matplotlib import pyplot as plt birth=p

unity 画折线图,饼型图插件

在unity中画折线图,和饼型图等数据分析图是很困难 的一件事,幸好我找到了一个插件很方便的解决了这件事,效果如下图: 折线图,饼型图,等. 运行效果如下: 百度网盘下载地址:链接:https://pan.baidu.com/s/10oLG1Zmffv7ASWG0pvx05w 提取码:lub1 如果链接失效,请留言. 原文地址:https://blog.51cto.com/14058389/2425723

Android画折线图、柱状图、饼图(使用achartengine.jar)

自从用了画折线的jar包之后,就不想再用canvas画布去画了,编程就是要站在巨人的肩膀上. 所需要的jar包achartenginejar 折线代码布局文件就不上传了很简单 另一种线的渲染器 扇形图代码 柱状图代码 属性总结部分代码 新测试代码下载地址 所需要的jar包:achartengine.jar 下载地址:http://download.csdn.net/detail/zhengyikuangge/9460642 折线代码(布局文件就不上传了,很简单): package com.exa

python的turtle模块画折线图

代码如下: import turtle yValues = [10.0,7.4,6.4,5.3,4.4,3.7,2.6] def main(): t = turtle.Turtle() t.hideturtle() drawLine(t,0,0,300,0) #画x轴 drawLine(t,0,0,0,175) #画y轴 #画折线 for i in range(6): drawLineWithDots(t,40 + (40 * i),15 * yValues[i],40 + (40 * (i+1

Android通过achartengine画折线图

因为前段时间Android项目中用到了折线图的功能,在查资料的过程中发现achartengine这个包有非常强大的画图功能,正好最近有时间,就整理一下方便以后查看. 首先要使用画图功能,就必须在lib中引入achartengine包.为了使用方便,直接使用示例中的两个文件,源码如下: IDemoChart.java import android.content.Context; import android.content.Intent; /** * Defines the demo chart

gnuplot画折线图

之前尝试用jfreechart画自定义横坐标的折线图或时序图,发现很复杂,后来改用gnuplot了. gnuplot在网上一搜就能找到下载地址. 安装完成后,主要是命令行形式的交互界面,至少比jfreechart进步一些... set xrange [0:240]  #设置x轴范围 set yrange [1:1.5]  #设置y轴范围 set xtics ("0" 0, "60" 60, "120" 120, "180" 1