zoukankan      html  css  js  c++  java
  • gnuplot画图

    gnuplot 是一个用于生成趋势图和其他图形的工具。它通常用于收集基于时间的数据,同时也可以使用静态数据。
    本文将简单的介绍下gnuplot的基本使用方法,安装教程的话,请自行google(or百度)。
    首先介绍下gnuplot中的线型(linetype)、点型(pointtype)、线条宽度(linewidth)、点大小(pointsize)。
    1. 线型(linetype ),主要用于设置线条的颜色,具体如下:
    线型
    2. 点型(pointtype),主要用于设置点得形状,具体如下:
    点型
    3. 线条宽度(linewidth)、点大小(pointsize)。两者都可以设置为整数或小数。

    首先我们探讨下折线图:
    假如已经的到的数据,并存放到txt中,数据如下:
    数据

    我们可以看出,存放数据的文件为test.txt
    下面开始进入画图相关模式:

    gnuplot> set terminal postscript eps color solid lw 2 enhanced "Times-Bold" 20 
    #set terminal postscript eps这句话表示设置画图得到的格式,我们选择的是eps格式,后面的color表示画彩色图 ,solid表示画实线,lw 2(linewidth 2)线宽为2,enhanced "Times-Bold" 20 表示支持的字体格式。

    这里写图片描述

    set output "D:/paperhuatu/test.eps"#设置最终得到图片存在的路径
    set xlabel 'X axis' font "Times-Roman, 15"  #设置坐标轴标注及字体字号
    set ylabel "Y axis"#设置Y轴标注显示的标题(同x)
    set key left #设置标注显示的位置(放在左边)
    (默认位置在右上方。
    set key left  %放在左边,有left 和right两个选项
    set key bottom  %放在下边,只有这一个选项;默认在上边
    set key outside  %放在外边,但只能在右面的外边
    以上三个选项可以进行组合。如:
    set key left bottom  %表示左下边
    还可以直接用坐标精确表示图例的位置,如
     set key 0.5,0.6  %将图例放在0.5,0.6的位置处
    如果要取消图例可以用:unset keyset yrange [0:0.64] #设置y轴的范围
    set ytics 0,0.1,0.60 #设置x轴的刻度宽度
    set xrange [3:60]  #设置x轴范围
    set xtics 5,5,60 #设置x轴的刻度宽度
    plot "D:/paperhuatu/test.txt" u 1:2 w lp lt 1 lw 1.1 pt 5 ps 1.2 t "Line_1" 
    #将text.txt中的第二列数据(y值)画到图形中其中u 1:2表示选择数据第二列的值,(w lp lt 1 lw 1.1 pt 5 ps 1.2 t "Line1")
    (==with linespoints lt 2 lw 2 pt 5 ps 1.5 t "XXX",#绘制线(lt)为绿色(2),线宽(lw)为2,点的形状(pt)为“■”,点的大小(ps)为1.5, 标题(t)为line1的图形)
    set output #输出到指定目录

    这里写图片描述
    效果图
    如果数据有多列(这里我们设为3)
    数据
    代码
    结果

    这里再介绍下:图样(style):gnuplot 描绘数据数据图形是以读入档案中的坐标值后,以图样绘上。gnuplot可提供9种图样,分别是:
    (1) lines : 将相邻的点以线条连接。如 plot sin(x) with lines。
    (2)points : 将每一点以一符号绘上。如 plot sin(x) with points
    (3)linespoints : 同时具有lines 及 points 的功能。
    (4)impulses : 将每一点画一垂直线至X 轴。如 plot sin(x) with impulses。
    (5)dots : 将每一点绘一细点。如plot sin(x) with dots。
    (6)steps : 以垂直线及水平线各一条来连接两点,形成梯形。如连接 (x1,y1),(x2,y2)两点,以(x1,y1)到(x2,y1)和(x2,y1)到(x2,y2) 两线段连接。如 plot sin(x) with steps。
    (7) errorbars : 对每一点坐标值(x,y),画一由 (x,ylow) 至(x,yhigh) 的线段。并在线段两端做上 tic mark。如plot sin(x) with errorbars。
    (8)boxes : The boxes style draws a box centred about the given x coordinate from the yaxis to the given y coordinate.如plot sin(x) with boxes。
    (9) boxerrorbars : 组合errorbars 与 boxes 两者功能。如 plot sin(x) with boxerrorbars。

    例如上图画为点状图:
    仅仅把上次画图的plot语句改为:

    plot "D:/paperhuatu/test.txt" u 1:2 w p lt 1 lw 1.1 pt 5 ps 1.2 t "Line_1","D:/paperhuatu/test.txt" u 1:3 w p lt 2 lw 1.1 pt 8 ps 1.2 t "Line_2","D:/paperhuatu/test.txt" u 1:4 w p lt 4 lw 1.1 pt 12 ps 1.2 t "Line_3"

    w p(==with point)就是画点图了,之后需要什么图样(style)就可以自行选择了。
    效果

    柱状图:
    test2.txt存放要画柱状图的数据如下:
    数据格式

    set style data histogram #设置画图格式为柱状图
    set output "D:/paperhuatu/test2.eps" #保存图片的路径
    set style histogram clustered gap 1
    set style fill pattern 3 border -1
    set ylabel "Time (sec)" #设置y轴名称
    set size 0.66,0.8 #设置图形最终的缩放比例
    set key left #图标位置
    #set xtics rotate by -45 #x轴标示倾斜的角度
    set x2range [103:104]  #设置x2(及最上边轴)的范围
    set x2tics ("×103" 103) #设置x2(及最上边轴)在103处的别名
    set yrange [0:19000] #设置y轴的范围
    set ytics 0,3000,19000 #设置y轴的刻度宽度
    set ytics ("0" 0, "3" 3000, "6" 6000, "9" 9000, "12" 12000, "15" 15000, "18" 18000) #设置在此位置显示的别名
    plot "D:/paperhuatu/test2.txt" using 2:xticlabels(1) title columnheader(2), '' using 3:xticlabels(1) title columnheader(3), '' using 4:xticlabels(1) title columnheader(4), '' using 5:xticlabels(1) title columnheader(5) #画图

    最终结果为:
    结果

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    威胁情报网站
    python3实现telnet查看IP地址段端口开放情况
    python3实现指定IP多线程端口扫描
    安全网址导航
    python3调用exe程序编写cve20190708批量检测工具
    python3爬取网页中的邮箱地址
    黑客马拉松
    Nginx自定义模块编写:根据post参数路由到不同服务器
    Apache HTTP Server 与 Tomcat 的三种连接方式介绍
    Apache HTTP Server 与 Tomcat 的三种连接方式介绍
  • 原文地址:https://www.cnblogs.com/xiaocai-ios/p/7779804.html
Copyright © 2011-2022 走看看