gnuplot:以透明度绘制索引数据时自动计算行数

问题描述 投票:0回答:1

我有一些具有以下结构的数据文件。前三列是点的 3D 坐标 (x, y, z),第四列是强度值。每组的值行(即每组的点数)可以有所不同。所以我需要一个在绘图时自动计算点数的函数,以便我可以获得像“group_0001:10 pts”这样的图例标题。我还希望用透明度而不是大小来绘制点的强度。

reset session

$Data  <<EOD
# group_0001
125.714 109.647 38.0402 0.79257
128.834 111.153 40.7486 0.753538
132.036 112.698 43.4124 0.793434
135.52  114.449 46.0812 0.776121
138.786 116.233 48.1499 0.793355
142.357 117.967 50.2387 0.731456
145.967 119.98  52.2324 0.787673
148.363 121.234 53.44 0.749578
149.448 121.81  54.0276 0.80474
153.108 123.831 55.9821 0.786737


# group_0002
111.44  146.587 81.1063 0.755904
112.27  151.103 82.1631 0.649881
112.995 155.321 83.3001 0.791218
113.763 159.66  84.2395 0.746114
114.551 163.53  85.1278 0.744113
115.437 168.114 86.1995 0.767338
116.344 172.465 87.481 0.742969


EOD


splot for [i=0:*] $Data index i pt 7 ps var
gnuplot
1个回答
0
投票

您可以使用此技巧计算绘制的数据点的数量,并为不同的组重置它。

cur_i=0
n=0
init(i)=(cur_i=i,n=1)
count(i,col)=((i!=cur_i)?init(i):n=n+1,column(col))

splot for [i=0:*] $Data u 1:2:3:(count(i,4)) index i pt 7 ps var  tit "group ".n." points"
© www.soinside.com 2019 - 2024. All rights reserved.