Matlab 有一个函数 spy用于可视化图形邻接矩阵的稀疏模式。
不幸的是,它没有通过考虑矩阵中值的大小来显示点。它使用具有相同强度的单一颜色来显示所有条目。
我希望显示相同的 spy 图,但像热图中那样用“颜色编码”的点来指示条目的大小。我该怎么做?
最佳答案
spy
函数使用 plot
,它不能在 lineseries
对象中有不同的标记颜色。
另一方面,patch
对象可以针对不同的顶点使用不同的标记颜色。 patch
本来是用来画多边形的,但是没有面色和边色,可以得到和没有线型的plot
类似的结果。
S = bucky();
[m, n] = size(S);
[X, Y] = meshgrid(1:m, 1:n);
S = (X + Y) .* S;
nonzeroInd = find(S);
[x, y] = ind2sub([m n], nonzeroInd);
figure();
hp = patch(x, y, S(nonzeroInd), ...
'Marker', 's', 'MarkerFaceColor', 'flat', 'MarkerSize', 4, ...
'EdgeColor', 'none', 'FaceColor', 'none');
set(gca, 'XLim', [0, n + 1], 'YLim', [0, m + 1], 'YDir', 'reverse', ...
'PlotBoxAspectRatio', [n + 1, m + 1, 1]);
colorbar();
您可以轻松地使用不同的颜色图,例如,colormap(flipud(hot))
。
关于matlab - 使用 Matlab spy 函数可视化具有强度的稀疏模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18395117/