python函数可视化心得_最近关于数据可视化方面交流的心得感悟

最近与一个来自浙大的研究生师弟就数据可视化方面颇交流了一下。这个师弟编程能力极强,让人不禁感叹浙大这样一流高校果然是名不虚传。他的毕业设计就是做的数据可视化方面的东西,因为想做游戏方面的开发所以研究生来了传媒大学动画学院,因为一些工作上的交集我与他聊了很多相关内容,以下把我可以透露的内容整理一下。

一.陈为老师的跨媒体可视化课程

陈为老师的两本书《数据可视化》和《数据可视化的基本原理与方法》我都有收藏和精读,陈为老师和他所领导的浙大可视化小组(VGA)也是我膜拜的对象。毕竟时空所隔,我并没有听过陈为老师的课。虽然我能从VGA小组的博客上下点课件(课件地址),但还是不如现场聆听的强。不过这个浙大的师弟是正儿八经上过成为老师的课的。该课程主要参加者为工科偏CS方向的专业例如计算机、数字多媒体等专业的大四、大三有一定编程经验和设计能力的学生。一开始也是正常授课,最终成绩以可视化设计作品和课程答辩的水平来评分。。学生的可视化作品的题目,大多以 VAST challenge 之类的课题为内容。我概要的看了一下关于答辩的帖子,我不禁感慨这才是一流高校的水准,学生的组织水平、作品的完成度、和答辩的严谨程度,说实话比我们强得多。当然,学生的组织能力是要激发出来的,光靠几学分只能带来一帮上课睡觉的学生,为了激发热情必须平时经常树立榜样、营造气氛、扛起大旗,有时甚至还得用上重赏之下必有勇夫的办法。陈为老师立下的悬赏是答辩第一名的小组将获得ipad一台。取得的效果也是十分好的,学生学到了知识,毕业的简历上有了称手的案例,老师也通过课程挑选了一批牛人,区区一台ipad的成本算什么。不过话虽如此,想做一个有深度的好项目永远不是一件简简单单就能完成的事。据师弟说:“陈为老师实验室打卡早九晚九,挺严的。当年课程答辩前做到4点,6点多起来去教室,他来了问我们熬夜了没,我们说通宵了,然后他直接面无表情表示:很好!”

所谓优秀,就是这样锻炼出来的。现在高校招聘博士,一定要查三代,看你本科、硕士、博士都是在哪里念的,其中最看重的是本科是在哪里念的,我不得不说这是统计出来的客观真理。很多情况下,本科就已经决定了高度,后面补也补不上来。前段时间还有个新闻说一个清华博士毕业找不到工作,媒体替他打抱不平,实则根本没有必要,因为这个清华博士本科是个三流高校,却还老想找高级职位,那必须被刷。像清华北大浙大这样的高校,一流人才在本科,他们很多毕业了就出国了,二三流才读博,这确实是客观事实。有些人说,那本科之后的努力就不算数吗?当然算,但问题是人家一流高校本科生本身基础就好,还每天做着强度极高的学习和研究工作,难道这4年他们的努力就不算数吗?何况毕业之后,他们就不继续努力了吗?企图等待着精英自己堕落最后和自己沦为一个水平的想法是典型的loser想法。扯点题外话,现在只有一流高校的本科教育可谓英才教育,而普通高校都只能算普通教育。那些开考研基地班的高校,实际上就是把他们的本科生当高中生来教育,让其中的尖子去考研,就是这个道理。遗憾的是很多人读了硕士,读了博士,依然是混的节奏,怎么能跟一流高校本科毕业生比。所以被比下去也别抱怨,老老实实努力修行,比动嘴皮子功夫强。

二.关于数据可视化人才的培养

