圆柱交贯线可视化

绘制曲线方程Mathematica非常有一套,这里演示下如何用Mathematica画圆柱的交贯线。

A short note about WriteTeX on MAC OSX

macwritetex I have waited for pdf2svg or pstoedit to release a binary version for MAC OSX for a very long time until yesterday I was so disappointed and tried to solve it myself. I finally figured out a way to use WriteTeX in MAC OSX without fink installed. I upload a binary version of pstoedit for Mac OSX binary into the repository of WriteTeX, which is depending on Inkscape of this version installed in default location (Drag the app into your Applications folder). If you have no problem with these settings and you have the administrator privilege, then here is a solution for you.

优化表达式:Mathematica vs. Maple

表达式优化一般是将符号运算解输入到程序的最后一步,Maple和Mathematica都提供了相似的功能。对于Maple,这个功能有CodeGeneration函数包提供,可以转换为Matlab,Python,C,Fortran等等格式的代码。例如:

ColorBrewer in Mathematica

ColorBrewer 也算是Mathematica的老用户了,看过Core Language的帮助,很庞杂,不过设计很统一,可以很容易的表达很复杂的想法。但是,一直都局限于简单地符号运算,没有太多的深入。会用的功能基本也就是其他函数式程序语言中已经学会的那些概念,并没有过多的钻研。

用ggplot绘图(九)

theme:改变图形的风格

theme是ggplot的强大功能之一,通过主题(theme)可以迅速地获得统一风格的图像。模板的使用方法和其他几何特性是一致的,这里分别展示一下默认自带的一些模板和一些额外的模板。

这是默认模板:

p <- qplot(wt,mpg,color=factor(cyl),data=mtcars,
      geom='point') + geom_smooth(method='lm',size=1) 
p

用ggplot绘图(八)

ggplot里面的那些标签

ggplot里面的标签控制按照ggplot的模型倒是比较自然的推广,但是按照一般的绘图库来评价就显得不是很好控制。这个小段落中,我们将稍微细致的讨论一下ggplot中各种标签的定制方法。

p <- qplot(wt,mpg,size=factor(gear),color=factor(cyl),data=mtcars,
      geom='point') + geom_smooth(method='lm',size=1) 
p

用ggplot绘图(七)

facet: 另一种展示分组数据的方法

用过其他绘图库的用户可能知道一般的绘图库都会提供类似于Matlab中subplot的将一个图形分割为多个坐标轴的功能。然而前面的内容里完全没有提到ggplot可以达到这个功能,而且似乎看起来这个观念和ggplot完全不相容。因为,ggplot的目的在于将数据按照一个模型展示出来,所以不支持将多种模型的图形放置到一个图形中是很自然的。当然,用户可以将两个无关的ggplot图形放置到一个图形中,不过这个观念在ggplot中是没有必要实现的。认真的读者已经发现了,前面我说的是不支持将多种不同模型的图形,那么自然的如果描述数据的模型是一致的,是不是ggplot就支持呢?答案是确实如此。

在ggplot将这种将数据分割到不同坐标轴展示的方法和按照不同颜色,大小展示分组数据的概念等价起来了。因为用不同的坐标轴展示和用不同的标记字符,或者颜色等实际上都是将数据按照某变量分组显示,所以可以认为这只是另外一种分组展示数据的方法。在ggplot里这种展示方法被称作facet。

用ggplot绘图(六)

qplot: 快速构建图形

在这一讲,我们要看看ggplot官方和很多文档一开始就引入的qplot函数。之所以这个系列的文章没有从qplot的开头,是因为笔者并不认为qplot是ggplot的简化版本,而且自qplot的介绍使得ggplot的特色无法得到展示,而且显得比一般的绘图库繁琐。

这一点不难理解,前面几讲已经描述了ggplot的大部分内容,可以看到ggplot将绘图这一工作的抽象本身就较一般的绘图库抽象,而qplot试图在一个函数以内提供与一般绘图库类似的接口无疑困难的。而事实也证明,qplot虽然与一般的绘图语法比较相似,但是选项无疑复杂得多。同时,不用太深入的尝试,如果没有ggplot背后的设计结构的概念,qplot经常很难达到用户意图的效果。

当然,我的意思不是qplot是一个设计上失败的函数,而是它很大程度上并不是很多用户初始想象的ggplot的简化版本。ggplot的作者认为qplot提供了与base程序包中plot函数类似的接口,可以方便方便从R的base绘图库迁移过来的用户。因此,在官方文档中,为了让R的base绘图库用户觉得友好,从qplot开始讲解了。然而笔者已经在本系列第一个文章中已经说过,如果ggplot仅仅是另外一个绘图库,大家完全没有必要来学习。因此,笔者没有选择从qplot作为ggplot的入手点。那么,问题是为什么现在我还要介绍一下qplot呢?答案是qplot是ggplot背后语法的一个简化实现,在很多时候可以达到快速构建图形的作用。这可能就是qplot的q[uick]的意义了吧!

用ggplot绘图(五)

scale:度量

在图形中,数据使用什么几何类型来表示是很关键的(比如是散点啊,还是曲线),那么再定义了类型之后,紧接的问题就是几何类型的属性是什么?这个问题的回答,在ggplot中全部被归纳到了scale里面,这些属性包括颜色、填充、大小、透明度、形状、坐标轴的尺度(线性的或者对数的或者时间尺度的或者反向的等等)。那么,让我们来看看scale吧!

真的有必要考试考求惯性矩吗?

Python

引言

我一直认为没有必要在考试中求截面矩和质心一类玩意(某校有一门课好像主要就在考求L形啊,I形的截面矩,我就不点名了)。因为现在的电脑(其实手机也可以)太容易求出这些几何性质的量了,而且实际上,这个求惯性矩的代码只有几行长,可以参见今天下午的另外一个文章里的代码。况且,ANSYS和AutoCAD都内置了相关函数。有人可能会说,那几个软件里只能求数值解,我要说其实就算要求解析解也不困难,这里就做个演示。