1

我有一个文件,其中包含两个实体之间的映射。我必须使用 linux 在图中绘制 x 和 Y 轴。X 轴是 Time like (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 中完成子图。

4

1 回答 1

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命令在绘制文件之前获取有关文件的统计信息。convoluted plot 命令应该在 y 轴上将所有内容缩放到 1 到 10 之间。

3)你想要有 4 个子图。

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

set multiplot layout 2,2

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

于 2012-09-16T13:36:57.650 回答