2014-09-01 76 views
1

给定以下代码,如何使Inf值在散点图中不可见而不进行颜色处理?简单的方法来过滤散点图中的Infs

J = rand(20, 40, 5); 
J(J>.6 & J<.4) = Inf; 

% Plot a scatter matrix 
shape = size(J); 
[x,y,z] = meshgrid(1:shape(1), 1:shape(2), 1:shape(3)); 
scatter3(x(:), y(:), z(:), 4, J(:), 'fill'); 
+1

@divakar ups,太简单了。所以'NaN'永远不会被绘制。很高兴知道。 – embert 2014-09-01 12:00:21

回答

2

数据与MATLAB,你可以在你的情况下利用打印时不可见。由于您想将Infinte的值设置为不可见,因此可以将所有这些值都转换为NaNs,然后绘制它们。在这里,您可以借助逻辑索引来索引Inf元素位置。因此,代码将是 -

J(isinf(J))=NaN 

%// ... Plot J 
+0

您是否知道在使用OpenGL渲染器时如何实现同样的功能? – embert 2014-09-25 12:05:13

+0

@embert哦,对不起,不知道这些话题。 – Divakar 2014-09-25 12:43:54

+1

只要注意到,这可以很容易地通过在绘制之前通过'x = x(〜isinf(J)),y = y(〜isinf(J)),z = ..'在将x转换后过滤出顶点来实现, y,z'和'J'为单列向量('x = x(:)')。 – embert 2014-09-25 13:29:29

0

一种方法可能是将高于某个阈值的值更改为NaN(或任何其他数字)。我相信NaN值不会出现在你的散点图中。你可以用你已经使用的相同代码来做到这一点。

NaN

J(J>10^6) = NaN;