先不搞复杂的,就来一个最简单的功能吧!

所需实现的功能:给出一个数组,以自然数序列为横坐标,数组元素值为纵坐标,画出其折线图。

注意:只是折线图,不添加其他坐标轴标签和标题、网格等等。其实只是画折线罢了

了解Swing编程的都知道,应该是画在JPanel里面了,那么图形绘制功能由awt包的Graphics类提供,绘制函数需要JFrame对象去重写函数public void paint(Graphics g)

关键点在于计算出每一个点的坐标值,学过数值分析或者计算机图形学光栅扫描的都知道,给定第一个点,后面的点都用增量法求出即可。(日后添上证明过程)

有了以上的铺垫,就很容易写出了。主函数来生成一个随机的序列,进行绘制测试

package plotUtils;

import java.awt.Color;

import java.awt.Graphics;

import java.util.Random;

import javax.swing.JFrame;

public class ResultPlot extends JFrame{

private double[] y;

private int figureHeight = 600;

/**

*

*/

private static final long serialVersionUID = 1L;

public ResultPlot(double[] y){

super();

this.y = y;

setTitle("Line Draw");

setBounds(2, 100, 1500, figureHeight);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override

public void paint(Graphics g) {

g.setColor(Color.red);

int biasX = 15;

int h = 2;

int biasY = 100;

g.drawLine(biasX, this.figureHeight-biasY, biasX+h*(y.length), this.figureHeight-biasY);

g.drawLine(biasX,figureHeight-((int)y[0]+biasY), biasX+h, figureHeight-((int)y[1]+biasY));

int x1,y1, x2, y2;

for (int i = 1; i < y.length-1; i++) {

x1 = biasX+h*i; y1 = figureHeight-((int)y[i]+biasY);

x2=biasX+h*(i+1); y2=figureHeight-((int)y[i+1]+biasY);

g.drawLine(x1, y1, x2, y2);

}

g.drawString("("+h*(y.length-1)+","+(int)y[y.length-1]+")", biasX+h*(y.length-1), this.figureHeight-((int)y[y.length-1]+biasY));

}

public static void main(String[] args) {

double[] y = new double[700];

Random rand = new Random();

for (int i = 0; i < y.length; i++) {

y[i] = rand.nextInt(200);

}

ResultPlot rp = new ResultPlot(y);

}

}

效果如下,画了700个点,效果还是很令人满意的,毕竟需要的功能已经实现了,不过还是绘制的过程挺花时间的。

显然,只要传入一个数组,就可以画出折线了,封装的还是不错的,就是功能不够多,样式不够好看。日后再添

标签:Java,figureHeight,int,biasX,length,折线图,biasY,绘制,public

来源: https://www.cnblogs.com/zhaoke271828/p/13960773.html

使用java生成折线图_Java折线图简单绘制相关推荐

  1. java生成验证码实例_Java生成验证码功能实例代码

    页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...

  2. java生成小图片_JAVA生成缩略小图片类

    JAVA生成缩略小图片类 java.awt.image.BufferedImage是缓冲图片类主要将生成的图片对象缓冲起来:javax.imageio.ImageIO是图片IO控制类,可以将缓冲图片对 ...

  3. java 生成csv文件_Java生成CSV文件实例详解

    本文实例主要讲述了java生成csv文件的方法,具体实现步骤如下: 1.新建csvutils.java文件: package com.saicfc.pmpf.internal.manage.utils ...

  4. java生成随机时间_Java生成某段时间内的随机时间

    上代码: import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { /** * 生成随机时间 ...

  5. java生成随机数组_JAVA生成随机数组10个数字并求和

    JAVA生成随机数组10个数字并求和 本文最终结果大概是这样的',使用java技术随机生成10个数,然后填充一个数组并在消息框中显示数组内容,接着对数组求和输出,将结果显示在消息框中. 设计思路:可以 ...

  6. java生成字符串数组_Java 生成随机字符串数组的实例详解

    Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List之后,往其中添加十条随机字符串 2.每条字符 ...

  7. JAVA生成json效率_java序列化和json序列化效率对比

    一.背景 有项目需要传输Map结构的数据,有人倾向用Java序列化来做,有人倾向用JSON的序列化来做.所以我们还是比比吧. Java观点:Object2Object,使用时简单快速. JSON观点: ...

  8. java点名代码滚动_JAVA多线程实现简单的点名系统

    效果图如下: CMain函数: package com.shubing.main; public class CMain { public static void main(String[] args ...

  9. java 折线图_java折线图的数据写入方法

    /** * 折线图的数据写入方法 * @param slide ppt图表 * @param index 折线图的下标 * @param data 需要填充的数据 * @param titles 内嵌 ...

  10. java 生成纯色图片_java实现切图并且判断图片是不是纯色/彩色图片

    java实现切图并且判断图片是不是纯色/彩色图片 发布时间:2020-08-30 15:45:30 来源:脚本之家 阅读:92 作者:点墨花花 整理文档,搜刮出一个java实现切图并且判断图片是否是纯 ...

最新文章

  1. 阿里云linux下修改mysql默认密码(xampp环境)- 原创
  2. 多线程的实现方式_Java中线程的状态及多线程的实现方式
  3. QT的QVideoProbe类的使用
  4. 如何恢复ORACLE数据(冷备份)
  5. kubernetes1.8.4安装指南 -- 2. ssh免密登录
  6. python探测端口_python检测远程服务器tcp端口的方法
  7. SSH(Spring+Struts2+Hibernate)框架搭建步骤(含配置文件以及运行结果)
  8. 【资源下载】 UC 伯克利 Chelsea Finn 博士论文(新起之秀——MAML)《Learning to Learn with Gradients》下载--2018ACM最佳博士论文下载
  9. 数据结构-------赫夫曼树
  10. stm32cubeIDE下载无法打开GDB的问题
  11. 关于Matlab取整函数round的用法
  12. P3717 cover
  13. Xilinx XC7Z020双核ARM+FPGA开发板试用合集——硬件赏析
  14. 自从看了<<麦肯锡的领导力法则>>之后......
  15. 海尔全球十一连冠背后: 生态时代的无限游戏
  16. android 信号研究(包括信号图标和信号优化)
  17. MATLAB画阶梯图
  18. pythonl list去子集
  19. AWS S3 in china 地址
  20. stm32f103停止模式低功耗设置(最低5.7ua)

热门文章

  1. 计算机开机只显示,电脑开机黑屏只显示光标怎么办?来看看几种原因分析及解决方法!...
  2. mysql强行关闭回滚中的进程_mysql查询正在执行的进程
  3. 南京IT行业企业比较
  4. 微信小程序长列表优化方案
  5. php论坛整合,phpcms+ucenter+discuz论坛整合教程
  6. 论文阅读:SCAFFOLD: Stochastic Controlled Averaging for On-Device Federated Learning
  7. illumina 肿瘤分析流程
  8. 用母函数(生成函数)求解整数拆分问题
  9. 什么是视频编码 编解码技术及压缩技术
  10. 不要悲观!勇敢面对逆境