gnuplot二维画图命令(一)——显示格式设置、二维图绘制基本指令及选项配置

 

前言

因为目前我主要用gnuplot来显示二维曲线,只用到了一部分的功能,所以这里也只介绍一些简单的功能,如果有其他需求,可以参考官网的demo:http://gnuplot.sourceforge.net/demo_5.4/和用户手册。后续如果我有用到其他指令再进行补充。

二维画图的主要指令是plot,曲线的样式设置跟在plot之后;其他选项都可以通过set <关键字> <参数>的形式进行设置,包括坐标轴、图例、网格线等。下面一一介绍。

gnuplot的指令可以使用缩写,比如term是terminal的缩写、lc是linecolor的缩写等,但是因为刚上手,我更加习惯使用全称,也免得后续不常用而看不懂自己写的命令。


一、设置显示格式、窗口大小及位置

gnuplot支持多种格式显示,可以输入"set terminal"命令查看所有支持的显示格式。我在Windows上安装的gnuplot5.4.1支持的所有显示格式如下截图:

指定显示格式,及窗口或者图片的大小、在屏幕中显示位置的命令为:

set terminal <terminal_type> {size <width>, <height>} {position <x>, <y>}

terminal_type是上面截图中的类型,我最常用的是wxt,是以交互式窗口的形式弹出来的;width和height分别表示宽和高,单位是像素;x和y一起表示在屏幕上的位置,单位同样是像素,0,0表示屏幕左上角,100,50表示窗口左上角以屏幕左上角为原点向右偏移100像素、向下偏移50像素。可以参考示例(我的屏幕分辨率为1920×1080):

gnuplot>set terminal wxt size 1000, 600 position 100, 50

gnuplot>plot sin(x)

size和position可以缺省,也就是说可以单独使用"set terminal <terminal_type>"来设置显示格式,同时也并非所有显示格式都支持size和position的设置,另外不同的显示格式有很多其他的选项可以自行配置,具体描述可以参考用户手册的“Ⅳ Terminal types”部分。

 

二、二维图绘制基本指令

绘制二维曲线的主要命令是plot,可以用来绘制函数或者离散数据点,并指定每条曲线的样式和标题等,基本指令格式为:

plot <function/data> {with <style>} {<property> <property_value>} {title "<line_title>"}

gnuplot绘制二维曲线有多种样式,最常用的是画线"with lines"、画点"with points"或者带标记点的线"with linespoints";可以设置的属性property包括线型、线宽、颜色、标记及其大小等,属性可以按需配置,只需按照属性关键字+值的组合方式列出即可,且没有顺序要求;title用来指定曲线的名称,主要用于在图例中显示。如果想要在一个图中绘制多条曲线,则只需在指令后加上逗号并重复要绘制的函数或者数据以及样式,例如"plot sin(x) with lines, cos(x) with points, tan(x)"。

除了线和点之外,gnuplot还可以使用很多其他的样式进行绘图,比如箭头Arrows、标签Labels、框Boxes等,具体可以参考用户手册的“Ⅱ Plotting styles”部分。

1. 设置线型

如果选择画线,可以进一步指定画实线(实线是默认的样式)或者画虚线;如果画虚线,有多种预设的虚线线型,也可以自定义。命令如下:

plot <function/data> with lines #使用实线,同时也是默认样式
plot <function/data> dashtype <index> #使用预设的虚线线型
plot <function/data> dashtype "<pattern>" #使用自定义的虚线线型,可以由点.横杠-下划线_和空格组合

不同版本的gnuplot在不同显示格式(terminal)下提供的预设虚线类型可能不一样,gnuplot 5.4.1 wxt terminal一共有5种预设的虚线线型(实际应该算4种,因为dashtype 1就是实线):

也可以使用由“点.、横杠-、下划线_以及空格”组成的自定义虚线线型,-和_下划线的区别就是长短不一样:

gnuplot>plot sin(x) dashtype "-. _"

2. 设置标记

如果选择画点,可以进一步指定点的标记,同样有多种预设的标记,也同样可以自定义。命令如下:

plot <function/data> with points pointtype <index> #使用预设的标记
plot <function/data> with points pointtype "<pattern>" #使用自定义的标记

gnuplot 5.4.1 wxt terminal一共有15种预设的标记点,包括十字+、叉号×、星号※、正方形、圆形、正三角、倒三角、菱形、倒五边形,后面六种形状又分别包括空心和实心两种。如果想了解当前terminal下所有预设设置,可以在窗口中直接输入"test"查看(下图最右侧就是预设的颜色及标记点):

自定义的标记可以是一些字符:

gnuplot>plot sin(x) with points pointtype "p", cos(x) with points pointtype "#"

3. 同时设置线型和标记

如果选择同时画线和标记点,则可以将上述两个命令结合起来指定线型和标记:

plot <function/data> with linespoints pointtype <index> #带标记点的实线
plot <function/data> with linespoints dashtype <index> pointtype <index> #带标记点的虚线

