【问题标题】:Drawing a graph in linux在linux中绘制图形
【发布时间】:2012-09-16 04:58:43
【问题描述】:

我有一个文件,其中包含两个实体之间的映射。我必须使用 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 中完成子图。

【问题讨论】:

    标签: shell graph gnuplot gnu


    【解决方案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-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多