绘制树状结构,图像作为matlab中的节点

时间:2017-04-25 07:36:46

标签: matlab graph

我正在使用treeplot(nodes)绘制节点,我想用图像替换节点符号(默认为圆圈)。

Matlab中的treeplot函数使用以下图表符号:

nodes = [0,1,1,2,2]

其中元素的位置是节点编号,值表示父节点。示例节点1是根,因此值为0.节点2和3是节点1的子节点,类似地继续。

将此向量传递给matlab中的一个函数

treeplot(nodes)

我们得到一个类似树的结构:

output of treeplot(nodes) with nodes = [0,1,1,2,2]

在这个图中我想要图像而不是节点符号(圆圈)。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您可以使用[x,y] = treelayout(nodes)获取x中节点的y - 和treeplot(nodes)坐标。然后使用hold onimage绘制您的情节。

以下示例使用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

Resulting image of code: Treeplot with images and labels