如何在论文中画出漂亮的插图?修改
经常看到别人论文中画出各种绚烂的插图,我想知道这些图都是用一些什么样的软件画出来的。比如下面给出的几张,好吧,我承认有的并不那么绚烂,但用什么样的软件比较合适呢?具体答案可以拓展到更为广远的作图领域。



修改





经常看到别人论文中画出各种绚烂的插图,我想知道这些图都是用一些什么样的软件画出来的。比如下面给出的几张,好吧,我承认有的并不那么绚烂,但用什么样的软件比较合适呢?具体答案可以拓展到更为广远的作图领域。
…
显示全部

举报
10 条评论
分享
•
邀请回答
按票数排序
按时间排序
73 个回答
强烈推荐 Python 的绘图模块 matplotlib: python plotting 。画出来的图真的是高端大气上档次,低调奢华有内涵~ 适用于从 2D 到 3D,从标量到矢量的各种绘图。能够保存成从 eps, pdf 到 svg, png, jpg 的多种格式。并且 Matplotlib 的绘图函数基本上都与 Matlab 的绘图函数名字都差不多,迁移的学习成本比较低。开源免费。如图所示(题目描述中的图在最后):
(以下图片均引用自 Thumbnail gallery )
像这种普通的函数图象:

以及这种 Scatter 图(中文不知道该怎么说…):

精致的曲线,半透明的配色。都显出你那高贵冷艳的X格,最重要的是只需一行代码就能搞定。从此以后再也不用忍受 Matlab以及GNUPlot 中那蛋疼的配色了。
想画 3D 数据?没有问题 (不过用 mayavi 可能更方便一些):

四行代码你就能拥有(后三行是画坐标平面上的等高线,严格的额说还是一行)。
除此以外,不过你是矢量场,网络还是什么奇葩的需求都能够搞定:



这还没完,Matplotlib 还支持Latex公式的插入,当别人画的图还是这个样子的时候(以下图片引用自Matplotlib Tutorial(译))
你能够把它变成这个样子:
如果再搭配上 IPython 作为运行终端(这张图是自己的~):

简直就是神器啊,有木有!
心动不如行动,还等什么?
(奉上教程一篇 Matplotlib Tutorial(译))
==== Update: 2013-9-18 18:04 ====
经@许铖同学提醒,再补充一句,matplotlib 还可以话 xkcd 风格的图呦~
(图片引用自网络)
此外结合 IPython Notebook 后更多精彩内容,请看http://nbviewer.ipython.org/
==== Update: 2013-9-19 20:04 ====
如果嫌安装麻烦并且恰好在 Windows 系统下的话可以尝试Python的一个发行版winpython - Portable Scientific Python 2/3 32/64bit Distribution for Windows。
==== Update: 2013-10-1 23:45 ====
鉴于@van li同学质疑 matplotlib 是否能画出题目中所示的图像,我在这里将题目中的图像用 matplotlib 画出来如下:
代码在此处:https://gist.github.com/coldfog/c479124328fc6bb8b789
代码在此处:https://gist.github.com/coldfog/5da63a6958fc0a949b52
======== 2014.5.10更新======
看到楼下有人说配色和好看,唉....那我也贴几个吧...只不过当初限于篇幅没有写而已。
首先,python 有一个专门的配色包jiffyclub/brewer2mpl 路 GitHub,提供了从美术角度来讲的精美配色(戳这里感受ColorBrewer: Color Advice for Maps)。
此外还有一些致力于美化绘图的库,用起来也都非常方便,比如olgabot/prettyplotlib 路 GitHub。
废话不多说,上图就是王道。
(一下图片来源网络)



有人可能会说需要复杂的设置,其实也不用。比如上边这幅图,只需要多加一个参数就好:
楼下说到统计绘图。嘛 seaborn (https://github.com/mwaskom/seaborn) 是一个调用 matplotlib 的统计绘图库,上图:
代码一行,后边的几乎都是一行,没做其他设置,默认就这样。我就不贴其他的代码了:





这还有个更炫酷的可交互式的绘图,大家自己戳开看吧http://nbviewer.ipython.org/github/plotly/python-user-guide/blob/master/s0_getting-started/s0_getting-started.ipynb
哼哼,完爆了吧~~~~\(≧▽≦)/~
(以下图片均引用自 Thumbnail gallery )
像这种普通的函数图象:

plt.fill(x, y1, 'b', x, y2, 'r', alpha=0.3)
以及这种 Scatter 图(中文不知道该怎么说…):

plt.scatter(x, y, s=area, alpha=0.5)
精致的曲线,半透明的配色。都显出你那高贵冷艳的X格,最重要的是只需一行代码就能搞定。从此以后再也不用忍受 Matlab以及GNUPlot 中那蛋疼的配色了。
想画 3D 数据?没有问题 (不过用 mayavi 可能更方便一些):

ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contourf(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)
四行代码你就能拥有(后三行是画坐标平面上的等高线,严格的额说还是一行)。
除此以外,不过你是矢量场,网络还是什么奇葩的需求都能够搞定:

plt.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=plt.cm.autumn)
plt.colorbar()

plt.triplot(x, y, triangles, 'go-')
plt.title('triplot of user-specified triangulation')
plt.xlabel('Longitude (degrees)')
plt.ylabel('Latitude (degrees)')

ax = plt.subplot(111, polar=True)
bars = ax.bar(theta, radii, width=width, bottom=0.0)
这还没完,Matplotlib 还支持Latex公式的插入,当别人画的图还是这个样子的时候(以下图片引用自Matplotlib Tutorial(译))



简直就是神器啊,有木有!
心动不如行动,还等什么?
(奉上教程一篇 Matplotlib Tutorial(译))
==== Update: 2013-9-18 18:04 ====
经@许铖同学提醒,再补充一句,matplotlib 还可以话 xkcd 风格的图呦~

