matlab - 使用 Matlab spy 函数可视化具有强度的稀疏模式

标签 matlab graph plot

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();

Result with <code>jet</code>

您可以轻松地使用不同的颜色图,例如,colormap(flipud(hot))

Result with reversed <code>hot</code>

关于matlab - 使用 Matlab spy 函数可视化具有强度的稀疏模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18395117/

相关文章:

matlab - 考虑预分配速度

matlab - 对二维矩阵中的 block 求和 - MATLAB

javascript - 在浮点图的 y 轴上使用标签而不是数字

python - 使用 Python 进行轨迹聚类/聚合

boost - 使用 boost 图合并图

matlab - 颜色条未出现在(表面)图中 - LaTeX 解释器问题

matlab - 如何正确地进行按位运算?

matlab - 如何使颜色条引用 3D 绘图中的标记而不是 Matlab 中的表面

plot - 使用 J 创建散点图矩阵

matlab - 在 matlab 中缩短结构/类名称的句柄