在matlab中绘制2D强度图中的函数

时间:2014-06-25 09:30:38

标签: matlab function colors plot color-scheme

我正在尝试将功能可视化为更直观的颜色编码图,可用于图像。我试图想象荧光蛋白可以有效地将能量从一个转移到另一个的范围。这个过程中一个非常重要的因素是两种蛋白质之间的距离。因此,我想绘制能量转移的理论图,作为这些蛋白质之一的距离的函数。 我想有一个2D强度图,我可以用它来整合到我的蛋白质模型中。

描述有效能量转移的功能是:

E = R ^ 6 /(R ^ 6 + r ^ 6)

E =能量转移效率

R =Förster距离50%的转移机会

r =荧光蛋白之间的实际距离

r的低值导致E的高值,意味着有效的能量转移 - >绿色 r的高值导致低的E值,低效的能量转移 - >红色

我的问题是,是否有人可以帮助我将图形转换为颜色编码的圆圈,其中圆圈的中间对应高E(绿色),边框更红。

到目前为止,我尝试了网格+冲浪功能,但这些功能需要矩阵,因此不起作用。

感谢您的帮助,谢谢您的回复!

干杯, Reinier

1 个答案:

答案 0 :(得分:3)

如果我理解正确,那么

[R r] = meshgrid( 0.1:0.1:5 ); % define 2D inputs
E = (R.^6)./( R.^6 + r.^6 );   % compute 2D function
figure;
surf( R, r, E, 'EdgeColor','none'); % plot using surf
xlabel('R');
ylabel('r');
colormap( [ 1:-0.05:0; 0:.05:1;  zeros( 1, numel(0:.05:1) )]' ); % colormap red->green

你得到的是什么 enter image description here


如果您想使用E( x,y ; R=5.1 )绘制2D函数r(x,y) = || x - y ||,那么您可以尝试

[X Y] = meshgrid(-120:1:120); % x,y range -120:120 nm
r = sqrt( X.^2 + Y.^2 );
R=5.1; % fixing R to 5.1 nm
figure;
surf( X, Y, (R.^6)./( R.^6 + r.^6 ), 'EdgeColor','none');
xlabel('X[nm]');
ylabel('Y[nm]');
zlabel('E');
colormap( [ 1:-0.05:0; 0:.05:1;  zeros( 1, numel(0:.05:1) )]' );
colorbar;

在那种情况下,你会得到 enter image description here