我有一个文件,其中包含两个实体之间的映射。我必须使用linux在图表中绘制x和Y轴。 X轴是时间(12:35:07),Y轴将有一些整数范围(1-14)。我需要使用一些应该从linux shell脚本调用的方法绘制x和Y轴。 X轴将有大约500到800个样本。说(从12:14:00到12:30:00)。任何人都可以帮助我。我尝试使用GNUplot,但图表不合适。样本输入如下:
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中完成子图。
答案 0 :(得分:1)
现在看来你有三个主要问题。对于他们中的一些人来说,这个问题并不完全清楚,所以如果你能够更新你的问题(或发表评论)来澄清它会有所帮助,我可以更新我的回复。
1)无法正确查看〜700个值中的每一个。
我需要澄清一下。我假设您不希望单独看到每个700个数据点,而是希望能够摆脱x轴上的混乱,这在绘制时间值时会发生。为此,您可以使用命令
set xtics X
其中X是您想要的抽搐之间的间隔,在这种情况下是几秒钟。这是你想要的吗?
您也可以使用
set format x '%M:%S'
(或其他)如果你想控制x值在轴上的显示方式。
2)y轴需要限制为10个值。
这里也不完全清楚你在寻找什么。你想把所有东西缩小到1到10之间吗?您呈现的数据范围是4到14,因此通过减去4,您可以得到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
,以获取有关更改所用子图序列的详细信息。