gnuplot绘图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010643777/article/details/82024749

gnuplot multiplot

 本篇内容,没有自己的东西,只是对别人贡献的知识的一个整理,gnuplot绘制多图。
multiplot.sh

gnuplot<<!
set terminal pngcairo size 600, 900
set output 'stacking.png'

set lmargin at screen 0.15
set rmargin at screen 0.95

TOP=0.98
DY = 0.29

set multiplot
set offset 0,0,graph 0.05, graph 0.05

set xlabel 'time'
set ylabel 'ylabel 1' offset 1
set tmargin at screen TOP-2*DY
set bmargin at screen TOP-3*DY
set ytics -1000,500,1000
plot 1150*cos(x) title 'First'

set xtics format ''
unset xlabel
set ylabel 'ylabel 2' offset 0
set tmargin at screen TOP-DY
set bmargin at screen TOP-2*DY
set ytics -100,50,100
plot 101*sin(x) title 'Second'

set ylabel 'ylabel 3' offset -1
set tmargin at screen TOP
set bmargin at screen TOP-DY
set ytics -8,4,8
plot 10*sin(2*x) title 'Third'

unset multiplot; set output
set output
exit
!

 这里的tmargin,bmargin设置的就是一个子图的高度。
 上述脚本可以直接执行,画出的结果:
这里写图片描述
 我更改下脚本,让它画出四个子图。

#! /bin/sh
gnuplot<<!
set terminal pngcairo size 600, 900
set output 'stacking.png'

set lmargin at screen 0.15
set rmargin at screen 0.95

TOP=0.98
DY = 0.23

set multiplot
set offset 0,0,graph 0.05, graph 0.05
set xlabel 'time'
set ylabel 'ylabel 0' offset 1
set tmargin at screen TOP-3*DY
set bmargin at screen TOP-4*DY
set ytics -4 2 4
plot 8*cos(x) title 'Zero'

set xtics format ''
unset xlabel
set ylabel 'ylabel 1' offset 1
set tmargin at screen TOP-2*DY
set bmargin at screen TOP-3*DY
set ytics -1000,500,1000
plot 1150*cos(x) title 'First'


set ylabel 'ylabel 2' offset 0
set tmargin at screen TOP-DY
set bmargin at screen TOP-2*DY
set ytics -100,50,100
plot 101*sin(x) title 'Second'

set ylabel 'ylabel 3' offset -1
set tmargin at screen TOP
set bmargin at screen TOP-DY
set ytics -8,4,8
plot 10*sin(2*x) title 'Third'

unset multiplot;
set output
exit
!

 result:
这里写图片描述
 让各个子图之间,有一定的间距:

#! /bin/sh
gnuplot<<!
set terminal pngcairo size 600, 900
set output 'stacking.png'

set lmargin at screen 0.15
set rmargin at screen 0.95

TOP=0.98
DY = 0.21
seam=0.02

set multiplot
set offset 0,0,graph 0.05, graph 0.05
set xlabel 'time'
set ylabel 'ylabel 0' offset 1
set tmargin at screen TOP-3*DY-3*seam
set bmargin at screen TOP-4*DY-3*seam
set ytics -4 2 4
plot 8*cos(x) title 'Zero'

set xtics format ''
unset xlabel
set ylabel 'ylabel 1' offset 1
set tmargin at screen TOP-2*DY-2*seam
set bmargin at screen TOP-3*DY-2*seam
set ytics -1000,500,1000
plot 1150*cos(x) title 'First'


set ylabel 'ylabel 2' offset 1
set tmargin at screen TOP-DY-1*seam
set bmargin at screen TOP-2*DY-1*seam
set ytics -100,50,100
plot 101*sin(x) title 'Second'

set ylabel 'ylabel 3' offset 1
set tmargin at screen TOP
set bmargin at screen TOP-DY
set ytics -8,4,8
plot 10*sin(2*x) title 'Third'

unset multiplot;
set output
exit
!

 results:
这里写图片描述
 上下左右各两个:
multiplot.sh

#! /bin/sh
#set lmargin at screen 0.15
#set rmargin at screen 0.95
gnuplot<<!
set terminal pngcairo size 600, 900
set output 'stacking.png'



TOP=0.98
DY = 0.45
seam=0.02
x_gap=0.02
central_axis=0.55

set multiplot
set offset 0,0,graph 0.05, graph 0.05
set xlabel 'time'
set ylabel 'ylabel 0' offset 1
set lmargin at screen 0.15
set rmargin at screen central_axis-x_gap
set tmargin at screen TOP-1*DY-seam
set bmargin at screen TOP-2*DY-seam
set ytics -4 2 4
plot 8*cos(x) title 'Zero'

set xlabel 'time'
unset ylabel
set lmargin at screen central_axis+x_gap
set rmargin at screen 0.95
set tmargin at screen TOP-1*DY-seam
set bmargin at screen TOP-2*DY-seam
set ytics -1000,500,1000
plot 1150*cos(x) title 'First'

set xtics format ''
unset xlabel
set ylabel 'ylabel 2' offset 1
set lmargin at screen 0.15
set rmargin at screen central_axis-x_gap
set tmargin at screen TOP
set bmargin at screen TOP-DY
set ytics -100,50,100
plot 101*sin(x) title 'Second'

set xtics format ''
unset ylabel
set lmargin at screen central_axis+x_gap
set rmargin at screen 0.95
set tmargin at screen TOP
set bmargin at screen TOP-DY
set ytics -8,4,8
plot 10*sin(2*x) title 'Third'

unset multiplot;
set output
exit
!

 Result:
这里写图片描述
reference:
[1]multiplot-stacking
[2]gnuplot demo
[3]How do gnuplot margins work in multiplot mode?
[4]gnuplot使用中的几个设置

猜你喜欢

转载自blog.csdn.net/u010643777/article/details/82024749