当然除了使用预设的线型和标记点之外,也同样可以使用自定义的样式。效果如下:

gnuplot>plot sin(x) with linespoints pointtype 3, cos(x) with linespoints dashtype 3 pointtype "o"

4. 设置线或者标记的颜色

如果同时画多条曲线,gnuplot会使用预设的颜色依次显示每一条曲线,但是也可以自己指定颜色。命令如下:

plot <function/data> with ... linecolor "<color_name>"

支持的显示颜色可以输入"show colornames"查看:

color_name可以是颜色名如blue/red等,也可以是x11格式的颜色名称,就是上面截图中有#的那一串字符。可以参考以下示例:

gnuplot>plot sin(x) linecolor "royalblue", cos(x) with points linecolor "#ffc020"

5. 设置线宽或者标记的大小

如果画线,可以设置线宽,命令如下:

plot <function/data> with lines linewidth <n>

如果画点,可以同时设置标记的线宽和大小,命令如下:

plot <function/data> with points linewidth <n> pointsize <m>

两者的不同可以通过以下示例来体现:

gnuplot>plot x with points pointtype 4 linewidth 1 pointsize 2 title "lw1 ps2", x+1 with points pointtype 4 linewidth 2 pointsize 1 title "lw2 ps1", x+2 with points pointtype 4 linewidth 2 pointsize 2 title "lw2 ps2"

6. 设置曲线的名称

设置曲线标题的目的是用于区分每条曲线,在图例中显示(图例的设置命令为set key,后面介绍);如果设置不显示图例(set key off或者unset key),那么曲线的标题将不会在图中体现。如果不设置标题的话,会默认使用plot之后的函数名或者数据名作为标题;如果某条曲线不用显示图例,可以用notitle。命令如下:

plot <function/data> with ... title "<title_name>"
plot <function/data> with ... notitle

可以参考以下示例:

gnuplot>plot sin(x), cos(x) title "cosine", x/2 with points notitle

 

三、二维绘图选项配置

使用set命令可以设置很多选项,使用“unset+选项关键字”命令则可以解除设置。如果想要查看某一个选项的当前值,可以使用“show+选项关键字”命令;如果想要查看所有可供设置的选项及当前值,可以在窗口中输入show all查看。

set命令设置了选项后,一直到plot命令画图后才会显示。

所有可以设置的选项可以参考用户手册的“Ⅲ Commands”部分的“Set-show”介绍。下面仅介绍一些我用到过的选项。

1. 图像标题及其字体、大小、颜色

使用set title可以生成一个位于图像上方居中的标题,命令如下:

set title "<title_name>" font "<font_name>, <font_size>" textcolor "<color_name>"

font用来设置标题的字体和大小,font_name是标准的字体名如Arial, Times New Roman, Courier等,如果只想要指定字体的大小,font_name缺省就可以,即font ", <size>";textcolor用来设置字体的颜色,color_name可以参考上面的linecolor;font和textcolor无需按顺序排列,按需设置即可。

可以参考以下示例:

gnuplot>set title "function title" font "Times New Roman, 12" textcolor "red"

gnuplot>plot sin(x)

2. 坐标轴名称及其字体、大小、颜色

设置坐标轴名称的命令格式与设置图像标题set title类似:

set xlabel/x2label/ylabel/y2label "<label_name>" font "<font_name>, <font_size>" textcolor "<color_name>"

gnuplot支持多轴显示,可以分别给每个坐标轴指定标签,字体、大小、颜色的设置与title相同。xlabel是下方x轴,x2label是上方x轴;ylabel是左方y轴,y2label是右方y轴。示例如下:

gnuplot>set title "function title" font "Times New Roman, 12" textcolor "red"

gnuplot>set xlabel "xaxis" font ",8"; set ylabel "yaxis" textcolor "purple"

gnuplot>plot sin(x)

3. 图例

使用set key可以设置图例(legend)的显示方式,常用的一些配置参数如下:

set key on/off
        inside/outside
        left/right/center
        top/bottom/center
        vertical/horizontal
        font "<font_name>, <size>" textcolor "<color_name>"
        box/nobox

on/off用来控制是否显示图例,默认为显示图例,另外还可以使用unset key命令来关闭图例,如果想要设置的所有参数恢复为默认,可以使用set key default命令;

inside/outside、left/right/center、top/bottom/center用来控制图例的显示位置,inside是在坐标轴区域内,outside则是在外面,left/right/center分别表示左侧/右侧/中间,top/bottom/center分别表示顶部/底部/中间,默认的显示位置是内部右上方,即“inside right top”,这三个并不一定全部要显式设置,且无需按顺序排列,假设仅设置为outside,那其他两个会使用默认值,图例会显示在外侧的右上方;

vertical/horizontal用来控制多条曲线图例的显示方式,vertical为垂直排列,horizontal为水平排列,默认为垂直排列;

font和textcolor用来控制图例的字体、大小及颜色,设置方式与前面的相同;

box/nobox是值是否有外框,默认无框。

