3

我必须使用 gnuplot 在两个轴上以对数刻度绘制直方图。我需要 bin 在 log10 中等间距。在 y 轴上使用对数刻度不是问题。主要问题是在 x 轴上创建 bin。例如,在 log10 中使用 10 个 bin,第一个 bin 将是 [1],[2],[3]....[10 - 19][20 - 29].....[100 190] 等等. 我在网上搜索过,但找不到任何实用的解决方案。如果在 gnuplot 中实现它太复杂了,你能建议一些其他软件/语言来做吗?

正如有人问的那样,我会更具体地解释我需要做什么。我有一个像这样的(巨大的)列表:

1   14000000
2   7000000
3   6500000
.
.
.
.
6600    1
8900    1
15000   1
19000   1

例如,1400 万个 IP 地址发送了 1 个数据包,700 万个 2 个数据包...... 1 个 IP 地址发送了 6600 个数据包,......,1 个 IP 地址发送了 19000 个数据包。如您所见,两个轴上的值都很高,因此如果没有对数刻度,我无法绘制它。

因为我需要快速完成,所以我尝试的第一件事是绘制这个列表,因为它使用 gnuplot 在两个轴上设置 logscale 使用框。结果是可以理解的,但不太合适。事实上,盒子在 x 轴上变得越来越细,因为很明显,10-100 中的点比 1-10 中的多!因此,在第二个十年之后,它变得一团糟。

4

3 回答 3

5

我尝试绘制一个直方图,其中两个轴都是对数缩放的,并且 gnuplot 通过错误

Log scale on X is incompatible with histogram plots.

因此,gnuplot 似乎不支持带有直方图的 x 轴上的对数刻度。

于 2011-10-28T07:55:42.320 回答
4

与此线程中的其他帖子相反,在 GnuPlot 中以对数比例绘制是完全可行的。

可以使用命令在 GnuPlot 中设置对数刻度set logscale。然后,假设我们有一个在 x 轴和 y 轴上都具有正值(严格非零)的文件。例如,以下文件是有效文件:

1 0.5
2 0.2
3 0.15
4 0.05

设置 log-log 比例后,可以使用以下命令绘制文件: plot "file.txt" w p其中 file.txt 当然是文件名。此命令将生成带有点的输出。

另请注意,绘图框很棘手,可能不推荐使用。首先必须使用表单命令限制 x 范围,set xrange [1:4]然后才使用框进行绘图。否则,当 x 范围未定义时,将返回错误。我假设在这种情况下,情节需要(对于适当的 x 值)一些框的大小为 log(0),这当然是未定义的,因此返回错误。

希望它很清楚,它也会对其他人有所帮助。

于 2012-12-27T23:26:58.007 回答
-1

你用Python试过Matplotlib吗?Matplotlib 是一个非常好的绘图库,当与 Python 的简单语法一起使用时,你可以很容易地绘制东西:

import matplotlib.pyplot as plot

figure = plot.figure()
axis = figure.add_subplot(1 ,1, 1)
axis.set_yscale('log')

# Rest of plotting code
于 2011-10-30T02:23:01.507 回答