我有一个binary format='%float32%float32%float32'
具有D3点(using 1:2:3
)的二进制文件。最初逻辑上由3分组的点组成三角形。我想使用绘制出三角形的腿只是一条线with lines
。在ASCII数据文件中,我可以通过在三行之间添加一个空行来制作所谓的数据块,但在二进制文件中则不能。我想在每三个点上折断一条直线,以至少形成三角形轮廓的V型部分。
是否可以选择将gnuplot
三重点视为单独的数据块?
数据是否还有其他选项,splot
例如(可能是)实心三角形?
我仍然不确定我是否在正确的轨道上。以下代码将你的二进制数据写入表中,并为一个三角形建立3个数据点的组,插入一个空行,然后为下一个三角形移动一个。所以,从各方面来看p1=f1,f2,f3
,p2=f4,f5,f6
; p3=f7,f8,f9
; ...它将创建三角形p1p2p3p1 p2p3p4p2 p3p4p5p3
(空格=空线)。
当然,效率不是很高(内存),但这也许更接近你的最终目标。检查help pm3d
和help hidden3d
,你可能会在其中获得一些其他信息。我非常希望有更好的方法。
代码:(假设二进制文件'myBinary.bin'
,不确定我是否正确解码了ASCII字符串)
# plot binary data
reset session
# put binary data into a datablock
set table $Data
plot 'myBinary.bin' u 1:2:3 binary format='%float32%float32%float32' skip=12 w table
unset table
# separate each triangle by an empty line
set print $Data2
do for [i=1:|$Data|-2] {
print $Data[i]
print $Data[i+1]
print $Data[i+2]
print $Data[i]
print "" # insert empty line
}
set print
set pm3d hidden3d
set view 40, 24
splot $Data2 u 1:2:3 w pm3d notitle
### end of code
结果:
完美的解决方案。非常感谢你!彼此
print ""
需要制作两个单独的三角形而不是三角形带。真正的示例数据包含标头+ 18个浮点数。谢谢你。不知道set table
。很高兴听到。我希望其他人会提出更好的解决方案。
奇怪...如果我再添加一条空行,将不会绘制任何内容。
这是因为
pm3d
。