同一子图通过st矩阵来进行节点连接,希望同一张图,不同节点显示不同颜色,有什么好办法吗?什么思路都可
对于一些特殊情况,如果我们需要特定类的点显示特定的颜色,可以通过直接修改对应点的NodeCData值以及映射到的颜色来实现。比如让节点1为红色,节点2为绿色,节点3为蓝色,节点4为黑色:
s=[2 3 4];
t=[1 1 1];
G=digraph(s,t);
p1=plot(G,'MarkerSize',4,'Layout','force');
set(p1,'NodeCData',[1 2 3 4]) %令节点1,2,3,4的NodeCData值分别为1,2,3,4
set(gca,'CLim',[0.5,4.5]); %设置颜色图上下限为4.5、0.5
map=[1 0 0;0 1 0;0 0 1;0 0 0]; %四行分别是红色、绿色、蓝色、黑色
colormap(map) %更新所映射的颜色矩阵为map
colorbar %显示颜色条
在Tarjan算法求割点的过程中染就行了
我可以提供以下几种解决方案或思路:
解决方案1:使用colormap函数将不同的子图显示为不同的颜色。根据参考资料段落0所示,可以使用subplot函数创建子图,并使用colormap函数为每个子图指定不同的颜色标度,代码示例如下:
sub1 = subplot(2,2,1); colormap(sub1, 'autumn');
sub2 = subplot(2,2,2); colormap(sub2, 'jet');
sub3 = subplot(2,2,3); colormap(sub3, 'winter');
sub4 = subplot(2,2,4); colormap(sub4, 'spring');
这里使用subplot创建了一个2x2的画布,并分别使用colormap函数为四个子图指定不同的颜色标度,运行代码后得到的效果如下所示:
解决方案2:使用plot函数在同一张图上绘制不同颜色的线条。具体思路是使用循环或者多次调用plot函数,在同一张图上绘制不同颜色的线条,代码示例如下:
x = linspace(0,2*pi,100); % 生成x轴的数据 colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k']; % 定义颜色数组
figure; % 创建一张新图 hold on; % 开启保持图形再次作图的功能
% 使用循环方式绘制不同颜色的线条 for i = 1:length(colors) y = sin(x + i); % 生成对应的y轴数据 plot(x, y, colors(i), 'LineWidth', 2); % 绘制线条并设置线宽 end
legend('Line1', 'Line2', 'Line3', 'Line4', 'Line5', 'Line6', 'Line7'); % 添加图例 title('Different Colors for Different Lines'); % 添加标题
运行代码后得到的效果如下所示:
解决方案3:使用line函数在同一张图上绘制不同颜色的线条。与解决方案2相似,不同之处在于使用line函数绘制线条,可以更加灵活地控制每条线条的属性,代码示例如下:
x = linspace(0,2*pi,100); % 生成x轴的数据 colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k']; % 定义颜色数组
figure; % 创建一张新图 hold on; % 开启保持图形再次作图的功能
% 使用循环方式绘制不同颜色的线条 for i = 1:length(colors) y = sin(x + i); % 生成对应的y轴数据 line(x, y, 'Color', colors(i), 'LineWidth', 2); % 绘制线条并设置线宽 end
legend('Line1', 'Line2', 'Line3', 'Line4', 'Line5', 'Line6', 'Line7'); % 添加图例 title('Different Colors for Different Lines'); % 添加标题
运行代码后得到的效果与解决方案2相同。
综上,可以使用以上三种方式来使不同的子图或线条显示不同的颜色,根据实际需求选择不同的方案即可。
如果你想为不同的子图使用不同的colormap,可以在每个axes上设置不同的colormap。
使用subplot()创建多幅子图,例如subplot(n,m,k)表示创建n×m个子图中的第k个子图,并通过colormap属性来设置不同的colormap。
利用colormap()函数设置颜色映射表,将子图对应的颜色与数据值对应起来。
比如说,
% 创建两个子图
subplot(1,2,1)
imshow(img1)
subplot(1,2,2)
imshow(img2)
% 为第一个子图设置colormap
cmap1 = [1 0 0; 0 1 0; 0 0 1]; % 三种颜色
colormap(subplot(1,2,1), cmap1);
% 为第二个子图设置colormap
cmap2 = [0.5 0.5 0; 0.5 0 0.5; 0 0.5 0.5]; % 三种颜色
colormap(subplot(1,2,2), cmap2);
亦或者
% 示例代码
% 创建2×1的子图
subplot(2,1,1)
x = linspace(0, 2*pi, 100);
y = sin(x);
imshow(y')
colormap(gca, 'parula') % 子图1采用parula colormap
title('Sine Wave')
colorbar % 添加颜色条
subplot(2,1,2)
y = cos(x);
imshow(y')
colormap(gca, 'jet') % 子图2采用jet colormap
title('Cosine Wave')
colorbar % 添加颜色条