如何在gnuplot中绘制树图
我试图在gnuplot中创建一个树状图,到目前为止,我已经将带有标签的点排列到树状结构中。我想连接节点(点),这样每个节点都将连接到更高级别的节点如何在gnuplot中绘制树图,gnuplot,Gnuplot,我试图在gnuplot中创建一个树状图,到目前为止,我已经将带有标签的点排列到树状结构中。我想连接节点(点),这样每个节点都将连接到更高级别的节点 gnuplot code: set term png set output "tree.png" set xrange [0:50] set yrange [0:50] plot 'data.txt' using 1:2:3 with points pointtype 7 lt 1 title 'title', \ '' usin
gnuplot code:
set term png
set output "tree.png"
set xrange [0:50]
set yrange [0:50]
plot 'data.txt' using 1:2:3 with points pointtype 7 lt 1 title 'title', \
'' using 1:2:3 with labels offset 0,char 1
data:
20 35 1
15 30 1.1
10 25 1.1.1
5 20 1.1.1.1
15 20 1.1.1.2
25 30 1.2
30 25 1.2.1
25 20 1.2.1.1
35 20 1.2.1.2
多谢各位
这很可能需要从外部处理输入数据文件,以便动态生成边列表 如果我正确理解了您的问题,那么输入中的每个节点(点)都与一个“树路径”相关联,它只是一个由点分隔的整数组成的字符串,表示点在图形(树)的每个级别上的位置。现在,如果B的路径比A的路径长1(额外1级),并且A的路径是B的路径的前缀(A是B的父节点),则应连接两个节点A和B 要做到这一点,可以假设输入上的点已经按照您的示例中的层次顺序排列(即,父对象的坐标在其任何子对象之前定义),并按照以下步骤进行操作:
set term png
set output "tree.png"
set xrange [0:50]
set yrange [0:50]
fName = 'data.txt'
parseEdges = sprintf('< gawk '' \
NF==3{ \
coords = $1 " " $2; \
data[$3] = coords; \
n = split($3, path, "."); \
if(n == 1) next; \
prefix=path[1]; \
for(i=2;i<n;i++){ prefix = prefix "." path[i] } \
if(prefix in data){ \
print data[prefix] "\n" coords "\n"; \
} \
} \
'' %s', fName);
plot \
fName using 1:2:3 with points pointtype 7 lt 1 title 'title', \
'' using 1:2:3 with labels offset 0,char 1, \
parseEdges w l
设置术语png
设置输出“tree.png”
设置X范围[0:50]
设置Y范围[0:50]
fName='data.txt'
parseEdges=sprintf(“