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

应用jfreechart来画图需要两个jar包:jfreechart.jar和jcommon.jar,下载地址。

下面是一个画折线图的例子:

package yuth.jfree.demo;

/**

* 使用 categoryDataset 数据集创建折线图

* 当数据多时,在JPanel中无法完全看到横坐标的值,显示为省略号。

* 解决方法:

* 方法1、将报表保存为图片时,设置图片的宽度足够大(2000或3000),图片可以显示横坐标值。

* 这种方法治标不治本,所以有了第2种方法

* 方法2、设置X轴上的Lable让其45度倾斜。

*/

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.geom.Ellipse2D;

import java.io.File;

import java.io.IOException;

import java.net.URL;

import java.text.DecimalFormat;

import java.util.Random;

import javax.swing.ImageIcon;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartPanel;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.axis.CategoryAxis;

import org.jfree.chart.axis.CategoryLabelPositions;

import org.jfree.chart.axis.NumberAxis;

import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;

import org.jfree.chart.plot.CategoryPlot;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.renderer.category.LineAndShapeRenderer;

import org.jfree.chart.title.TextTitle;

import org.jfree.data.category.CategoryDataset;

import org.jfree.data.category.DefaultCategoryDataset;

import org.jfree.ui.ApplicationFrame;

import org.jfree.ui.HorizontalAlignment;

import org.jfree.ui.RectangleEdge;

import org.jfree.ui.RectangleInsets;

import org.jfree.ui.RefineryUtilities;

public class LineChartDemo1 extends ApplicationFrame {

private static final long serialVersionUID = -6354350604313079793L;

/* synthetic */static Class class$demo$LineChartDemo1;

public LineChartDemo1(String string) {

super(string);

JPanel jpanel = createDemoPanel();

jpanel.setPreferredSize(new Dimension(500, 270));

setContentPane(jpanel);

}

/**

* 如何区分不同的图例:根据DefaultCategoryDataset.addValue()的第二个参数是否相同来区分。

* 同一个图例的数据的添加顺序影响最终的显示;不同图例的数据的添加顺序不影响最终的显示。

* @return

*/

private static CategoryDataset createDataset() {

DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();

//defaultcategorydataset.addValue()的参数解析:(数值,图例名,横坐标值)

/*

//添加数据方法1

//图例1

defaultcategorydataset.addValue(212.0, "First", "1001.0");

defaultcategorydataset.addValue(504.0, "First", "1001.1");

defaultcategorydataset.addValue(1520.0, "First", "1001.2");

//图例2

defaultcategorydataset.addValue(712.0, "Second", "1001.0");

defaultcategorydataset.addValue(1204.0, "Second", "1001.1");

defaultcategorydataset.addValue(1820.0, "Second", "1001.2");

/*/

//*

//添加数据方法2

//实验随机数来生成测试结果

Random random = new Random(12345);

//图例1,40个数据

for(int i=0;i<40;i++){

defaultcategorydataset.addValue(random.nextInt(100000),

"First",String.valueOf(1000+i) );

}

//图例2,40个数据

for (int i = 0; i < 40; i++) {

defaultcategorydataset.addValue(random.nextInt(100000),

"Second", String.valueOf(1000 + i));

}

//*/

return defaultcategorydataset;

}

private static JFreeChart createChart(CategoryDataset categorydataset) {

JFreeChart jfreechart = ChartFactory.createLineChart(

"jfreechart test",// 图表标题

"X", // 主轴标签(x轴)

"Y",// 范围轴标签(y轴)

categorydataset, // 数据集

PlotOrientation.VERTICAL,// 方向

false, // 是否包含图例

true, // 提示信息是否显示

false);// 是否使用urls

// 改变图表的背景颜色

jfreechart.setBackgroundPaint(Color.white);

CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();

categoryplot.setBackgroundPaint(Color.lightGray);

categoryplot.setRangeGridlinePaint(Color.white);

categoryplot.setRangeGridlinesVisible(false);

//修改范围轴。 我们将默认刻度值 (允许显示小数) 改成只显示整数的刻度值。

NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();

numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

// 设置X轴上的Lable让其45度倾斜

CategoryAxis domainAxis = categoryplot.getDomainAxis();

domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 设置X轴上的Lable让其45度倾斜

domainAxis.setLowerMargin(0.0); // 设置距离图片左端距离

domainAxis.setUpperMargin(0.0); // 设置距离图片右端距离

LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot

.getRenderer();

lineandshaperenderer.setShapesVisible(true);

lineandshaperenderer.setDrawOutlines(true);

lineandshaperenderer.setUseFillPaint(true);

lineandshaperenderer.setBaseFillPaint(Color.white);

lineandshaperenderer.setSeriesStroke(0, new BasicStroke(3.0F));

lineandshaperenderer.setSeriesOutlineStroke(0, new BasicStroke(2.0F));

lineandshaperenderer.setSeriesShape(0, new Ellipse2D.Double(-5.0, -5.0,

10.0, 10.0));

lineandshaperenderer.setItemMargin(0.4); //设置x轴每个值的间距(不起作用??)

// 显示数据值

DecimalFormat decimalformat1 = new DecimalFormat("##.##");// 数据点显示数据值的格式

lineandshaperenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator(

"{2}", decimalformat1));// 设置数据项标签的生成器

lineandshaperenderer.setBaseItemLabelsVisible(true);// 基本项标签显示

lineandshaperenderer.setBaseShapesFilled(true);// 在数据点显示实心的小图标

return jfreechart;

}

