如何在单个Gnuplot窗口中为单个X轴绘制多个Y轴?

如何在单个Gnuplot窗口中为单个X轴绘制多个Y轴?,gnuplot,Gnuplot,我在windows7“Professional”操作系统环境中使用32位版本的GNUPlot(……很遗憾!),我希望只使用一个x轴来绘制框的“堆栈图”,即一系列“日期”格式的“时间” 所有的GNUPlot代码都可以工作,但是每个绘图都使用自己的x轴,这会消耗大量的图形空间 我还需要能够有可变的y轴比例为每个堆叠的绘图 以下是“标记”(CSV)数据文件: 日期、时间、体重(千克)、身高(厘米)、体重指数、血压最大值(毫米汞柱)、血压最小值(毫米汞柱)、血压/分钟、,%例如,常用常用常用常用常用常用

我在windows7“Professional”操作系统环境中使用32位版本的GNUPlot(……很遗憾!),我希望只使用一个x轴来绘制框的“堆栈图”,即一系列“日期”格式的“时间”

所有的GNUPlot代码都可以工作,但是每个绘图都使用自己的x轴,这会消耗大量的图形空间

我还需要能够有可变的y轴比例为每个堆叠的绘图

以下是“标记”(CSV)数据文件:

日期、时间、体重(千克)、身高(厘米)、体重指数、血压最大值(毫米汞柱)、血压最小值(毫米汞柱)、血压/分钟、,%例如,常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用6.6118,74,83,22.823/03/2015,16:39:55,78.6,170,27.2,119,72,78,24 20/03/2015,09:07:30,77.6,169,27.2,138,74,77,24.1 09/01/2015,14:30:00,79.2,170,27.4,114,71,75,24.1 07/10/2014,16:06:00,78.4,171,26.8,119,73,108,24.8 07/10/2014,16:08:00,78.4,170,27.1,109,72,75,25.1 15/09/2014,08:18:23,76.9,171,26.3,116,69,102,24.8 15/09/2014,09:20:27,76.7,172,25.9,132,76,91,21 2014年9月4日,12:05:00,75.6169,26.5115,71,96,25.4 01/04,11:18,76.2171,26115,69,70,22.9/03,09:48:23,75.3171,25.8113,69,55,22.1 14/2014,10:39:29,75.6170,26.2108,69,78,22.05/03,22.05/2014,16:45:00,75.9170,26.3129,73,84,23.09/05,17.5175,21,75,75,75,75,75,75,21,75,75

下面是我用来生成5个堆叠图的“当前”GNUPlot代码:

reset
set terminal windows size 1325, 625
set multiplot layout 5, 1 title "Individual Employee Biometric Data vs. Time"
set xlabel "DATE"
set timestamp
set key outside 
set key center right 
set pointsize 1.0 
set grid lw 1 
set timefmt "%d/%m/%Y" 
set xdata time 
set format x "%d/%m/%Y" 
set xrange [ "09/05/2013\t0000" : "09/09/2015\t0000" ] noreverse nowriteback 
set datafile sep ','
set arrow from 10.0,0 to 10.0, 0.5 lw 3
set label ' ' at 10.2,0.03
set label '(C) 2015' at 2050.0,-0.85 
set border lw 2

set yrange [73.0:80.0] 
set ylabel "(kg)" 
plot 'K8.dat' using 1:3 title "BODY\nWEIGHT" with linespoints lw 2 lt rgb 'red'

set yrange [25.0:30.0] 
set ylabel "kg/m^2" 
plot 'K8.dat' using 1:5 title "BODY\nMASS\nINDEX" with linespoints lw 2 lt rgb 'green'

set yrange [50.0:150.0] 
set ylabel "(mmHg)" 
plot 'K8.dat' using 1:6 title "SYS" with linespoints lw 2 lt rgb 'blue', \ 'K8.dat' using 1:7 title "DIAS" with linespoints lw 2 lt rgb 'coral'

set yrange [40.0:120.0] 
set ylabel "(bpm)" 
plot 'K8.dat' using 1:8 title "HEART\nRATE" with linespoints lw 2 lt rgb 'purple'

set xlabel "DATE" 
set yrange [15.0:30.0] 
set ylabel "(%)" 
plot 'K8.dat' using 1:9 title "BODY\nFAT" with linespoints lw 2 lt rgb 'orange'
PS-此代码来自以前的GNUPlot例程,因此请原谅“#”注释掉…

(注释太长)

好的,我现在明白你说的叠加图的意思了。据我所知,在一个x轴上有多个y轴(超过2个)是不可能的

但是,您可以尝试通过在y(1)轴上绘制大约30…150范围内的所有数据,以及在y(1)轴上绘制15…30范围内的所有数据来伪造2个以上的轴。但是,这些线都是重叠的,并且没有完全分开

另一种方法是首先通过减去最小值并除以最大最小值,将所有数据标准化为一个例如0…10的范围,然后通过第一行加0,第二行加10,将这些数据叠加在一起,依此类推。然而,您必须添加手工制作的y轴TIC(这是可能的,但有点麻烦)

实际上,这里有一个工作模板,用于我上面概述的更高级的解决方案(针对三个数据集实现,但基本上可以扩展到任意多个)

顺便说一句:如果您发布或编辑问题或答案,请尝试单击编辑窗口上方的图像图标。它将打开一个小窗口,您可以在其中直接拖放图像,而无需使用web托管服务。如下所示:

您可以使用
multiplot
将多个绘图堆叠在一起。您只需为每个绘图适当关闭绘图边框,请参阅
帮助设置边框,并为除最下面的绘图之外的所有绘图取消横坐标
xtics

set multiplot
set origin 0.1, 0.1
set size 0.9,0.3
set xrange [a:b]
plot "first"
set origin 0.1,0.4
unset xtics
set border 2 # only plot left border
plot "second"
set origin 0.1,0.7
plot "third"
unset multi

关键是为所有绘图固定xrange,因为在关闭以下绘图的xtics后,您无法看到它是否完全相同。

您能为您希望的绘图创建一个模型吗?我想到“堆叠框绘图”时得到的图像“imho对您的数据不太有意义……当然!!!非常感谢!有没有办法让我把它给你?嗨,丹尼尔!我有一张图片供你审阅!我怎样才能寄给你?非常感谢!LEOI我很确定stack overflow提供了将图片作为附件上传到帖子的选项,否则就使用基于web的图片托管服务。嗨,丹尼尔!再次感谢您的帮助!这里有一个链接:你会看到每个图的y轴不同,但x轴在所有图中保持不变,但会消耗大量的“不动产”。。。我只想有一个单一的标记x轴在这个多绘图。。。最好的!这肯定比我的解决方案要短。很好的边界技巧。
set multiplot
set origin 0.1, 0.1
set size 0.9,0.3
set xrange [a:b]
plot "first"
set origin 0.1,0.4
unset xtics
set border 2 # only plot left border
plot "second"
set origin 0.1,0.7
plot "third"
unset multi