我正在使用treeplot(nodes)
绘制节点,我想用图像替换节点符号(默认为圆圈)。
Matlab中的treeplot函数使用以下图表符号:
nodes = [0,1,1,2,2]
其中元素的位置是节点编号,值表示父节点。示例节点1是根,因此值为0.节点2和3是节点1的子节点,类似地继续。
将此向量传递给matlab中的一个函数
treeplot(nodes)
我们得到一个类似树的结构:
在这个图中我想要图像而不是节点符号(圆圈)。我怎么能这样做?
答案 0 :(得分:0)
您可以使用[x,y] = treelayout(nodes)
获取x
中节点的y
- 和treeplot(nodes)
坐标。然后使用hold on
和image
绘制您的情节。
以下示例使用MATLAB示例图像,并将图像大小调整为绘图的5%。图像以节点为中心(0.5*size multiplication
添加到坐标中)并添加标签(使用text
)。
img = imread('peppers.png'); % MATLAB demo image
sizeX = 0.05; sizeY = 0.05; % Define image size in plot
[x,y] = treelayout(nodes); % get x,y of nodes in plot
nodes = [0,1,1,2,2];
treeplot(nodes);
hold on; % add to your treeplot
for i=1:length(x) % for all nodes do:
% draw image centered at node
image([x(i)-0.5*sizeX x(i)+0.5*sizeX], ...
[y(i)+0.5*sizeY y(i)-0.5*sizeY],img);
% optional: label
text(x(i),y(i),num2str(i),'Color','white');
end