public static JPanel createDemoPanel() {

JFreeChart jfreechart = createChart(createDataset());

try {

ChartUtilities.saveChartAsJPEG(

new File("D:/LineChartDemo1.png"), //文件保存物理路径包括路径和文件名

// 1.0f, //图片质量 ,0.0f~1.0f

jfreechart, //图表对象

1024, //图像宽度 ,这个将决定图表的横坐标值是否能完全显示还是显示省略号

768);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} //图像高度

return new ChartPanel(jfreechart);

}

public static void main(String[] strings) {

LineChartDemo1 linechartdemo1 = new LineChartDemo1(

"JFreeChart - Line Chart Demo 1");

linechartdemo1.pack();

RefineryUtilities.centerFrameOnScreen(linechartdemo1);

linechartdemo1.setVisible(true);

}

/* synthetic */

static Class class$(String string) {

Class var_class;

try {

var_class = Class.forName(string);

} catch (ClassNotFoundException classnotfoundexception) {

throw new NoClassDefFoundError(classnotfoundexception.getMessage());

}

return var_class;

}

}

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java 画折线图_jfreechart画折线图的方法相关推荐

  1. java 折线动图_Java画折线图

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

  2. python画折线图代码-Python折线图的分析过程和画图的方法

    说起折线图,很多人都觉得非常简单,不就是一些点连成的线吗?用 Excel 几秒钟就能画出一张折线图. 真的就这么简单吗? 想一想:在普通的折线图中,如何自动地添加一条代表平均值的横线?如何添加一条带箭 ...

  3. Tableau画条形图、直方图、折线图、饼图、环形图、箱线图

    Tableau画条形图.直方图.折线图.饼图.环形图.箱线图.雷达图 一.条形图 第一步,打开"豆瓣电影数据.xlsx": 第二步,画各国家电影评分直方图.选择"产地&q ...

  4. Stata画出数据的时间序列折线图和拟合趋势线

    第一个:画股票的 ssc install cntrade,replace cntrade 600519 //这里用茅台股展示 gen t=_n drop if t<3893 drop if t& ...

  5. html5画布画出折线图,canvas 画出动态折线图

    canvas 是 html5 支持的一个标签,用于图形的绘制.canvas 标签仅仅提供了图形的容器,必须通过 js 脚本来绘制. 比如,绘制一个简单的矩形: 矩形.png var c=documen ...

  6. java jfreechart 折线图_JFreeChart在制作折线图

    String sql = "select count(id) num, DATE_FORMAT(calltime, '%Y年%m月') ym,modulename mn from  tong ...

  7. python画时间序列图折线图_python画时间序列散点图

    在运维管理中,经常遇到时间序列的数据,比如网卡流量.在线用户数.并发连接数,等等.用散点图可以直观的查看数据的分布情况. matplotlib模块的pyplot有画散点图的函数,但是该函数要求x轴是数 ...

  8. R语言:ggplot2画带误差棒的组合折线图教程。

    1.cowplotR包的安装,输入代码install.packages("cowplot"),安装成功后,用library("cowplot")调用该R包. 2 ...

  9. java小程序-画一幅海底世界的图

    老师让我们画一幅鱼在水中游动的图,完成了之后我又添加了一点天空啊山峰啊太阳啊小船啊,感觉挺有意思的.本来还想画云和鸟的,时间关系就没画了. 代码其实也就是画些圆和矩形不断的在那儿鼓捣,也就没添加注释了 ...

  10. 用java的事件监听机制实现一个简单的画板应用:通过选择图形按钮和颜色按钮来画出自己想画的图形:直线、空心矩形、圆形、折线、多边形、圆角矩形、弧线、曲线、喷枪

    今天做一个简单的画板,完整代码附在文章末尾处. - 功能:通过选择图形按钮和颜色按钮来画出自己想画的图形. - 界面展示: - 思路: 1.做一个可视化界面:创建JFrame对象,并设置Title.S ...

最新文章

  1. Shell基础:变量类型 运算符
  2. please wait while windows configures microsoft visual studio professional 2013
  3. 使用NOSQL的MongoDB时建立索引需要注意的几点建议和Explain优化分析
  4. 参数校验放在controller还是service_@Validated校验的实践
  5. 查看 PHP apache nginx mysql 是如何编译的
  6. Win10+Ubuntu16.04/Ubuntu18.04双系统安装教程
  7. Spring Boot 2.x基础教程:找回启动日志中的请求路径列表
  8. html固定表的属性是什么,css如何固定表头
  9. python cos函数_Python Tensorflow cos()用法及代码示例
  10. 正则去除包裹的大括号
  11. 如何在Python中打印到stderr?
  12. [导入]asp.net2.0乱记(33)vista下使用vs2005及一些软件
  13. java B2B2C 源码 多级分销Springcloud多租户电子商城系统-SpringCloud配置中心内容加密...
  14. 实验3ospf路由聚合
  15. 肿瘤放射物理学(一)计量学中的辐射剂量及其单位
  16. 在云服务器上(Windows)手动搭建FTP站点
  17. matlab计算可靠性过程,基于MATLAB的蒙特卡洛方法对可靠度的计算
  18. MathPage.wll not found
  19. MEM/MBA英语基础(10)非谓语动词
  20. android手机传感器总结

热门文章

  1. Python +Tesseract白嫖武动乾坤番外篇最终章文字版
  2. Word替换重复的内容
  3. html模板怎样做seo,SEO如何做分享模板做外链
  4. python有道翻译
  5. 深度学习论文: An Improved One millisecond Mobile Backbone及其PyTorch实现
  6. 金代文化是中华民族文化的重要组成部分
  7. python模拟实现打印输出进销管理系统中的每月销售明细
  8. 马化腾回应《腾讯没有梦想》是网友杜撰PS
  9. 记一次云主机如何挂载对象存储
  10. win7计算机还原点建立,Win7中如何创建系统还原点