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. java如何读写json文件
  2. 网站主题明确需注意这三项原则!
  3. 简单试用了一下 dynamips 7200路由模拟器
  4. docker安装gamit_Gamit-Globk完整安装攻略
  5. { parser: babylon } is deprecated; we now treat it as { parser: babel }.
  6. Android Gradle和Gradle插件区别
  7. centos cron 自动执行脚本异常 命令不生效的解决办法
  8. 利用alpha matte提取图片前景
  9. STM32F407 窗口看门狗 个人笔记
  10. linux 查看进程与端口以及内存资源
  11. 基于YOLOv5的车辆识别系统
  12. VS2019 配置OpenGL
  13. android pc游戏模拟器哪个好用,哪个电脑手游模拟器好用 安卓手游模拟器测试对比排行榜...
  14. Ubuntu离线网卡驱动安装
  15. 下载网站的ICO图标方法
  16. Android性能优化系列之App启动优化
  17. 【python教程入门学习】拒绝反爬虫!教你搞定爬虫验证码
  18. Adobe Illustrator CC 关于路径查找器的使用
  19. 9、法律法规与标准化知识
  20. 一类用 LCT 维护信息的题目

热门文章

  1. 嵩天《Python网络爬虫与信息提取》实例3:淘宝商品比价定向爬虫
  2. phpword 实现word文件模板字符替换
  3. Windows 默认以管理员身份运行批处理bat文件
  4. NERO刻录ISO镜像图解教程
  5. 按头安利 好看又实用的冰淇淋VRay材质球素材看这里
  6. 错误请联系管理员文件 index.php,GS登录报错,提示【访问权限失败,请联系管理员处理】...
  7. 运动耳机哪些好用?专业运动耳机购买指南
  8. 盘点Apache的11个顶级项目
  9. ai画面怎么调大小_Adobe Illustrator(Ai)里怎么改变图像大小,快捷键是什么?
  10. 记录一下QT下载安装及相关说明