删除切片中的小值

tea*_*eef 5 3d matlab plot

如何删除切片图中的小值?在我的情节中,基本上蓝色太多了,我看不到里面的红点。在此处输入图片说明

或者,稍有不同:

*是否可以用matlab删除切片图中的一些点?

slice(X,Y,Z,V,sx,sy,sz) 表示由 sx,sy 和 sz 定义的整个平面上体积 V 的值。但是我可以选择只保留这些计划中的一些点吗?

  • 我们是否必须在整个计划中表示 V 的值?

  • 我可以让“小价值”透明吗?

编辑 新代码:

h =slice(x,y,z,V,sx,sy,sz);
for n=1:length(h)
    set(h(n), 'alphadata',get(h(n),'cdata'), 'facealpha','flat');   
end
a = alphamap('rampup',256);
a(a<(threshold)) = 0;
a(a>(threshold)) = 0.07;
alphamap(a);
Run Code Online (Sandbox Code Playgroud)

我试过上面的代码。然而,这是我得到的情节:我认为 cdata(颜色)有问题,但我不知道这是什么......

在此处输入图片说明

nkj*_*kjt 5

您可以调整透明度,使较低的值更透明。首先,您需要切片的句柄:

h = slice(X,Y,Z,V,sx,sy,sz);

h不是单个句柄,而是不同切片的一系列句柄。对于任何一个手柄,您都可以更改透明度(或循环所有 n 以更改它们):

set(h(n),'alphadata',get(h(n),'cdata'),'facealpha','flat');

alphadata是透明度数据 - 默认情况下,这是“1”(不透明),因此对于每个句柄,您可以将其设置为cdata. 默认情况下AlphaDataMapping应该已经设置为scaled- 所以 中的值alphadata被映射到一个 alphamap,就像cdata值被映射到你的颜色图一样(稍后会详细介绍)。

facealpha 是关于如何将 alphadata 应用于对象面的设置 - 需要更改以便实际使用 alphadata 中的值。

如果要调整透明值的方式或透明值,可以更改 alphamap。默认贴图只是线性的,可以通过 看到plot(get(gcf,'Alphamap')),其中 0 = 不可见,1 = 不透明。地图的长度可能会有所不同,因此您有很大的调整自由度 - 例如,如果您对这些值不感兴趣,您可以将下部完全归零:

a = alphamap('rampup',256);
a(1:80)=0;
alphamap(a); % only changes alphamap of current figure
Run Code Online (Sandbox Code Playgroud)

此处阅读有关 Matlab 透明度的更多信息。