2012-09-16 59 views
1

我有一个包含两个实体之间映射的文件。我必须使用linux在图形中绘制x和Y轴。 X轴是Time(12:35:07),Y轴有一些整数范围(1-14)。我需要使用一些应该从linux shell脚本调用的方法绘制x和Y轴。 X轴将有大约500到800个样本。说(从12:14:00到12:30:00)。任何人都可以请帮助我。我尝试使用GNUplot,但图形不正确。下面在linux中绘制图表

12:34:58 5 
12:35:06 9 
12:35:07 14 
12:35:07 13 
12:35:08 4 
12:35:08 5 
12:35:17 9 
12:35:17 13 
12:35:18 14 
12:35:19 4 
12:35:19 5 

样品输入给出这就是我写

1 set terminal png 
2 set output 'test.png' 
3 set xdata time 
4 set timefmt "%H:%M:%S" 
5 set yrange [1:15] 
6 plot "Graph1" using 1:2 title 'data A' 

我的问题是因为图像有大量的样品(约700个间隔,我没能看到每个Y轴是不合适的,我需要限制Y轴只有10个值(1-10),我还需要绘制4个类似的图形,并将每个图形放置在每个角落(子图)中。在GNUplot中完成了这个副剧场

回答

1

看来你有三个主要问题 马上。对于他们中的一些人来说,问题并不完全清楚,所以如果您可以更新您的问题(或发表评论)来澄清问题,并且我可以更新我的回复,这将有所帮助。

1)无法正确看到〜700个值中的每一个值。

这里我需要一点澄清。我假设你不想单独看到每个700个数据点,而是希望能够摆脱绘制时间值时发生的x轴上的混乱。为此,您可以使用命令

set xtics X 

其中X是你要抽动之间的间隔,在这种情况下的秒数。这是你想要的吗?

您还可以使用

set format x '%M:%S' 

(或东西),如果你想控制的x值是如何显示在轴上。

2)y轴需要限制为10个值。

这里也不完全清楚你在找什么。你想把所有东西缩小到1到10之间吗?您的数据提供的范围是4到14,所以减去four可以0到10之间得到的东西是这样的:

plot "Graph1" using 1:($2-4) title 'data A' 

如果要收缩一个任意Y数据设置为1和10之间,这是一个有点棘手:

stats "Graph1" 
plot "Graph1" using 1:(($2-STATS_min_y)*9/(STATS_max_y-STATS_min_y)+1) title 'data A' 

stats命令获取有关文件的统计数据在绘制之前。复杂的绘图命令应该将所有内容都缩放到y轴上的1到10之间。

3)你想要有4个子图。

这个很简单。在您的第一个绘图命令之前,使用命令

set multiplot layout 2,2 

这将为您的图创建一个2x2网格。每个绘图命令将绘制在新的子图上。在gnuplot命令行中键入help set multiplot以获取有关更改所使用子图的顺序的详细信息。