首页 > 解决方案 > 根据零到一之间的值更改颜色强度的范围

问题描述

如何根据概率分布确定颜色的强度或范围?

例如在这个代码示例中

pgon1 = [-0.5 -0.6882;  0.5 -0.6882;  0.5 -1.6882;-0.5 -1.6882];
pgon2 = [0.5 -0.6882;  0.806 0.2629;  1.7571 -0.0431;1.4511 -0.9972];
pgon3 = [0.806 0.2629; 0 0.8507; 0.5878 1.6567;1.3938 1.0689];
pgon4 = [0 0.8507; -0.809 0.2629; -1.3968 1.1136;-0.5878 1.6597];
pgon5 = [ -0.809 0.2629; -0.5 -0.6882; -1.4511 -0.9972;-1.7601 -0.0461];
patch(pgon1(:,1),pgon1(:,2),ones(length(pgon1),1),'r')
patch(pgon2(:,1),pgon2(:,2),ones(length(pgon2),1)*2,'k')
patch(pgon3(:,1),pgon3(:,2),ones(length(pgon3),1)*3,'g')
patch(pgon4(:,1),pgon4(:,2),ones(length(pgon4),1)*4,'b')
patch(pgon5(:,1),pgon5(:,2),ones(length(pgon5),1)*5,'m')
axis equal tight
view(3)
grid on

黑色或蓝色的强度可以是零到一之间某个概率的函数吗?

标签: matlabplot

解决方案


有两种选择:

  1. 可以使用'FaceColor'Patch 对象的属性来完成,将 RGB Triplet 乘以某个强度值(根据您的概率),然后您可以调整某种颜色的暗度:
patch(pgon1(:,1),pgon1(:,2),ones(length(pgon1),1)*1,'b','facecolor',0.20*[0, 0 1])
patch(pgon2(:,1),pgon2(:,2),ones(length(pgon2),1)*2,'b','facecolor',0.30*[0, 0 1])
patch(pgon3(:,1),pgon3(:,2),ones(length(pgon3),1)*3,'b','facecolor',0.50*[0, 0 1])
patch(pgon4(:,1),pgon4(:,2),ones(length(pgon4),1)*4,'b','facecolor',0.75*[0, 0 1])
patch(pgon5(:,1),pgon5(:,2),ones(length(pgon5),1)*5,'b','facecolor',1   *[0, 0 1])

图1

或者

  1. 通过使用该'FaceAlpha'属性,您可以根据您的概率调整某种颜色的透明度:
patch(pgon1(:,1),pgon1(:,2),ones(length(pgon1),1)*1,'b','facealpha',1)
patch(pgon2(:,1),pgon2(:,2),ones(length(pgon2),1)*2,'b','facealpha',0.75)
patch(pgon3(:,1),pgon3(:,2),ones(length(pgon3),1)*3,'b','facealpha',0.5)
patch(pgon4(:,1),pgon4(:,2),ones(length(pgon4),1)*4,'b','facealpha',0.3)
patch(pgon5(:,1),pgon5(:,2),ones(length(pgon5),1)*5,'b','facealpha',0.2)

图2


推荐阅读