此外结合 IPython Notebook 后更多精彩内容,请看http://nbviewer.ipython.org/
==== Update: 2013-9-19 20:04 ====
如果嫌安装麻烦并且恰好在 Windows 系统下的话可以尝试Python的一个发行版winpython - Portable Scientific Python 2/3 32/64bit Distribution for Windows。
==== Update: 2013-10-1 23:45 ====
鉴于@van li同学质疑 matplotlib 是否能画出题目中所示的图像,我在这里将题目中的图像用 matplotlib 画出来如下:


======== 2014.5.10更新======
看到楼下有人说配色和好看,唉....那我也贴几个吧...只不过当初限于篇幅没有写而已。
首先,python 有一个专门的配色包jiffyclub/brewer2mpl 路 GitHub,提供了从美术角度来讲的精美配色(戳这里感受ColorBrewer: Color Advice for Maps)。
此外还有一些致力于美化绘图的库,用起来也都非常方便,比如olgabot/prettyplotlib 路 GitHub。
废话不多说,上图就是王道。
(一下图片来源网络)



有人可能会说需要复杂的设置,其实也不用。比如上边这幅图,只需要多加一个参数就好:
cmap=brewer2mpl.get_map('RdBu', 'diverging', 8, reverse=True).mpl_colormap,
楼下说到统计绘图。嘛 seaborn (https://github.com/mwaskom/seaborn) 是一个调用 matplotlib 的统计绘图库,上图:

g = sns.jointplot(x1, x2, kind="kde", size=7, space=0)





这还有个更炫酷的可交互式的绘图,大家自己戳开看吧http://nbviewer.ipython.org/github/plotly/python-user-guide/blob/master/s0_getting-started/s0_getting-started.ipynb
哼哼,完爆了吧~~~~\(≧▽≦)/~
- 我喜欢用Mathematica画图,默认出图漂亮,自定义性好,支持常见各种类型的画图,能导出丰富的格式,动态交互和制作动画也很强大,还有一点:Mathematica很数学,语法和数学上的习惯更接近,函数或方程作图只需输入表达式和范围即可,Matlab和
Python中一般需要先手动离散化
- Matlab的可视化也很强大,不过被吐槽较多的一点是线条有锯齿(这个和取的点多少无关,其实也能消掉)(http://tieba.baidu.com/p/2087817806)3维绘图色调不好看,当然如果有耐心也可以画出漂亮的图形的
- Python的matplotlib库我也用过,风格是模仿Matlab的,就默认绘图来说比Matlab好看(起码没锯齿),好处楼上已经有人说过了,但是并非没有 缺点,使用matplotlib需要一点编程和Python基础,对于编程基础不好的同学来说入门会比其他的软件慢一点;matplotlib的2维绘图很好,但是3维绘图目前还比较差,各种绘图细节方面的可选项不算很丰富,不支持隐函数绘图(形如F(x,y,z)=0这种),性能也不好(如3D的scatter,大概1万个点就开始卡了,Mathematica和Matlab 10万个点都不算卡),3维的用mayavi这个库可能更好
第二幅图中加上Mesh->All,显示出所有点的位置。可以看出Mathematica很聪明,它知道在变化剧烈的地方取更多的点,变化较少的地方少取一些

Mathematica不仅支持Latex,还能直接写二维的公式以及把公式导出为Latex


不等式区域绘图,在Mathematica中使用RegionPlot很简单,但在Matlab和Matplotlib中有点麻烦
(下面这个是在极坐标下的)

绘制图表


http://www.cnblogs.com/qtsharp/archive/2012/03/24/2415147.html
http://www.xue163.com/178/6/1787117.html

Matlab版:Matlab软件环境下的Sierpinsk地毯及Sierpinski海绵






散点图

更多美图
http://www.51xuewen.com/group/513/topic_12635.htm
http://mathematica.stackexchange.com/questions/11880/animating-mathematica-se-logo
http://mathematica.stackexchange.com/questions/11350/xkcd-style-graphs
大家都理解错了嘛~楼主问的是论文里怎么才能画出精美的插图。顶在最前面的Python、Matlab等软件虽然能准确画各种常见图,但是从美术角度来看不及格好吗!最让人吐槽的就是这俩的配色!看看直方图那丑陋的配色!函数图难看的等高线!一点都不精美!
要比高端大气上档次,本页所有答案完全不是R的ggplot2包的对手嘛~以前我也用Matlab,自从遇到ggplot2之后就彻底成为脑残粉了!
ggplot2是R的一个package,画图风格相当文艺小清新。看论文看到用ggplot2画图都是一种享受哦!极为擅长于数据可视化。可惜ggplot2功能没有Python或者Matlab全面,画不出稀奇古怪的电路图不支持三维立体图像哦~不过作为一个统计绘图软件那些功能也不算很重要啦。
ggplot2有一个最大的特点是引入了图层的概念,各位用过Photoshop应该能理解吧?
你可以随心所欲将各种基本的图叠加起来显示在一张图上,构造出各种各样新奇的图片!
先来一个最基础的散点图开胃。这是不调颜色软件包默认的配色。灰色的背景,黑色的小点点。拟合曲线和置信域看着就很舒服嘛。
来看看直方图,和傻大黑粗的Matlab相比精致秀气多啦!
还有精致的半透明效果!


折线图画得美到极致了好吗!
柱状图+密度!

Heat Map!

这么乱糟糟的线也画得好清新!

ggplot2能把密密麻麻的散点图画的极具美感,彻底治愈密集恐惧症!


还可以画地图!把非洲画得这么美我都想去了好吗!
Network也能画!
散点图+误差区间!
极坐标柱状图!
要比高端大气上档次,本页所有答案完全不是R的ggplot2包的对手嘛~以前我也用Matlab,自从遇到ggplot2之后就彻底成为脑残粉了!
ggplot2是R的一个package,画图风格相当文艺小清新。看论文看到用ggplot2画图都是一种享受哦!极为擅长于数据可视化。可惜ggplot2功能没有Python或者Matlab全面,画不出稀奇古怪的电路图不支持三维立体图像哦~不过作为一个统计绘图软件那些功能也不算很重要啦。
ggplot2有一个最大的特点是引入了图层的概念,各位用过Photoshop应该能理解吧?
你可以随心所欲将各种基本的图叠加起来显示在一张图上,构造出各种各样新奇的图片!





折线图画得美到极致了好吗!


Heat Map!

这么乱糟糟的线也画得好清新!

ggplot2能把密密麻麻的散点图画的极具美感,彻底治愈密集恐惧症!








开头放颗爱心吧,图片是我自己用 LaTex 编译得到的,代码来自Can we make a love heart with LaTeX?

以上just for fun。
我认为,在如何在论文里画图的问题下面,没有人重视 LaTex 是一件不合理的事情。LaTex 在学术界的流行程度之广是不容置疑的,你敢说你投论文从来没用过 LaTex?期刊没有要求过你提交 Tex 源码?那么使用 LaTex 原生支持的图包来画论文中的插图是一件很自然的事情,况且,它的绘图工具库 (pgfplots) 也没有很难学。另外,从TeX - LaTeX Stack Exchange上的问答内容的丰富程度来看,在世界范围内,LaTex 还是很流行的。
这个答案不打算很详细地教你如何入门,但我会给一些很简单很基础的例子来告诉你怎么用 LaTex 的代码画出基本的图形来。至于更复杂的例子,就看你自己啦,网上的 LaTex 资源是非常丰富的。对于我来说,只要有 TeX - LaTeX Stack Exchange 和 TikZ and PGF 就足够回答我几乎所有的 LaTex 日常编码及 pgfplots 的问题了(你么有看错,不用 google 也行,反正你 google 到的大多也是 TeX - LaTeX Stack Exchange 的问答页面)。
下面我会先说一下代码量的问题,因为在很多人提到 LaTex 的绘图代码量大。接着,我会说一下代码可读性的问题,我认为 LaTex 的 pgfplots 的绘图代码的可读性优于 python 的 matplotlib,我会举一个简单的例子来说明。如果你把这个例子看完,事实上也已经掌握了用 Latex 来绘制简单的函数图形的方法。然后,由于很多人肯定会关心如何根据已有的数据来绘制图形的问题,比如绘制某段时间的温度变化曲线之类,所以,我会再介绍一下用 LaTex 读取数据文件并绘制成曲线图的方法。我相信你读完这些内容之后会发现,其实用 LaTex 画图,上手也很容易,没有编程基础的话也没有很大难度。你会发现 LaTex 的 pgfplots 包中有很多设定都是对初学者很温馨的。最后,我会给出更多的效果图。
当然当然,我这里说的肯定是片面的,因为我在努力地夸 LaTex。事实当然是它也有很多缺点,但因为大多数人都对它有偏见,所以我想多夸夸它会更有意义些。
1. 代码量
很多人似乎觉得 LaTex 的画图代码量很大,是的,我这里贴的一些图的代码量确实很大,但是,你要和其它画图方式相比较的话,总得找一样的例子吧,下面我给一个很简单的例子来比较一下用 LaTex 的 pgfplots 画图和用 python 的 matplotlib 来画图的代码。
首先是 matplotlib 的。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10)
line, = plt.plot(x, np.sin(x), '--', linewidth=2)
dashes = [10, 5, 100, 5] # 10 points on, 5 off, 100 on, 5 off
line.set_dashes(dashes)
plt.show()
接着是 pgfplots 的。

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot [dash pattern=on 10 off 5 on 100 off 5, domain=0:10, samples=100, very thick, blue] {sin(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}
看,代码量没什么太大差距吧。
2. 代码可读性
其实,除了代码量以外还有一个很重要的问题需要考虑,就是学习曲线。是的,在这个 LaTex 的学习曲线很陡峭已经几乎被公认的年代里,我居然会说我们可以来比一下学习曲线。LaTex 的这个 pgfplots 真的很难学吗?下面我们来看一下上面给的这两段代码吧,我想说的其实是,LaTex 的这段画图代码对于初学者来说,可读性会比 python 更好,因为你不用看文档就能够大致猜到 LaTex 代码的含义。
我们一行一行地看看绘图有关的代码。
先来看看 LaTex 的。
\begin{tikzpicture}
虽然 tikz 不知道是什么意思,但是 begin 和 picture 我知道,所以我猜这是要开始画图了。
\begin{axis}
axis 的意思是坐标轴,恩,我猜这是要画坐标轴。
\addplot [dash pattern=on 10pt off 5pt on 100pt off 5pt, domain=0:10, samples=100, very thick] {sin(deg(x))};
plot,这个词我在韦伯词典里查到它的意思是:3 a: to locate (a point) by means of coordinates b: to locate (a curve) by plotted points c: to represent (an equation) by means of a curve so constructed。所以理解应该没难度吧。
dash pattern,明显是要指定虚线样式的节奏,后面跟了个 on 10pt off 5pt on 100pt off 5pt,on和 off 是什么?好像虚线就是画一段空一段嘛,所以大概这个 on 就表示画一段的意思,off 就表示空一段的意思,那么后面的数字应该就是这一段的长度了。
domain=0:10,这似乎表示某个域的大小,一般来说,如果我们要画的是一条由某个函数表示的曲线的话,很可能需要关心的域是x的域。
samples=100,任何一条曲线在画的时候,实际上都是需要采样 (sample) 的,那么这里的意思很可能就应该是采样点数量的意思。
very thick,很粗?是的,这就是表示粗细,是什么东西的粗细呢?你画曲线的时候最关心的是什么东西的粗细?我相信是曲线本身吧。而且,回过去看看这一行开头写的是 \addplot,所以应该也能猜到这里需要描述的对象是曲线。
blue,很显然,就是画成蓝色的意思。
最后再看 sin(deg(x)),sin 大家都知道是什么意思,deg 似乎要想一下,恩...degree 大家都很常用吧,所以这里的意思似乎就是把x转换成角度的意思,所以,这个图的横坐标应该表示的是弧度。
然后是两个 \end,意思应该也很容易猜到。
现在我们来看 python 的代码,请注意,假设你是一个不会写代码的人。
x = np.linspace(0, 10)
我知道 x 可能是曲线方程的自变量,但是 np 是个啥?下面加个点是什么意思?linspace 可能是 line space 的意思,但是 line space 是什么意思?大概是线的绘制空间吧。你觉得 pgfplots 里用的关键字 domain 和这里的 linspace ,哪个更容易被理解成 x 的取值范围?
line, = plt.plot(x, np.sin(x), '--', linewidth=2)
我们不说 line 后面那个逗号和等号。plt.plot,似乎就是要画个什么曲线图的意思(主要是 plot 可以看懂)。后面的 x ,我大概能理解,因为上面说 x 等于某个 linspace,所以这里大概也是值linspace。np.sin(x),不管 np 是什么意思吧,sin(x) 还是能理解的。然后,你说 '--' 是什么意思?linewidth=2,这个很好理解,应该是线的宽度。不过我不知道2到底是有多宽,比方说它和坐标轴的粗细比,哪个宽?很多时候我们需要画出来看看才行。LaTex 里用的是 very thick 这样的词,所以我们会猜到它是比一般的线要粗很多的。
dashes = [10, 5, 100, 5] # 10 points on, 5 off, 100 on, 5 off
dashes 是虚线的意思。但是后面中括号里的东西就比较难理解了,如果没有#后面的注释的话。再者,你看#后面的这段注释,是不是感觉和 LaTex 里的代码很像?所以哪段代码更容易理解应该很显然了吧。而且,如果不看这段注释,你知道第一个 10 表示的 on 还是 off 吗?
3. 数据文件
有很多人提到数据管理的问题。如果我没理解错,那么关键的问题就是如何利用存储在文件中的数据来画图。这一点,LaTex 完全可以做到。
用 LaTex 最方便地可以读取的数据格式是纯文本数据,比如你有一个二维点的数组,你可以存成这样:
1 -1.5
2 3.4
3 2.2
4 0.9
5 0.4
6 4.1
7 7.0
8 4.8
9 2.9
我现在有一个365天的气温数据文件 temperaturesOslo.txt (这个文件来自Temperature and rain sparklines),其中的365个数据是按照上面的格式存储的,读取这个文件并绘制出来的代码很简单:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot [mark = none, blue] table {temperaturesOslo.txt};
\end{axis}
\end{tikzpicture}
\end{document}
\addplot [mark = none, blue] table {temperaturesOslo.txt};
绘制的结果是

数据文件中,数据的分隔符并不一定要用空格,可以自定义,使用逗号什么的也没问题,当默认读取失败时,可以在代码中注明你实际使用的分隔符。
有人也提到和 MATLAB 的数据互通问题,MATLAB 保存的 .mat 文件 LaTex 读取起来不是很方便(应该有一些 LaTex 的库可以做到),主要是因为 .mat 文件是个二进制文件。但有一个变通的更简单的办法,因为 MATLAB 也可以很容易地把数据保存成纯文本的格式。
假设我有一个 MATLAB 矩阵 mymatrix,将其保存成纯文本格式的代码是
save('myfile.txt', 'mymatrix', '-ascii','-double');
得到的 myfile.txt 中的数据的格式就和我上面给出的数据格式相同。
4. 更多效果图
受不鸟了,居然几乎木有 LaTex 的图,我来贴。下面所有的图都来自TeXample.net,每张图下面都有源码所在的页面地址。
首先是和问题中给的图比较接近的点阵图

Drawing lattice points and vectors
经典的函数曲线,不管是离散点还是直接用function


三维的


网络结构也没问题

经典物理力学

化学的

元素周期表也是可以的

电路

如果你想要一个示波器

光学

分形也没什么啦

有了分形,即使是圣诞树也是有可能的

手绘风格

还有Art




可能,理论上说,其它工具也可以画出这些图,但是,我怀疑它们是否有一个和 LaTex 媲美的社区,提供这么多丰富的资源和代码。
LaTex 还有一个和stackoverflow媲美的问答网站,我日常工作中会遇到的 LaTex 相关的问题的答案,都可以在这里找到TeX - LaTeX Stack Exchange
請允許我重複回答一下、吧!美好的 R ggplot2 包 絕對值得被重複提起嗯!
複雜的和美麗的荔紙多得無以附加,其實也許你需要一些更切實的應用,比如多圖對比。下面的圖例摘自網絡,數據來自 Pippa Norris Shared Datasets,做的是 191 個國家 2000年 GDP per capita 與 Polity score of democracy 的散點圖。
先看個用 lattice 包的圖例:

再來看用 ggplot2 的效果:

且不說美不美,是不是立刻感覺信息量大了起來、解釋起來會更輕鬆?嗯,我的碩士論文裡也用了類似上圖的圖例,比較了六個箱圖。
好東西就要廣而告之。相信我!
複雜的和美麗的荔紙多得無以附加,其實也許你需要一些更切實的應用,比如多圖對比。下面的圖例摘自網絡,數據來自 Pippa Norris Shared Datasets,做的是 191 個國家 2000年 GDP per capita 與 Polity score of democracy 的散點圖。
先看個用 lattice 包的圖例:

再來看用 ggplot2 的效果:

且不說美不美,是不是立刻感覺信息量大了起來、解釋起來會更輕鬆?嗯,我的碩士論文裡也用了類似上圖的圖例,比較了六個箱圖。
好東西就要廣而告之。相信我!
如果你用 LaTeX 的话,推荐学一下 PGF/TikZ [1]。好处是直接在 LaTeX 文件中用命令绘制需要的各种图形,是我目前见过的最好的 LaTeX 图文混排工具。比如其他答案提到的工具的一个共同问题是图形和文档是分开制作的,图形中的文字和文档中的文字的字体和字号不一样。PGF/TikZ 就没有这个问题,工作原理不通。缺点是和 LaTeX 一样,学习曲线比较陡……
[1]: http://www.ctan.org/tex-archive/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf
[1]: http://www.ctan.org/tex-archive/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf
这里我先讲示意图吧。先要想好你要用这个示意图表达什么问题,然后直接用你最熟悉的工具吧,最后存成 pdf 或者 eps,然后再插入到文档中就可以了。
使用工具的时候,关键是要能够物尽其用。能把有限的工具组合起来用,例如可能在PowerPoint 里找不到好用的橡皮擦,那把一个白色的矩形放在不同的层上其实就可以实现各种效果的「橡皮擦」。画出这些示意图,其实不一定要是多么专业的软件, Keynote,PowerPoint ,只要熟练使用,我觉得这里给出的这些效果都能做出来。
另外,如果做化学、生物领域的一些工作,要画一些小分子或者大分子的图,也是一定要熟练掌握某一种软件就好,最好是用各种命令行工具,当然如果已经用图形界面很熟练了也没有必要强制自己改,熟悉的工具就最好了。
要知道,始终是你想表达的东西才是最重要的,例如:


额……以上的示意图是我随手画的,效果肯定很差啦,没有什么想表达的意味,就是想略模仿并恶搞一下题主给出的一些示意图。画上图用的工具是就是 PowerPoint(椭圆+矩形+曲线),想要说的就是这个弄起来很容易,随手一弄就能画,因为没有仔细修过,平时如果我要自己演示要用,我还会处理得细致些。如果是放到文章里,看你想要发表的杂志的类型,有时候其实并不是越华丽越好。
另外,作图的时候也是把自己常用的作图软件用熟。当然在此基础上,美观也很重要的。例如:下面的两个图其实是同一个图,只是换了配色方案。效果你可以感受一下,当然觉得哪种更好可能也跟具体的问题有关(例如下面的两个图不但是配色方案不同,在视觉上,二者所强调的区域也有所不同)。这样的东西就真的是要自己慢慢摸索了。如果你们组里面有老师或者学长学姐在作某些特定类型的图的时候有一些成熟的配色方案或者是显示为立体的方案,不论是 MATLAB 的还是 gnuplot 的等等,你都可以向他们请教,并且存在自己电脑里面随手备用。

使用工具的时候,关键是要能够物尽其用。能把有限的工具组合起来用,例如可能在PowerPoint 里找不到好用的橡皮擦,那把一个白色的矩形放在不同的层上其实就可以实现各种效果的「橡皮擦」。画出这些示意图,其实不一定要是多么专业的软件, Keynote,PowerPoint ,只要熟练使用,我觉得这里给出的这些效果都能做出来。
另外,如果做化学、生物领域的一些工作,要画一些小分子或者大分子的图,也是一定要熟练掌握某一种软件就好,最好是用各种命令行工具,当然如果已经用图形界面很熟练了也没有必要强制自己改,熟悉的工具就最好了。
要知道,始终是你想表达的东西才是最重要的,例如:


额……以上的示意图是我随手画的,效果肯定很差啦,没有什么想表达的意味,就是想略模仿并恶搞一下题主给出的一些示意图。画上图用的工具是就是 PowerPoint(椭圆+矩形+曲线),想要说的就是这个弄起来很容易,随手一弄就能画,因为没有仔细修过,平时如果我要自己演示要用,我还会处理得细致些。如果是放到文章里,看你想要发表的杂志的类型,有时候其实并不是越华丽越好。
另外,作图的时候也是把自己常用的作图软件用熟。当然在此基础上,美观也很重要的。例如:下面的两个图其实是同一个图,只是换了配色方案。效果你可以感受一下,当然觉得哪种更好可能也跟具体的问题有关(例如下面的两个图不但是配色方案不同,在视觉上,二者所强调的区域也有所不同)。这样的东西就真的是要自己慢慢摸索了。如果你们组里面有老师或者学长学姐在作某些特定类型的图的时候有一些成熟的配色方案或者是显示为立体的方案,不论是 MATLAB 的还是 gnuplot 的等等,你都可以向他们请教,并且存在自己电脑里面随手备用。


各位科学家们,
我虽然无法看懂你们的专业论文中的插图,
但是我作为一个助人为乐的设计师,
常常帮助你们这样的专业人士“美化”插图。
例如:


很多时候,被“美化“插图的原作者,都会感觉到,新图和原图的差别。虽然这些图中的内容,是我不了解的知识,但是并不阻碍我通过制图软件把图做漂亮。
漂亮的图和丑陋的图的区别:
1.均匀的线条
有时候科学家们从这里抓一个图,那里生成一个图,每个图因为放大缩小的关系,线条都变得粗细不同,这样不会好看的。我修改的第一步一般是把所有线条变成一样粗细。
2.有规划的色彩
同理,如果色彩纷乱,没有规划,看上去也会大打折扣。所以建议一开始就对色彩进行一个规划,多图都统一一下色调。
3.统一的图形语言
这里是锐利的形状,那里又是温柔的圆角,另外一个地方居然是三维的,这就好比论文第一段和第二段的语言风格不一样,这样可不行。一定要用同一种图形语言来制图。就算全部用儿童手绘效果,也比参杂了水平不同的各种图形语言要强啊。
好啦,作为经常帮人美化插图的人,我也只能从图的角度随便说一说。其实,如果图的内容是正确的,想要图好看最主要要提高的能力绝对不是制图能力,而是审美能力。当你能够清楚地知道好看是怎么实现的,什么样的东西不好看的时候,你就能够轻松地运用自己熟悉的软件,制作出非常好的插图啦。如果有什么问题可以评论问我,我可以从设计的角度和科学家们一起探讨。
我虽然无法看懂你们的专业论文中的插图,
但是我作为一个助人为乐的设计师,
常常帮助你们这样的专业人士“美化”插图。
例如:


很多时候,被“美化“插图的原作者,都会感觉到,新图和原图的差别。虽然这些图中的内容,是我不了解的知识,但是并不阻碍我通过制图软件把图做漂亮。
漂亮的图和丑陋的图的区别:
1.均匀的线条
有时候科学家们从这里抓一个图,那里生成一个图,每个图因为放大缩小的关系,线条都变得粗细不同,这样不会好看的。我修改的第一步一般是把所有线条变成一样粗细。
2.有规划的色彩
同理,如果色彩纷乱,没有规划,看上去也会大打折扣。所以建议一开始就对色彩进行一个规划,多图都统一一下色调。
3.统一的图形语言
这里是锐利的形状,那里又是温柔的圆角,另外一个地方居然是三维的,这就好比论文第一段和第二段的语言风格不一样,这样可不行。一定要用同一种图形语言来制图。就算全部用儿童手绘效果,也比参杂了水平不同的各种图形语言要强啊。
好啦,作为经常帮人美化插图的人,我也只能从图的角度随便说一说。其实,如果图的内容是正确的,想要图好看最主要要提高的能力绝对不是制图能力,而是审美能力。当你能够清楚地知道好看是怎么实现的,什么样的东西不好看的时候,你就能够轻松地运用自己熟悉的软件,制作出非常好的插图啦。如果有什么问题可以评论问我,我可以从设计的角度和科学家们一起探讨。
OriginLab 方便快捷
python+numpy+matplotlib 强大、开源、高质量
一般单纯的画图,或者简单的数据处理(多项式拟合、fft、包络等等)用OriginLab 。
复杂的数据处理,或者要与设备相连实时处理实验数据就用python的那套方案。
python+numpy+matplotlib 强大、开源、高质量
一般单纯的画图,或者简单的数据处理(多项式拟合、fft、包络等等)用OriginLab 。
复杂的数据处理,或者要与设备相连实时处理实验数据就用python的那套方案。
先上结论:
不用Excel,用Matlab, Visio, Mathematica, WolframAlpha等工具绘图。
可尝试学习http://Paint.NET 、 Pixelmator 、 GeoGebra工具进行比较学习。
————————解释说明分割线——————————
Excel:
在我有限的科研生涯中,用Excel几乎是不专业的代名词,从来没有看到Excel下画出的优美漂亮的图表,所以我至少是使用Matlab或者Mathematica作图,后者还在学习中。
Matlab:
Matlab的使用是将Excel中的数据以矩阵形式导入到Matlab的向量空间中,然后用Plot函数等其他作图的函数作出基本的图形以后,用菜单上选择Plot Toolkit工具(具体名字我忘了)对函数曲线中的表头、图例、箭头指示、参考线等进行微调。效果如下(自己做的真是渣啊= =):

Visio:
像下面这种简单的图形绘制,利用各种基本图形如线条、箭头和弧线,再善于利用Visio的对齐功能,就可以作出比较漂亮的图形,注意变量的格式规范如斜体、字体用Times New Roman字体,另外流程图用Visio绘制最佳。


流程图一般用Visio,遵循设计的基本原则如对齐与保持大小一致。
WolframAlpha:
神器中的神器,除了计算功能强大,画出的函数图像也相当优美,画函数图象的时候直接输入函数图像即可自动生成,效果如下:

接下来由请大神@matrix67出场:
@matrix67 在他的博客中提到



以上。
不用Excel,用Matlab, Visio, Mathematica, WolframAlpha等工具绘图。
可尝试学习http://Paint.NET 、 Pixelmator 、 GeoGebra工具进行比较学习。
————————解释说明分割线——————————
Excel:
在我有限的科研生涯中,用Excel几乎是不专业的代名词,从来没有看到Excel下画出的优美漂亮的图表,所以我至少是使用Matlab或者Mathematica作图,后者还在学习中。
Matlab:
Matlab的使用是将Excel中的数据以矩阵形式导入到Matlab的向量空间中,然后用Plot函数等其他作图的函数作出基本的图形以后,用菜单上选择Plot Toolkit工具(具体名字我忘了)对函数曲线中的表头、图例、箭头指示、参考线等进行微调。效果如下(自己做的真是渣啊= =):

Visio:
像下面这种简单的图形绘制,利用各种基本图形如线条、箭头和弧线,再善于利用Visio的对齐功能,就可以作出比较漂亮的图形,注意变量的格式规范如斜体、字体用Times New Roman字体,另外流程图用Visio绘制最佳。


流程图一般用Visio,遵循设计的基本原则如对齐与保持大小一致。
WolframAlpha:
神器中的神器,除了计算功能强大,画出的函数图像也相当优美,画函数图象的时候直接输入函数图像即可自动生成,效果如下:

接下来由请大神@matrix67出场:
@matrix67 在他的博客中提到
Q: 你的 Blog 配图都好精致!究竟是用什么画图的呢?以下是图形范例:
A: 我用 http://Paint.NET 、 Pixelmator 、 Mathematica 、 GeoGebra 等工具画图。配图的秘诀就是背景透明化、图形反锯齿化、注重色彩、多用 png 、图内字体大小与正文一致。



以上。
前几天听报告的时候,被一个3D数据图震惊了,可视化做得太好了。交流的时候赶紧请教咋做的,答曰:"我提供数据,图是请计算机学院的人做的。"
这给我一个启发:论文作图一般也就是IDL那些,同质化严重,要想做出真让人眼前一亮的插图,找专业的啊!
这给我一个启发:论文作图一般也就是IDL那些,同质化严重,要想做出真让人眼前一亮的插图,找专业的啊!
现今严谨的学术圈流行的:
PGF/TikZ:定性图,精细示意图,简单定量图,数据图表
Asymptote:复杂定量图,三维矢量图
另外还有历史悠久的MetaPost和PSTricks,但总的来说完全可以被以上两个更优秀的后辈替代。
楼主列的这些图,是TikZ的专长,用TikZ画可以做到完美,特别是与LaTeX文档的整体交互,比用一般绘图软件好得多。例如字体匹配,与正文的参数传递,对图的模块化引用等。
缺点是学习曲线过陡,非排版强迫症患者坚持不下来。除了画数据图表的子集pgfplots可以分分钟速成外,PGF/TikZ的其他功能,上手需要一两个星期不停地钻研,精通则需要一两年。
至于Asymptote,表达力强,效果碉堡,你可以把它当成封装了高级绘图命令,然后输出矢量图的OpenGL。它对编程能力的要求同样很高。
PGF/TikZ:定性图,精细示意图,简单定量图,数据图表
Asymptote:复杂定量图,三维矢量图
另外还有历史悠久的MetaPost和PSTricks,但总的来说完全可以被以上两个更优秀的后辈替代。
楼主列的这些图,是TikZ的专长,用TikZ画可以做到完美,特别是与LaTeX文档的整体交互,比用一般绘图软件好得多。例如字体匹配,与正文的参数传递,对图的模块化引用等。
缺点是学习曲线过陡,非排版强迫症患者坚持不下来。除了画数据图表的子集pgfplots可以分分钟速成外,PGF/TikZ的其他功能,上手需要一两个星期不停地钻研,精通则需要一两年。
至于Asymptote,表达力强,效果碉堡,你可以把它当成封装了高级绘图命令,然后输出矢量图的OpenGL。它对编程能力的要求同样很高。
收起
匿名用户
商业绘图软件:
- OriginLab
- SigmaPlot
- Grapher
感觉乃们回答都曲解楼主的问题了吧……撸主摆出来的例子是“示意图”,不是“数据图”。所以撸主才加了一句“好吧,我承认有些不那么绚烂”,意思估计是说并不是追求data visualization那么牛逼闪闪的效果,而是给人一种幽幽的酷炫碉堡的感觉。如果没理解错的话,画示意图最好的工具就是visio了吧;曲解了的话,权当给大家做个补充。
个人认为visio画示意图最重要的有两点,一是如何清晰表达概念,二是如何清晰的呈现图像。
前者跟论文作者对所画示意图要表达知识内容的理解深度有关。对初学者来说,要想表现出自己对这幅图所表达的知识理解得比较透彻,一个简单的方法是提高图片的信息量。举个栗子,拿撸主摆出来的图片来说,一幅图里其实表达了好几部分内容,如,不同cell在阵列中的排列规则,n/n+1所表示的特性曲线,IP/BI(什么东西?=。=)之间的关系等等。这样一来,对论文的读者来说,这幅图就很好的传达了作者对知识的理解程度,细节的呈现也加深了读者对理论的印象,给人以“高大上”的感觉。当然,进阶到高级阶段,无脑线性堆叠信息量就未必能起到预期的效果了。可能一些无关的细节需要作者根据自己提升了的知识水平进行修剪,让图片看起来不仅信息丰富,而且简洁美观。
另一点是提高图像的清晰度。无论是用MS Word或者LaTeX编辑论文,插入的图片都要保证很高的清晰度。对于读者来说,高质量的图片(假如不是矢量格式)即便是放大很多倍也还是可以清晰的看出来图片中的细节。因为个人偏好LaTeX,所以visio画好的图片一般会转成eps格式再插入论文。这样一来,即使是细节再丰富、信息量再巨大的图片,放在论文中也可以清晰的显示出来。在这里分享几个插入高质量图片的方法,不足之处欢迎指正。
1. visio转eps
<方法一> 简单粗暴control c control v把visio图片复制到adobe illustrator (AI)里,转成eps即可。
<方法二> 另存visio图片为pdf格式,用pdf2eps等工具转换成eps格式图片;
<方法三> 安装universal printer,把visio图片打印成ps格式文件,然后用ghostscript转换成eps格式文件。
简评:第一种方法最简单,但有个问题是,visio里图片的颜色、填充等属性在转换之后可能会有意想不到的变化;后两种方法不会出现图片属性改变的问题,但相对略繁琐。
2. eps转wmf或png
用powerpoint做presentation的时候,eps格式的图片无法直接插入,肿么办?
<情况一> 如果该eps文件是visio转的,直接在powerpoint中插入object,搜索visio文件即可得到高清晰的图片;
<情况二> 如果该eps文件是数据画图工具(MATLAB,origin等)直接生成的,可将该文件在AI中打开,文件中找save for windows选项,保存成png格式差不过就是位图能达到的最清晰的效果了。
以上是个人对画示意图的理解以及一些小经验的分享。至于数据图,楼上众神已经总结了很多很好的办法了。
除此之外,学术论文插图的技巧还有很多。欢迎大家继续讨论和补充。
个人认为visio画示意图最重要的有两点,一是如何清晰表达概念,二是如何清晰的呈现图像。
前者跟论文作者对所画示意图要表达知识内容的理解深度有关。对初学者来说,要想表现出自己对这幅图所表达的知识理解得比较透彻,一个简单的方法是提高图片的信息量。举个栗子,拿撸主摆出来的图片来说,一幅图里其实表达了好几部分内容,如,不同cell在阵列中的排列规则,n/n+1所表示的特性曲线,IP/BI(什么东西?=。=)之间的关系等等。这样一来,对论文的读者来说,这幅图就很好的传达了作者对知识的理解程度,细节的呈现也加深了读者对理论的印象,给人以“高大上”的感觉。当然,进阶到高级阶段,无脑线性堆叠信息量就未必能起到预期的效果了。可能一些无关的细节需要作者根据自己提升了的知识水平进行修剪,让图片看起来不仅信息丰富,而且简洁美观。
另一点是提高图像的清晰度。无论是用MS Word或者LaTeX编辑论文,插入的图片都要保证很高的清晰度。对于读者来说,高质量的图片(假如不是矢量格式)即便是放大很多倍也还是可以清晰的看出来图片中的细节。因为个人偏好LaTeX,所以visio画好的图片一般会转成eps格式再插入论文。这样一来,即使是细节再丰富、信息量再巨大的图片,放在论文中也可以清晰的显示出来。在这里分享几个插入高质量图片的方法,不足之处欢迎指正。
1. visio转eps
<方法一> 简单粗暴control c control v把visio图片复制到adobe illustrator (AI)里,转成eps即可。
<方法二> 另存visio图片为pdf格式,用pdf2eps等工具转换成eps格式图片;
<方法三> 安装universal printer,把visio图片打印成ps格式文件,然后用ghostscript转换成eps格式文件。
简评:第一种方法最简单,但有个问题是,visio里图片的颜色、填充等属性在转换之后可能会有意想不到的变化;后两种方法不会出现图片属性改变的问题,但相对略繁琐。
2. eps转wmf或png
用powerpoint做presentation的时候,eps格式的图片无法直接插入,肿么办?
<情况一> 如果该eps文件是visio转的,直接在powerpoint中插入object,搜索visio文件即可得到高清晰的图片;
<情况二> 如果该eps文件是数据画图工具(MATLAB,origin等)直接生成的,可将该文件在AI中打开,文件中找save for windows选项,保存成png格式差不过就是位图能达到的最清晰的效果了。
以上是个人对画示意图的理解以及一些小经验的分享。至于数据图,楼上众神已经总结了很多很好的办法了。
除此之外,学术论文插图的技巧还有很多。欢迎大家继续讨论和补充。
化学系的,
我讨厌编程,只会用带帮助的Mathematica,各种记不住函数名和语法……
就这样,我用Illustrator、origin、chemoffice、Visio画了我遇到的所有图。
chemoffice画有机化学结构式和仪器,origin画统计图,Visio画流程图,Illustrator画晶胞、配位多面体等等其他的……
哦,对了,还有diamond,不过这个软件得到晶胞图是自动生成的,需要空间群、衍射等数据。
也附加几个图吧……楼上用Matlab、LaTex、Python的大牛们别笑我。LaTex这反化学人类的东西,简直学不来,排个论文烦死了……
先是Illustrator画的……尖晶石这个是一次无机合成化学课的作业题。全系没几个人会画啊,都徒手画在纸上……
实在抱歉,由于这是专业课作业,为了防止下一届学生抄袭,加水印吧。

然后是Visio画的,如果有人经常用百度知道,也常看看化学分类的画,你肯定特熟悉这种风格……
origin主要做数据分析,图就不放了。
化学系的孩纸没那么高端啊……高达上的软件玩不转……
还好,我的专业方向也用不到那些复杂的图,黑白图足以!
还是比较喜欢所见即所得,代码之类的东西……唉……
刚才看到有人说Excel是不专业的代名词,我是十分不同意的。
Excel也可以十分“专业”。比如我在本科2年级干的事:老师要求必须用origin画图,但当时觉得那玩意儿英文的,还不顺手(刚开始学),哪有Excel好用啊(小学3年级学的Excel,学校开电脑班)。于是用Excel模仿出了origin图的效果……没有一个人看出来哦。
包括求导,都是在Excel里面做的。基础物化实验,数据不太好啦,别介意嘛……

图片如需转载、商业用途 [特别是尖晶石那一张图]
请联系作者(好吧,就这破图,谁愿意用啊
我讨厌编程,只会用带帮助的Mathematica,各种记不住函数名和语法……
就这样,我用Illustrator、origin、chemoffice、Visio画了我遇到的所有图。
chemoffice画有机化学结构式和仪器,origin画统计图,Visio画流程图,Illustrator画晶胞、配位多面体等等其他的……
哦,对了,还有diamond,不过这个软件得到晶胞图是自动生成的,需要空间群、衍射等数据。
也附加几个图吧……楼上用Matlab、LaTex、Python的大牛们别笑我。LaTex这反化学人类的东西,简直学不来,排个论文烦死了……
先是Illustrator画的……尖晶石这个是一次无机合成化学课的作业题。全系没几个人会画啊,都徒手画在纸上……
实在抱歉,由于这是专业课作业,为了防止下一届学生抄袭,加水印吧。

然后是Visio画的,如果有人经常用百度知道,也常看看化学分类的画,你肯定特熟悉这种风格……

化学系的孩纸没那么高端啊……高达上的软件玩不转……
还好,我的专业方向也用不到那些复杂的图,黑白图足以!
还是比较喜欢所见即所得,代码之类的东西……唉……
刚才看到有人说Excel是不专业的代名词,我是十分不同意的。
Excel也可以十分“专业”。比如我在本科2年级干的事:老师要求必须用origin画图,但当时觉得那玩意儿英文的,还不顺手(刚开始学),哪有Excel好用啊(小学3年级学的Excel,学校开电脑班)。于是用Excel模仿出了origin图的效果……没有一个人看出来哦。
包括求导,都是在Excel里面做的。基础物化实验,数据不太好啦,别介意嘛……

图片如需转载、商业用途 [特别是尖晶石那一张图]
请联系作者(好吧,就这破图,谁愿意用啊