gpt4 book ai didi

gnuplot - 使用 splot 填充 3D 线下方的区域

转载 作者:行者123 更新时间:2023-12-02 21:17:48 28 4
gpt4 key购买 nike

我正在绘制一个 3D“栅栏图”,每个栅栏有多种颜色。我的示例数据可以在这里找到:

https://gist.github.com/anonymous/a926221ea96e92e86332

我使用以下方法绘制这些数据:

colors = "red red red red red"
splot for [i=1:words(colors)] 'input.sep.txt' index i u 2:1:3 w lines lc rgb word(colors,i)

线条绘制没有问题,我相信它们绘制正确。我的问题是:如何填充线下方,使其看起来像实心墙(即一直向下到 0 z 值)?我尝试使用 w pm3d,但这实际上并没有绘制轴上可见的任何内容。

最佳答案

最好的选择是使用pm3d。为此,您必须对数据文件进行一些更改:您必须复制每一行,将副本的 z 值更改为 0 并添加一个新行,即前两个数据行

1 1 2
2 1 4

必须成为

1 1 2
1 1 0

2 1 4
2 1 0

等等。稍后您仍然需要两个连续的空行来分隔不同的“墙”。

如果您可以控制数据输出,则可以更改输出例程,或者可以使用命令行工具,例如 sed

sed 's/^\([0-9]* [0-9]* \)\(.*\)$/&\n\1 0\n/' gistfile1.txt

awk:

awk '1; {print $1,$2,0,"\n"}' gistfile1.txt

进行转换。当然,这可以在 gnuplot 中即时完成。一个完整的工作脚本是:

filename = 'gistfile1.txt'
sed = '< sed ''s/^\([0-9]* [0-9]* \)\(.*\)$/&\n\1 0\n/'' '

set autoscale cbfix
set palette defined (0 'red', 1 'blue')
set pm3d depthorder
unset colorbox
unset key
set ticslevel 0
splot sed.filename using 1:2:3:(column(-2)) with pm3d

使用 gnuplot 4.6.5 和示例数据得到的结果是:

enter image description here

一些附加说明:

  • 第四列用于选择与 z 值不同的值进行着色。
  • column(-2) 使用 block 编号(相邻 block 由两个空行分隔)作为颜色索引。
  • 属于不同数据 block 的点没有连接。
  • 通过set autoscale cbfix,您可以更好地控制用于平面的颜色。
  • 如果您知道,您有例如三个应该具有特定颜色的平面,您也可以使用定义的设置调色板(0“红色”,1“绿色”,2“蓝色”)

关于gnuplot - 使用 splot 填充 3D 线下方的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25550223/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com