关于数据可视化师弟认为两点很重要:第一,可视化设计不等于不同统计图那么简单;第二,要针对具体业务进行可视化设计,少不了先做好对数据的前期清洗工作。对此我也深有同感。毕竟大多数人对于数据可视化了解并不深入,直观地认为是各种统计图形的使用和设计的大有人在。虽然统计表也是数据可视化的基础组成部分,但是若有更深入的需求,那么自主设计与开发主题图才是更加重要。这意味着设计者不仅要有足够的设计能力,还的要有足够的编码能力和软件体系架构的能力,怪不得《数据可视化之美》(Beauitiful Visualization)那本书里说“数据可视化这个领域是个怪物,从来没有一个领域需要其从业者掌握那么多的知识”。 然而无论UI设计能力还是软件开发能力,培养起来都不是很轻松的事,对此我深有体会。我研究生阶段经常接项目外包做过各种美工设计、网站开发、web app开发,深知美术设计、UI设计其实很不好做,改来改去十分痛苦,并且还要看从业者在此方面是否有天赋。只有经过2,3年实践历练以后才能勉强到达市场准入标准。另一方面代码开发能力培养起来也不是容易的事,每届计算机专业毕业生中都有一定数量的学生没能培养起来编程能力。至于更高层次的数据分析能力普通高校的毕业生通常很难具备,都是研究生、博士生培养的内容。所以就我所知,想培养一个能独立完成全套可视化设计的人还是挺不容易的事,培养周期也较长。这里我也不敢说我自己算个人才,跟陈为老师的学生比我差的挺远,还得多学习多发论文。

如果真要从本科阶段开始培养这方面的人才,应该如何做呢?我想因材施教是必须的。客观的说,我校计算机专业的学生的水平跟浙大比当然是有差距的,动手能力相对差一点,热情也不容易保持。所以特别要注重前期基础能力的培养和成建制做项目的氛围的培养。我校动画学院游戏专业、动画专业就有很好的这方面传统,大二大三就有很多学生“组团刷野”,虽然最后作品水平可能参差不齐,但起码人家做过项目,没白来一趟,对此我一直非常羡慕。故而,我的感觉是,如果开个数据可视化方面的课,得在大三或者更后面的时段,即有了足够的编程能力积累的情况下,挑选对设计有兴趣且兼具软件开发能力学生来做案例,效果才会好。工科强调动手实践,光看书读理论没什么意义,参加比赛也好自己接私活也好,总之得要有拿得出手的作品。数据可视化的前序课程,得要同时包含美术设计基础和计算机专业的课程。相对而言,可能计算机专业课程更重要一些,美术设计课程主要是为了在其中挑选出对这方面有兴趣、有潜力的学生。

三.关于服务器端技术的选型

最后,师弟问了我关于“如何把前端发的信令,嗯字符串,传到C++的程序里面”,这里有两种做法。

其一,使用其他脚本语言写服务器程序,然后做这些脚本语言与C程序之间的接口。这种做法非常普遍。例子1,服务器使用nginx+php, php写全部业务逻辑,换句话说与前端的数据交互都用php来完成。然后对于某些要用到C语言的内容,让php建立对应的接口去调用C程序的模块。我们实验室之前开发的多协议存储服务mpx就是这种模式开发的,php去调用那些linux底层命令(通常是shell脚本或者打包好的C模块)。例子2,用nodejs做服务器和主要脚本语言,同样是Nodejs接管所有的业务逻辑,对于需要调用C程序的模块就使用对应的扩展即可。下面这篇文章介绍了如何nodejs如何调用C++模块: http://www.cnblogs.com/yupeng/p/3469444.html

其二,直接用C++写个服务器来处理问题。坦白说这种做法用的比较少,原因就是C语言写起来太花时间,并且开发难度较高。这也是为什么人们开发了那么多后端脚本语言,如python, php, nodejs,就是为了少写C(脚本语言就是为了提高开发效率而发明的)。当然直接用C++写个服务器也不是不可以。我记得林卫国老师的课基本就是讲这个的,但他的课用的东西更原始更底层,真正做项目开发肯定不能像老林的课一样,而是要用各种类库来辅助的,例如winSock等。下面有本《WinSock网络编程经络》,可以看看,其源码在这里:http://download.csdn.net/detail/geoff08zhang/4571358 。总之直接用C写服务器程序我是没真正做过,只能说到这里为止了。

更多关于服务器技术选型的讨论,可以看看知乎这个主题,或许会有一个更全面的认识:http://www.zhihu.com/question/20383778

你可能感兴趣的:(python函数可视化心得)