可以参考以下示例:

gnuplot>set key outside bottom right horizontal box

gnuplot>set xrange [-pi:pi]

gnuplot>plot sin(x), cos(x), x*x

4. 坐标轴范围

使用set range可以设置坐标轴的显示范围,命令如下:

set xrange/x2range/yrange/y2range [<min>:<max>]

xrange是下方x轴,x2range是上方x轴,yrange是左方y轴,y2range是右方y轴。设置的范围就是指定的min到max,可以参考上面的示例设定x轴的显示范围为-pi到pi。

使用set autoscale可以设置坐标轴的自动缩放,命令如下:

set autoscale
set autoscale x/x2/y/x2

直接用set autoscale可以自动缩放所有坐标轴,加上x/x2/y/y2后可以缩放指定坐标轴。

5. 坐标轴刻度及标签

使用set tics可以设置坐标轴的刻度及标签,命令如下:

set xtics/x2tics/ytics/y2tics mirror/nomirror
                              <start>,<increment>,<end>
                              (<position1>,<position2>,...)
                              ("<label1>" <position1>,"<label2>" <position2>,...)
                              font "<font_name>,<font_size>" textcolor "<color_name>"

mirror是指在坐标轴的镜像位置放置相同的刻度线(没有标签),xtics是下方x轴,x2tics是上方x轴,ytics是左方y轴,y2tics是右方y轴,默认xtics和ytics是带mirror的,而x2tics和y2tics是nomirror的。可以参考以下两图的效果:

gnuplot>set xtics mirror; set ytics mirror; plot sin(x)

gnuplot>set xtics nomirror; set ytics nomirror; plot sin(x)

start, increment, end构成了一个序列,指定坐标轴刻度和标签将从start开始,按照increment的增量直到end为止,可以参考以下示例:

gnuplot>set xrange [-pi:pi]

gnuplot>set xtics -pi, pi/2, pi

gnuplot>set ytics -1, 1, 1

gnuplot>plot sin(x)

另外一种更随意地指定特定刻度的方式是直接以列表的方式列出来,即set xtics (<position1>, <position2>, ...);如果想要指定标签,则在前面加上特定的"label"即可,即set xtics ("<label>1" <position1>, "<label2>" <position2>, ...)。可以参考以下示例:

gnuplot>set xrange [-pi:pi]

gnuplot>set xtics ("-pi" -pi, "-pi/2" -pi/2, "0" 0, "pi/2" pi/2, "pi" pi)

gnuplot>set ytics (-1, 0,1)

gnuplot>plot sin(x)

使用font和textcolor可以设置标签的字体、大小和颜色,与标题和坐标轴名称的设置方式相同。

6. 网格

使用set grid可以设置是否显示网格线,命令如下:

set grid xtics/x2tics/ytics/y2tics <line-properties>
set grid noxtics/nox2tics/noytics/noy2tics

set grid xtics/x2tics/ytics/y2tics可以显示指定坐标轴的网格线,xtics是下方x轴,x2tics是上方x轴,ytics是左方y轴,y2tics是右方y轴,也可以设定网格线的颜色线宽(但是并非针对指定坐标轴的网格线,而是所有的网格线);前面加上no则是不显示指定坐标轴的网格线,默认是不显示任意网格线的。

可以参考以下示例:

gnuplot>set grid xtics ytics linecolor "purple" linewidth 1

gnuplot>plot sin(x)

 

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用shell脚本 gnuplot画图,你可以按照以下步骤进行操作: 1. 首先,你需要将数据保存为一个文本文件,比如netstat.txt。你可以使用命令将数据重定向到文件中,例如: ``` netstat > netstat.txt ``` 2. 接下来,你需要进入gnuplot命令模式。你可以在终端中输入`gnuplot`命令来进入绘模式。 3. 在gnuplot命令模式下,你可以使用`load`命令加载刚才保存的数据文件,比如: ``` load "netstat.txt" ``` 4. 此外,你还可以在shell模式下使用gnuplot指令来生成形。比如,你可以使用以下指令设置终端、输出文件、标题、坐标轴等属性: ``` set terminal png size 1400,700 font "/usr/share/fonts/kingsoft/simfang.ttf,14" set output "ab测试结果.png" set title "ab测试" set size 1,0.8 set grid y set xlabel "并发数" set xrange [0:2000] set ylabel "响应时间(ms)" set yrange [0:100] set ytics nomirror set y2label "吞吐率" set y2tics ``` 5. 最后,你可以使用`plot`命令绘制形。你可以指定要使用的数据文件、要绘制的曲线类型、点形状和标题等。例如: ``` plot "ab-result.dat" using 1:4 smooth sbezier with linespoint pointtype 2 title "吞吐率", \ "ab-result.dat" using 1:3 smooth sbezier with linespoint pointtype 3 axis x1y2 title "响应时间/y2轴" ``` 这样,你就可以使用shell脚本 gnuplot画图了。记得根据你的具体需求和数据文件格式进行相应的调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值