基于Matlab的动态绘图小示例一枚

      今天上午参加了Philipp Khaitonich在我们所儿的报告。他真的是广泛合作,数据很多,得到了若干有趣的结论。其中的关于Autism的某些基因在不同时间点的表达曲线偏离正常人而接近Chimp和M的结论很逗。当然他也做了TF也做了microRNA等ncRNA。我在看他的metabolite analysis的一张图的时候,想到他的visualization还不够eye-catching。他的方法是把数据用PCA降维后,采用前2~3个分量做散点图。选两个PC的时候是fine的,但是选择三个分量的时候就只用了一个倾斜视角,并不全面的显示数据点的特征。对于这种图,一般的方法是四张图:正视图,侧视图,俯视图和倾斜视角图(略带三维视角)。但是既然用了计算机,那么做成动态旋转全部视角的会不会更好呢?

      于是我用matlab来实现这个过程,使用的数据是随机的。(笔者大懒蛋委屈,就不写注释了)

clc;
clear;
close all;
k=randn(200,16);
[coef,score,latent,tsquare] = princomp ( k );
newcomp = k * coef ;
var(newcomp)' - latent
hf=figure(1);
ha = get( gcf , 'CurrentAxes' );
set( ha , 'Xlim' , [min(newcomp(:,1)) max(newcomp(:,1))] )
set( ha , 'Ylim' , [min(newcomp(:,2)) max(newcomp(:,2))] )
set( ha , 'Zlim' , [min(newcomp(:,3)) max(newcomp(:,3))] )
view(3)
hold on
plot3(newcomp(1:50,1),newcomp(1:50,2),newcomp(1:50,3),'yo')
plot3(newcomp(51:100,1),newcomp(51:100,2),newcomp(51:100,3),'ro');
plot3(newcomp(101:150,1),newcomp(101:150,2),newcomp(101:150,3),'go')
plot3(newcomp(151:200,1),newcomp(151:200,2),newcomp(151:200,3),'bo')
figure(1);
[az,el]=view;
for j = -90: 9 : 90 
    for i = 0:0.5:360
        view(i,j)
        set( ha , 'Xlim' , [min(newcomp(:,1)) max(newcomp(:,1))] )
        set( ha , 'Ylim' , [min(newcomp(:,2)) max(newcomp(:,2))] )
        set( ha , 'Zlim' , [min(newcomp(:,3)) max(newcomp(:,3))] )
        drawnow()
    end
end


 

 

      虽然我实现了自己想要的效果,但是结果并不如我所预期的。因为就算加长时间延长,也并不能够有效的增进我对数据集的分布的理解。而且自发动态的相比触发动态的,有着更加高的对解图分析能力的要求。一般的presentation在面对观众的原则应当是采取尽量低的姿态才能有更好的info-convey效果。所以这个我真心不推荐了……只是作为日志放在这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值