【发布时间】:2016-05-27 18:59:24
【问题描述】:
我正在寻找一种在 3d 中绘制直方图的方法,以生成类似于此图 http://www.gnuplot.info/demo/surface1.17.png 的东西,但每个系列都是直方图。
我正在使用https://stackoverflow.com/a/19596160 和http://www.gnuplotting.org/calculating-histograms/ 此处给出的过程来生成直方图,它在二维中完美运行。 基本上,我使用的命令是
hist = 'u (binwidth*(floor(($2-binstart)/binwidth)+0.5)+binstart):(1) smooth freq w boxes
plot 'data.txt' @hist
现在我只想在同一个图中添加多个直方图,但由于它们在 2d 中重叠,我想在 3d 图中将它们隔开。
我尝试执行以下命令(使用上述过程)
hist = 'u (1):(binwidth*(floor(($2-binstart)/binwidth)+0.5)+binstart):(1) smooth freq w boxes
splot 'data.txt' @hist
但 gnuplot 抱怨 z 值未定义。
我不明白为什么这不会在 x 轴上沿值 1 放置直方图,沿 y 轴放置 bin,并在 z 轴上绘制高度。
我的数据被简单地格式化为两列:
Index angle
0 92.046
1 91.331
2 86.604
3 88.446
4 85.384
5 85.975
6 88.566
7 90.575
我有 10 个这样的文件,由于文件中的值彼此接近,如果我将它们全部绘制在一个二维直方图中,它们将完全重叠。因此,我想以一种 3d 透视图查看 10 个彼此背后的直方图。
【问题讨论】:
-
请提供您数据文件中的一些示例数据。
-
我已经添加了我正在使用的数据的格式。感谢您的链接,但我仍然看不到如何在我的情况下使用它(可能是由于缺乏理解)
-
您可能需要在 gnuplot 之外进行一些格式化。问题是,要做到这一点,您需要框,它不能与 splot 一起使用(请参阅
help boxes:框样式仅与 2D 绘图相关)。您的链接有效,因为它正在绘制函数,它填充了所有点之间的内容。要绘制一个框,您需要按顺序(左下、左上、右上和右下)计算四个点。我可以强制 gnuplot 捕获命名数据块中左上角的值,但看不到如何创建其他点。