Data Visualization I:Shaded Error Bar

写在开头


      思索良久,准备着手开设这样一个系列帖,目的在于与滴友们分享和交流对科学数据的可视化。以往大多脑科学的知识资源中,大多重视数据的分析方法、原理,却忽略了数据的呈现。在我自己看来,可视化——作为信息和艺术的融合——结合了问题解决和艺术这两个方面,允许我们将理性和感性结合,来感受数据的“美丽”。


      数据的可视化十分重要。我们可以发现,越是影响力高的杂志,其内容充实新颖的同时,文章插图的可视化也做得非常好,如Nature、Science、Nature Neuroscience、PNAS等。一位学术大佬曾经告诉我,在写paper前最重要的一件事就是把文章里的所有Figure画好,Figure不仅呈现了自己研究最关键的结果,而且其顺序也隐含了研究的逻辑。大多数科研工作者忽略了数据可视化这一项重要的基本技能,限制了科研能力的提升。其实要有好的可视化呈现并不难,关键在于兴趣和积累


      这个帖子并不是为了单纯地开设一个所谓的教程,而是期待更多人的加入、分享和交流。我个人比较熟悉的可视化主要是基于matlab的工具包,目前也在学习python的相关方法。仅作抛砖引玉。



方法:Shaded Error Bar

软件:Matlab

适用数据类型:尤其适合描述时间进程数据等

源脚本链接:http://cn.mathworks.com/matlabce ... bell-shadederrorbar (Rob Campbell - November 2009

function的调用:function varargout = shadedErrorBar(x,y,errBar,lineProps,transparent)


主要的参数是x(也可以留空), y 和errBar (也就是se或std或置信区间等),可选的参数有:lineProps - 设置线条的参数,transparent - 设置透明度。


下面来看看几个例子(目前上传不了图,大家可以在自己matlab里试验一下):


例子一

y=randn(30,80); x=1:size(y,2);
shadedErrorBar(x,mean(y,1),std(y),'k');


http://8247532.s21i-8.faiusr.com/4/ABUIABAEGAAgmJL_0QUojMvv4AUw8wk4sQQ.png


例子二:

y=randn(30,80); x=1:size(y,2);
shadedErrorBar(x,y,{@median,@std},{'r-o','markerfacecolor','r'});  


http://8247532.s21i-8.faiusr.com/2/ABUIABACGAAgnpL_0QUo1vDqajCBCjjaBA.jpg


例子三(还可以两组数据一起来):

y=randn(30,80)*10; x=(1:size(y,2))-40;

shadedErrorBar(x,y,{@mean,@std},'-r',1);

hold on

y=ones(30,1)*x; y=y+0.06*y.^2+randn(size(y))*10;

shadedErrorBar(x,y,{@mean,@std},'-b',1);

hold off


http://8247532.s21i-8.faiusr.com/2/ABUIABACGAAgo5L_0QUo5Iqk-QQwsQQ4pAM.jpg


大家可以发现,这个脚本的好处在于可以编辑图像中的任意元素,只要你有好的idea,你就能画出高大上的可视化图,提升你论文的档次,下面是我自己练习的结果,大家也可以上传自己可视化后的成果。总之还是一句话,practice makes perfect!




文末福利:

1. 最后向大家推荐数据可视化的一本书:Julie Steele 等编,祝洪凯 李妹芳译 《数据可视化之美

2. Matlab上的ggplot2——Gramm: http://cn.mathworks.com/matlabce ... ox--ggplot2-r-like-