如何在論文中畫出漂亮的插圖?

經常看到別人論文中畫出各種絢爛的插圖,我想知道這些圖都是用一些什麼樣的軟體畫出來的。比如下面給出的幾張,好吧,我承認有的並不那麼絢爛,但用什麼樣的軟體比較合適呢?具體答案可以拓展到更為廣遠的作圖領域。


遇到安裝問題的請嘗試Anaconda這個Python發行版。下載安裝後直接使用即可,它幾乎預裝了所有要用到的科學計算及可視化的庫。

有盆友在評論里說希望能有完整的教程,確實就這個答案來說,離實際使用還有很大的距離,網上相關的中文資料也不多。不過真要寫起來這個答案也裝不下,況且寫在這個問題下也不是很恰當。等到那天我有專欄了再說吧,到時候也許會寫一個關於可視化的系列教程。

=======分割線======

強烈推薦 Python 的繪圖模塊 matplotlib: python plotting 。畫出來的圖真的是高端大氣上檔次,低調奢華有內涵~ 適用於從 2D 到 3D,從標量到矢量的各種繪圖。能夠保存成從 eps, pdf 到 svg, png, jpg 的多種格式。並且 Matplotlib 的繪圖函數基本上都與 Matlab 的繪圖函數名字都差不多,遷移的學習成本比較低。開源免費。如圖所示(題目描述中的圖在最後):
(以下圖片均引用自 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(譯))

你能夠把它變成這個樣子:

你能夠把它變成這個樣子:

如果再搭配上 IPython 作為運行終端(這張圖是自己的~):

如果再搭配上 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。

廢話不多說,上圖就是王道。
(一下圖片來源網路)


有人可能會說需要複雜的設置,其實也不用。比如上邊這幅圖,只需要多加一個參數就好:

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

哼哼,完爆了吧~~~~(≧▽≦)/~


高能預警!!!多圖殺貓!!!我是認真的!!!

首先發個鏈接:http://www.bugman123.com/index.html 這哥們的 visualization 能力完爆所有答案(包括我的)加起來,實在是牛逼……

==

這題目都給寫成這樣了,我就不指望贊了。你們就當福利好了。

這個回答里的圖都是我自己畫的,盜圖必…… 算了你們想拿去玩就拿去吧……

看到這個問題的時候我有點糾結問題里的最後一張圖是怎麼畫的,不過仔細看了一下我覺得應該是二維空間里畫的。所以 Asymptote 和 Metapost 都可以。

對了補充一點,在我的另一個回答里(當別人問你的研究有什麼實際價值的時候,你是怎麼回答的?),我提到對於科研的價值,科研圈和大眾的定義是不一樣的。對於「漂亮的插圖」也是一樣。君不見大眾媒體里少有數據圖,就算有也是寥寥幾筆,fancy 為主,使用符合當前大眾審美的風格(比如現在是扁平、極簡),測量從來不畫 errorbar,甚至極簡風格的連坐標軸都不畫,一條顏色風騷的曲線牛逼閃閃。對於大眾來說,看起來牛逼、fancy 才是漂亮。但是在科研圈裡顯然不是這樣,而且不同的學科之間對圖的嚴謹、清晰程度的要求也不一樣。所以單純地說一個插圖「漂亮」其實沒什麼意義。

——————————————
正文:

我覺得這個問題讓我答簡直太合適了…… 只要是用來畫圖的玩意我基本都用過,也都會。這個回答主要介紹工具,為什麼不說方法呢?因為感覺好像沒什麼好說的,你覺得什麼地方難看,改一下就行了啊…… 從最簡單的開始吧。

  • 菜鳥級:

Matlab, MathematicaR 就不說了。

Python 有個著名的庫叫 Matplotlib, 主要用來數據作圖,但本身帶有層次較低的 API, 原則上可以用來畫任意種類的圖。這玩意自帶 TeX 數學語法。數據作圖效果這樣:


喪病一點可以這樣:

這種牛逼閃閃的等高線也是小意思~~


這麼多點也是沒問題的:


這玩意極其的靈活,比如 Mathematica 有個功能就是畫函數曲線的時候自動選擇合適的採樣率,斜率或者曲率比較大的地方會自動使用高採樣率。於是我在 Python 里也實現了一個,這樣就可以用 Matplotlib 無腦畫函數曲線了,比如這樣:

Gnuplot. 純畫圖方面與 Matplotlib 不相上下,優點是快,超級快。圖就不放了,和 Matplotlib 差不多。

  • 普通級:

Metapost. 脫離菜鳥級以後,我們離開了 API 和程序的地盤,開始擼繪圖語言。首先當然要介紹大名鼎鼎的 Metapost. 這貨的歷史最早要追溯到 Knuth 大神設計的 Metafont, 但是 Metafont 是用來製作字體的,於是一幫人仿照 Metafont 設計了通用繪圖語言 Metapost. 寫程序畫圖相對於使用 GUI 工具來說最大的好處就是可以精確地控制,和自動化。這種繪圖語言尤其適合畫示意圖。還是上圖吧……



費曼圖什麼的簡直就是不在話下…… 其實我是不太明白為什麼有些軟體畫出的費曼圖那麼難看的……


然後這是我用 Metapost 給我的統計力學筆記擼的封面:


Asymptote. 有一小撮人用 Metapost 不爽,畢竟語法太古老了,於是搞出了類 C++ 語法的面向對象語言 Asymptote, 也是醉了…… 除了寫出來比 metapost 好看一些意外,基本上差不多:



初中幾何題都是可以的。


這玩意比較逆天的功能是 3D 矢量作圖~~ 你看我這麼一比劃,你不就知道面心立方

的晶胞是什麼樣的了么~~

你看我這麼一筆劃,你不就知道 RGB 空間是怎麼嵌在 xyz 空間里的了么~~

繼續

嗯,還有好多圖懶得找了,Asymptote 就先這樣吧。

…… …… ……


&<更新 2016-01-22&>
最近又折騰了一下傳說中的 D3.js. 這個東西的核心實際上是一套 selector 實現和把數據綁定到 DOM 上的機制,非常緊湊。然後 HTML 的 DOM 里可以包含 SVG, 這就很好玩了。

我試了一下數據作圖


然後順便擼了個 Game of Life, 你們可以玩玩~~ (暫不支持移動端……),長這樣:


看上去挺好用,對吧?但是!!這個東西其實並不是特別適合給論文出圖,原因是你用的時候需要把 SVG 保存下來。SVG 是 DOM 的一部分,一般只能用 Javascript 把 SVG 序列化,然後拋出一個文件讓你在瀏覽器里下載,或者打開一個新窗口你手動另存為什麼的,這不是關鍵,關鍵是我們寫 SVG 的時候經常會用 CSS 來指定樣式,這樣如果你需要所有的線都粗一點,只要改下 CSS 就好,不用碰邏輯。然而你序列化 SVG 的時候是沒法同時序列化 CSS 的(吧?)……………………………………
&

  • 地獄級:

這個級別的工具當之無愧地給了 Postscript 這個基於堆棧的底層頁面描述語言,這個語言是如此的強大,以至於 Adobe 後來不得不發展了簡化版(更易於實現):EPS 和 PDF. 這個語言的神奇之處就是它底層到用戶幾乎忘了它的存在,但同時它寫起來卻不是很費勁。如果你玩過 RPN 計算器,就很容易理解 PS 的邏輯。這玩意最大的好處它的語法十分簡單,無論你用什麼語言來計算,都可以方便地生成 PS 代碼,而不需要考慮你用的語言是否有好用的繪圖 API. 比如我之前玩元胞自動機的時候就可以用計算的代碼直接生成圖形:

放大一點可以看到我在圖上直接寫了格點的編號,方便調試~~

  • 奇葩級:

最後這個級別主要是給一些特殊用途的工具。

Graphviz. 這是一個圖可視化工具包,可以可視化各種無向圖和有向圖。前幾天我剛剛用它畫過一個流程圖:


Blender. 這是一個自由的通用 3D 建模/著色/渲染/動畫套件,我基本上是看著它一點點從一個土了吧唧的山寨三維軟體逐漸進化成現在 Maya 級別的 3D 套件的。你們都在 Nature 雜誌上見過那種很漂亮很 Fancy 但其實沒什麼用的三維渲染圖對吧?我只能說…… 他們如果雇我畫圖的話會更漂亮更 fancy…

不過在放 fancy 圖以前,先放個看起來不那麼 fancy 的:

畫這個圖以前我以為在 Blender 裡面放幾個立方體幾個球打開卡通渲染就行了……
……
……
……
我簡直就是拿衣服。這貨最後用了三個渲染層才搞定…… 如果有人知道更簡單的方法請告訴我……

下面放 fancy 圖~~

小清新洛倫茲吸引子:


小清新某分子:

這張圖的源文件(分子略不同,注意有三個 scenes 需要渲染):https://drive.google.com/file/d/0B9ybmL_hSiV-U2NBQUxCLXJ4ejQ/view?usp=sharing


嗯,就先這樣吧~~ 想起什麼再更新……

&<更新&>

這兩天在幫妹子折騰這樣一個分子:

最終在 node editor 里擼出了這個

感覺放在文章里挺不錯。方法是用一個 tonemapping node... 詳情見 Sky Watch / Molecule visualization with Blender

然後給妹子渲染的另一個:

&

更新:

Pov-ray: 好像還沒有回答里提及這個。這是一個場景描述語言 + 渲染器,那個渲染器還是不錯的,就是比較慢。這玩意有兩種用法:

  1. 當渲染器用,主要是在別的 3D 軟體中把場景導出成 pov 文件,然後直接渲染,沒什麼技術含量
  2. 把數學公式寫進去畫曲面。這個玩法比較特別,配合 pov 強大的渲染器可以擼一些非常怪異的東東,但是…… Blender 是有 Python API 的,所以其實 Pov-ray 能擼的 Blender 都能擼。我之前有一段時間特別痴迷這個,後來發現然並卵,用 Blender 就行了……

最後再把之前那個鏈接發一下:http://www.bugman123.com/index.html 實在是太牛逼,不服不行……


入睡失敗,排版強迫星人亂入歪題,安利一下自己的繪圖思路和經歷。

  • 論文插圖終歸是內容導向,數據少/邏輯簡單很難畫出炫酷的圖;
  • 專業圖盡量用對應的專業軟體畫;
  • 大力出奇蹟,插圖最終效果跟投入的時間成本(學習軟體+繪製+調試)成正比,只要耐心好學多嘗試,哪怕MS的Office系列也不會讓你失望;
  • 繪圖最重要的是專業性,其次關注「矢量+配色+字體+布局」;
  • 有時瓶頸在於思路而非工具,做科研的多瀏覽Nature和Science,有很多值得借鑒的繪圖方案;
  • 有精力就再去學學AI和PS吧,後期如虎添翼。

按時間倒序和使用頻率介紹我主要使用的繪圖軟體,專業相關度較高。圖片引用來源均已標明,其餘為自己繪製,如有侵權麻煩告知(圖片放大觀看可還原繪圖軟體輸出效果)。

1. gnuplot
剛完成的碩士論文主要用了LaTeX+gnuplot,gnuplot勝在免費、繪圖效果清爽、專業認可,輸出終端多樣化,插值優化做得也不錯,用下來感覺基本可替代Matlab系和Origin,學習成本不低。

  • 簡單的2D圖可以畫成這樣



  • 複雜一點的信息圖/3D函數/極坐標圖/pm3d自然也不在話下

推薦博客http://blog.sciencenet.cn/blog-373392-535918.html的教程,非常適合新手快速入門。

圖片來源:

圖片來源:http://blog.sciencenet.cn/blog-373392-535918.html


2. PowerPoint
只有想不到,沒有畫不了,比起其他軟體現成的模型模塊,用PowerPoint造輪子的優點在於細節由自己掌控。學習成本低,個人發揮空間大!

  • 反應器示意圖

用簡單的形狀和線條拼接,自由度高,細節突出(恩,我就是不習慣用Visio)。這張構圖有參照對象,繪圖時間控制在半小時左右。

  • 原理示意圖

PowerPoint作圖方式勝在可視化、直觀和簡便,可量產各種扁平化(個人喜好)示意圖。

Nature、Science上的插圖偏立體風,通過多圖形多色塊套用和「填充效果」中的「漸變」即可實現(參數怎麼調很考究)。下面這張只花了十分鐘,要進一步改進可細化DNA結構,再給通道中的截面加上多重線性漸變。

Nature、Science上的插圖偏立體風,通過多圖形多色塊套用和「填充效果」中的「漸變」即可實現(參數怎麼調很考究)。下面這張只花了十分鐘,要進一步改進可細化DNA結構,再給通道中的截面加上多重線性漸變。

  • 彩色信息圖

如果需要用多色塊表達內容,在協調顏色搭配時Office的優勢盡顯(用命令行和RGB代碼調試的懂我)。

  • 多內容拼接

下面這張幻燈片用Origin作圖+PowerPoint拼裝,內容不打碼,論文已發Metabolic Engineering。

3. Origin
使用時間最長的數據繪圖軟體,在普通工科院系Origin就是專業論文繪圖標配。功能豐富全面,多圖層在2D數據處理上非常實用(3D的沒畫過),簡單畫畫容易上手,深入之後學習曲線開始變得平緩。由於渲染效果和自由度的限制,畫出的圖都有一種標誌性的濃郁的Origin風。操作系統不太友好、易崩潰,只支持Windows系統。學習成本中等!

圖片來源:

圖片來源:OriginLab - Origin and OriginPro

重申一遍,圖層疊加+矢量圖輸出+可視化操作足以滿足工科生基本需求了,貪多嚼不爛。

4. Matlab
工科生必備軟體,工具包實在強大,數學實驗、反應模擬、系統優化各種課程都離不開它。但在繪圖方面硬傷也很明顯,鋸齒現象明顯、字體/坐標軸和3D配色簡直要逼死強迫症……研究生階段搞定優化大作業拿了前3%後就把Matlab扔了。學習成本中等!

恩,matlab的畫風大家都很熟悉了。

圖片來源:

圖片來源:Team:NCTU Formosa/modeling

5. 提到Matlab就想起了本科虐人的COMSOL和化學反應工程模塊,也印證了文首觀點「專業圖要用專業軟體」,COMSOL的強大在於多場耦合功能突出和各種自定義PDE方程、邊界和平衡條件設置簡便,系統相對友好(並不)。我最好的朋友出國前把他的真傳——一本磚頭那麼厚的COMSOL tutorial送給了我,後來我再也沒做過模擬模擬,而他去了美國的COMSOL工作(這才是我安利的原因,Doge臉),下圖是本科做過的一個案例,自己的圖找不到了……學習成本高!

圖片來源:

圖片來源:Radial Effects in Tubular Reactors


6. Circos
最近新上手的利器,為繪製全基因組特徵圈圖而生的信息圖軟體,實際上可用來畫各種圈狀信息圖,功能強大令人咋舌,配色美觀耐看(開發者畢竟是專職攝影師),不太方便的是需要安裝Perl運行,學習成本中等,國內教程少。

恩,簡陋版的是我的論文圖片。

恩,簡陋版的是我的論文圖片。


圖片來源:Genomic Data // CIRCOS Circular Genome Data Visualization


7. SnapGene
畫質粒的軟體用過不少,SimVector/Plasmid Processor/pDRAW32/Gene Construction Kit/Ape等等,從功能集成和輸出效果來看,還是SnapGene更勝一籌,操作設計也做得很贊,學習成本低。


商業化質粒可直接查詢Vector Database,細節做得相當考究,可編輯餘地適中。

8. 化學式繪圖軟體優先順序:ChemDraw&>tikz的chemfig包 &>PowerPoint(黑歷史),學習成本低。補充一句,下面第一張分子式是我組會報告上畫的,鍵角鍵長不符合正式投稿的美國化學會(ACS)期刊的化學式統一格式——ACS1996標準,使用ChemDraw的話直接在「file」或者「object」中選擇「Apply object settings from」選項則可一鍵改成ACS1996和其他一些雜誌要求的標準格式。


9. 統計類可視化軟體
根據google scholar數據統計,2005年之後SPSS和SAS的使用熱度都跌得厲害,R和STATA則呈抬頭之勢(諷刺的是這張統計圖是用ggplot2畫的)。ggplot2繪圖效果請參見本問題其他回答,因為沒學/用過在此不作任何評價,謝知友提醒。

圖片來源:

圖片來源:Discovering Statistics: The Blog: July 2012

本科階段做項目和作業用過STATA,估計工作後會用SAS。STATA的統計回歸功能相對強大,但可視化做得實在難以恭維,在官網上隨便扒個圖來感受下。學習成本中等!

圖片來源:

圖片來源:Quantile–normal plot

SAS等學了之後再填坑。

10. 化工流程模擬軟體
Aspen Plus和HYSYS都用過,後者上手明顯比前者容易,但做出來的圖肯定跟美觀不沾邊啦,就是專業的模擬可視化軟體,學習成本高!放在這就是為了說明化工和化學不是一回事!化工和化學不是一回事!重要的事情要說兩遍!

Aspen Plus 流程圖來源:

Aspen Plus 流程圖來源:5.2 Hybrid VSA/MEA scrubbing process

HYSYS流程圖來源:

HYSYS流程圖來源:Process Simulation

AutoCAD只學了一學期,晶體/蛋白立體結構主要用RASMOL,略過不提。
估計畢業之後就很難有機會再用到上面大部分軟體了(關鍵也用不起),本答案權作紀念,感謝閱讀。


學術插圖基本上可以分成兩類:一是用來展示實驗或者模擬數據的圖表,二是用來表示運行機理的示意圖。

對於前者,有很多非常優秀且專業的作圖軟體,前面的答案說了很多了。我不是很擅長這個部分,大家可以直接看其他回答。

對於後一種,則一般需要藉助Adobe Illustrator,CoreDraw,乃至一些3D作圖軟體來做。但這些軟體功能強大,但學習起來難度比較大。而且目前這個問題下的答案對這個問題好像討論的很少。所以我這個回答,主要是給大家介紹一下,如何使用人人都會用的PowerPoint快速製作一些簡單的三維圖形。

PowerPoint不是專門的製圖工具,它的三維製圖能力很弱,具體表現在:它的三維造型功能很弱,不支持貼圖,也沒法渲染,甚至連旋轉都不夠直觀,而且一旦多個對象組合之後,多有對象都只能使用同一個旋轉角度,不能獨自進行調整。

但PowerPoint的優勢也很突出:首先是非常簡單易學,應付一些簡單的論文示意圖(答主超分子化學方向,專業所限,大神見笑),還是有它的價值。其次,使用PowerPoint直接作圖有一個很大的好處,做好的示意圖可以迅速的在PPT中轉變成原理動畫,用到平時的Presentation里非常炫酷,尤其是在一些報獎中,這種動畫可以極大降低評委理解的門檻。

為了展示PowerPoint的三維製圖能力和動畫效果,我完全使用PowerPoint2016做了一個演示小動畫,這個自然不是什麼學術插圖,只是用來讓大家看一下PPT的功能是否能夠達到製作一些簡單的學術插圖的程度:

視頻封面完全使用PPT製作的三維動畫_騰訊視頻v.qq.com視頻

這樣的製圖和動畫在PPT里是可以比較簡單地製作出來的,但要求你要首先非常熟悉PPT三維製圖的各項參數的基本含義,所以我這裡給了一個非常基礎的教程。

坦白說,這個教程無法保證你能夠做出上面的動畫,不過至少還是可以畫出這樣的圖:


以下內容轉載自我的微信公眾號。

1. 深度

點動成線,線動成面,面動成體。這個道理人人都懂,問題在於,在PPT中,如何才能讓點、線、面「動」起來?這就需要認識PPT三維工具的第一個參數「深度」。

深度就是圖形的「厚度」

畫一條曲線,添加一個深度,這樣就可以得到一個曲面


畫一個圓圈,添加一個深度,這樣就可以得到一個圓管

畫一個矩形,添加一個深度,這樣就得到了一個立方體


如何添加「深度」?

只需要選中對象,右擊,選擇「設置形狀格式」,在「效果」中的「三維格式」中,找到「深度」,填入需要的數值即可。


這時你遇到了一個問題:添加深度之後,並沒有產生例子里那樣三維效果。這是因為此時圖形的立體縱深是垂直於屏幕平面的,所以被原來的形狀遮擋了。要看到三維效果,你需要隨意添加一個「三維旋轉」。


2. 三維旋轉

三維旋轉,顧名思義,就是用於控制立體圖形在三維空間中的旋轉。

如何旋轉

選中對象右擊,選擇「設置形狀格式」,在「效果」中的「三維旋轉」中,我們會看到X旋轉,Y旋轉,Z旋轉。


調整這三個數值,做好的三維圖形就可以轉動起來了:


什麼是「透視」

在X Y Z旋轉參數的下方,還有一個參數叫做「透視」。「透視」,通俗得說就是「近大遠小」:立體圖形距離我們的眼睛越遠,則看起來就會越小,越近則會越大。透視這個參數就是讓立體圖形產生這種效果,透視的取值最小為0,最大為120°:


但「透視」一開始是灰色的,不能添加。要激活透視參數,你需要現在「預設」中選中一個帶透視效果的旋轉

有了「深度」和「三維旋轉」,你幾乎可以畫出任何柱狀立體圖形,比如圓柱,三稜柱,四稜柱,五稜柱等等:

但你永遠無法畫出一個球體或者錐體。要畫椎體或者球體,你需要了解第三個設置「稜台」。

3. 稜台

稜台是三維的曲面,它的形狀是由「稜台類型」、「稜台高度」和「稜台寬度」決定的。

我們這裡只說說「圓」稜台和「角度」稜台。

先畫一個長寬都為4cm的正圓,添加一個270°的Y軸三維旋轉。現在你無法看到這個正圓了,因為它沒有厚度,而且它剛好垂直於顯示器的平面,就像一張紙水平放到你眼睛正前方一樣。

「圓」稜台

如果給上面的圓形添加一個「圓」形的「頂部稜台」,在稜台的「寬度」和「高度」中手動輸入「2厘米」。這時,你就得到了一個半球。


「角度」稜台

如果我們把「圓」稜台改為「角度」稜台,那我們得到的將是一個圓錐:


稜台的寬度和高度

此時如果減小稜台的「寬度」,你會看到:


如果改變稜台的「高度」,你會看到:


如何畫一個球體

所以要畫球體,只要給再圓形添加一個「底部稜台」就可以了:

給各種多邊形添加「角度」稜台,通過調整稜台的寬度和高度,我們就可以得到多種錐體:

其他稜台效果

嘗試「圓」和「角度」之外的其他稜台形狀,我們可以製作更多立體圖形:


4. 光照和材料

在製作好所需要的立體圖形後,還可以在三維格式中調整光照的角度和材質:


不同光照角度和不同材質的效果如下:


5. 距底邊高度為什麼需要這個參數?

在PowerPoint中,只要通過「水平位置」和「垂直位置」兩個參數,我們就可以確定一個對象在頁面上的位置。但要在三維繪圖中組合多個對象,還要設定各個對象在縱深方向上的位置,這就要調節對象的「距底邊高度」,距底邊高度既可以是正的,也可以是負的。

比如在下面的例子里,從左到右黑色小球的距底邊高度是逐漸增加的。


「距底邊高度」的含義

距底邊高度表示對象的最高點離屏幕的距離

如果距底邊高度沒有變化,那麼為對象設置深度、稜台等三維參數時,對象的中心就會垂直於屏幕向里運動。所以如果只給對象設置了一個20磅的深度,要保持對象的中心處於原來的位置,距底邊高度就要設置為10磅。如果只給對象設置了一個高20磅頂部稜台,要讓對象最低處仍然保持原來的位置,距底邊高度就要設置為20磅。

所以要製作上面的多層立體圖形,我們首先將三個不同大小的圓在二維平面內左右上下居中對齊,分別添加稜台後調節距底邊高度,最後組合,設置三維格式即可。比如下圖中,兩個半球使用圓形底部稜台,距底邊高度為0;小球使用圓形頂部稜台和圓形底部稜台,距底邊高度為2厘米。


--------------------問與答---------------------

1.

2.


最後,歡迎大家關注我的微信公眾號:PPT洞見

http://weixin.qq.com/r/1EwyKnfEISperTNJ9xnG (二維碼自動識別)


過了一個晚上發現評論區裡面指出來各種錯,水平有限,非常慚愧。感興趣的可以去評論區看看,有不少值得學習的地方。不過慚愧歸慚愧,既然說好了要更,我就硬著頭皮繼續寫下去了。更新的放在答案末尾。

關於圖片中字體和顏色搭配的問題,我覺得還是看期刊吧。我投的不少期刊都說了圖片中要用arial,所以至少用這個不會錯,個人覺得放在圖裡面也比有襯線的好看。

顏色的話我不得不承認從審美角度來說,低飽和度低對比度的要好看,但是一張圖上面的幾條線經常都是要作對比的,紅藍這種高反差的顏色有時候也能比較好的區分,這也是個取捨吧。


=====================================================================


看到這個問題的時候已經有一百多個答案了,估計這個答案也不會被多少人看到,但還是還是忍不住想來分享一下自己讀博這幾年來一步一步領悟出來的配圖經驗。

註:本人只是一個搞材料的,發個位數影響因子文章的渣渣,跟上面各種耍代碼的大神不能比。我這裡只是想說一下如何靠著最基本的軟體(數據圖全靠Origin,示意圖全靠PS)作出不那麼難看的配圖,至少投個EA什麼的不會因為圖太丑被拒。以下所有圖片都是自己文章當中用到的,禁止任何轉載(估計也不會有……)。


簡單來說,個人經驗是,論文配圖基本上就三個要點:配色,形狀,布局。這三點沒什麼大問題了之後,配圖再丑也丑不到哪去。


首先拿自己發的第一篇文章當一個反例:



現在看起來真是……不忍直視的丑。


問題出在哪呢?

1. 配色。顏色太雜。並且數據點和擬合直線的顏色不一樣。Inconsistency是大忌。

2. 形狀。我在第二張圖裡面用了各種亂七八糟的形狀。有時候這是必要的(為了區分不同數據點),但是在此處只是徒增混亂。

3. 布局。這個比較細節了。第一張圖裡面,縱坐標0一下的數據其實是沒有用的。標籤的位置也不是很好看。

此外這個圖裡面還有一個嚴重問題:字體用的是Times New Roman。圖片中的字體是必須用Arial或Helvetica這種無襯線字體的。當然這是很基本的問題了。

拿自己後來發的一篇文章裡面類似的圖做一個對比:

這張圖大概繪於兩年之後。做的是一類東西,所以數據基本上差不多,但是(至少在我看來)圖片要好看了很多。對比之下可以看到:

1. 配色。統一了線和點的顏色。

2. 形狀。Origin裡面的sphere算是視覺上比較好看的一種形狀(評論區有人說用純色點比較好看,這個也看個人吧,反正我覺得問題不大)。

3. 布局。第一張圖,密集的數據點,也就是圖片重心在下方,label在上。第二張圖中的數據剛好在中間分割,label放在右下角,相對而言比較和諧。


=====================================================================


評論區有不少人指出,一樣的符號黑白印刷的話無法區分。這個解決方法其實有很多了,剛好趁機說下幾組數據放一起作圖的例子。

1. 最標準的方法,當然是用不一樣的標識了。


比如這裡,兩種氣氛一個用圓形一個用方形,三種模型用三種不同的線,就算是黑白也能辨認出來(不過其實我覺得,這年頭真的還有人看印刷版的文獻嗎……)。


2. 明確知道哪一組是什麼的情況。其實做SOFC的都知道,上面EIS的圖根本沒必要標明哪個溫度對應哪一條線,最外面的半圓肯定是溫度最低的,最裡面的肯定是溫度最高的。同理下面這種:


基本上不用標顏色都知道最上面的是轉速最小的吧。(話說這張圖原圖其實飽和度很高的,就是Origin裡面標準的那種紅綠藍,期刊的顏色有些詭異,有人覺得這樣好看一些是不是……)

而更重要的一點是,這裡五條線的上下順序,和右邊的label是一樣的。同理下面這種情況:


四條柱狀圖從左到右的順序和上面標誌裡面從上到下的順序是一樣的。


3. 線條或者數據不是很密集的時候,我現在習慣直接把名字標在線上或者數據下面。



這兩張裡面第一張也是大概兩年前畫的了,當時莫名的覺得粗線比較方便辨認,現在來看也是不忍直視。目前的經驗是,Origin裡面線條粗細2-3左右比較合適,大概就是第二點裡面那個粗細。


4. 數據之間有關聯性的時候。有個很常用的例子就是XPS分峰的圖,經常有2p1/2, 2p3/2這種。繼續拿自己當反面例子,我最開始那篇文章裡面圖是這樣的:


嗯,說起來其實也沒什麼硬傷吧,就是不好看。每條線具體是什麼也不清楚。


然後第二篇文章裡面改成了這樣:

當時不記得從那個文章裡面看到的,覺得用圈比較好看……不過其實想想,數據線和擬合線用不同的表示也有道理。

第三篇文章裡面是這樣的:


嗯好吧,也不好看就是了……這裡原始數據用小黑點了,原因是……原始數據不好看所以想弄得不明顯一點hhh

這裡唯一可以當正面例子的一點就是,用同樣的顏色,實線和虛線分別代表了p軌道的兩個分裂。

正面例子舉一個實驗室同學畫的圖吧:


嗯我覺得這種半透明的,填充曲線下方空間的方式非常適合畫XPS圖。

當然實際分峰的時候,很有可能你的兩個峰重疊的比較多,或者某一個直接就把另外一個給完全擋住了,那種時候畫這種填充圖就不好看了……


=====================================================================


前面這些都算數據圖,再舉個示意圖的例子。這種圖自由度要高很多,也很考驗個人審美了。嗯我有預感這個會被噴的比較厲害,待我先避避風頭……


大家都理解錯了嘛~樓主問的是論文里怎麼才能畫出精美的插圖。頂在最前面的Python、Matlab等軟體雖然能準確畫各種常見圖,但是從美術角度來看不及格好嗎!最讓人吐槽的就是這倆的配色!看看直方圖那醜陋的配色!函數圖難看的等高線!一點都不精美!

要比高端大氣上檔次,本頁所有答案完全不是R的ggplot2包的對手嘛~以前我也用Matlab,自從遇到ggplot2之後就徹底成為腦殘粉了!

ggplot2是R的一個package,畫圖風格相當文藝小清新。看論文看到用ggplot2畫圖都是一種享受哦!極為擅長於數據可視化。可惜ggplot2功能沒有Python或者Matlab全面,畫不出稀奇古怪的電路圖不支持三維立體圖像哦~不過作為一個統計繪圖軟體那些功能也不算很重要啦。

ggplot2有一個最大的特點是引入了圖層的概念,各位用過Photoshop應該能理解吧?
你可以隨心所欲將各種基本的圖疊加起來顯示在一張圖上,構造出各種各樣新奇的圖片!

先來一個最基礎的散點圖開胃。這是不調顏色軟體包默認的配色。灰色的背景,黑色的小點點。擬合曲線和置信域看著就很舒服嘛。

先來一個最基礎的散點圖開胃。這是不調顏色軟體包默認的配色。灰色的背景,黑色的小點點。擬合曲線和置信域看著就很舒服嘛。

來看看直方圖,和傻大黑粗的Matlab相比精緻秀氣多啦!

來看看直方圖,和傻大黑粗的Matlab相比精緻秀氣多啦!

還有精緻的半透明效果!

還有精緻的半透明效果!


折線圖畫得美到極致了好嗎!

柱狀圖+密度!

柱狀圖+密度!


Heat Map!


這麼亂糟糟的線也畫得好清新!



ggplot2能把密密麻麻的散點圖畫的極具美感,徹底治癒密集恐懼症!


還可以畫地圖!把非洲畫得這麼美我都想去了好嗎!

還可以畫地圖!把非洲畫得這麼美我都想去了好嗎!

Network也能畫!

Network也能畫!

散點圖+誤差區間!

散點圖+誤差區間!

極坐標柱狀圖!

極坐標柱狀圖!



  • 我喜歡用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中有點麻煩
(下面這個是在極坐標下的)


繪製圖表

下面是幾個3D的,比較下Matlab和Python畫的愛心

下面是幾個3D的,比較下Matlab和Python畫的愛心
http://www.cnblogs.com/qtsharp/archive/2012/03/24/2415147.html
http://www.xue163.com/178/6/1787117.html

2行代碼創建的

2行代碼創建的Menger sponge
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


分享一點我對這個問題的看法(可能比較適合化學、材料類的知友):

一篇論文的圖片有多重要,我認為至少應該佔到50%(跟研究領域相關)。作為論文數據的主要載體,圖片直接呈現了文章的敘事邏輯和主要結論,並且反映出文章的重點和創新點。很多讀者(包括審稿人)的閱讀習慣都是先看圖,如果圖片質量高,讀者就有興趣一探究竟;如果圖片看起來不太順眼,那麼讀者(審稿人)的印象就不會太好,甚至會認為作者科研素養不高或者是準備稿件時不夠認真,進而質疑文章數據及結論的可靠性。

使用專業的繪圖工具(如3d max)會讓製圖過程如虎添翼,但是使用不當就會弄巧成拙。論文中的圖片(不含ToC)首先應該做到的是「專業」。這個「專業」既體現在對原始數據的專業處理,實驗結果的清晰展示,更重要的是數據的組織邏輯和呈現方式。其次才是美學上的「漂亮」,讓讀者看起來比較舒服。優秀的論文圖片應該達到這樣的效果:即讀者不需要閱讀圖注及正文內容,僅僅通過瀏覽圖片也能大致把握文章的主旨。根據我自己的經驗,論文圖片的準備大約可以分成三個層次:一是示意圖的繪製,二是數據的圖像表達,三是數據的組織。

(1)示意圖的繪製

這裡的示意圖包括但不限於器件、結構圖,原理圖,製備、組裝流程圖,實驗裝置圖。NS系列的期刊上有非常多的案例值得學習和借鑒,但是這裡我想從另一個角度談談什麼樣的設計風格可能不太合適 (為作者諱,隱去文章的具體信息)。

Figure 1

在我看來,這張圖在幾個地方處理得不夠專業:

  1. 背景多餘。論文的插圖原則上都是不使用背景的,因為背景會干擾讀者對圖片主體信息的讀取,這張圖中的漸變色背景屬於畫蛇添足,沒有任何意義,也並不好看
  2. 文字太多,格式雜亂。圖片中的文字盡量少,並且字體格式要統一,不能使用Times New Roman等襯線字體(因為襯線字體是用於印刷品的),要使用非襯線字體(如Arial)。文字不能喧賓奪主。比如這幅圖裡graphene oxide就干擾了讀者對圖片的辨識
  3. 細節模糊。論文中的插圖寬度在10-20 cm (解析度&>300 dpi), 作者要保證即使縮放到很小(比如JACS雙欄排版,圖片可能只佔一欄),圖片中的細節仍然清晰可見,但是這幅圖石墨烯片層上面的基團和粒子基本看不清
  4. 縮寫混亂。圖片中的GO, GR, M縮寫太多。
  5. 注釋有歧義。綠色的球代表metal ion,但是括弧里給了一長串的內容,到底是代表所有離子還是一種離子?
  6. 圖片表達含糊。論文中的插圖應該一目了然,不要讓讀者(審稿人)去揣摩作者的意圖,否則容易產生歧義,比如最右的放大圖就不知所云
  7. 注意細節。沒有electrostatic attractive interaction這種說法,並且與solvothermal treatment不對應

比較專業的示意圖如下:簡潔直觀,清晰易懂,不需要看圖注也可以知道其製備流程,而且這幅圖不需要太高級的繪圖技巧,用簡單的PPT就能畫出來。(Nature Nanotechnology 2014,9, 187–192 )

Figure 2

(2)數據的圖像表達

數據的圖像表達就是把各種表徵數據轉化成圖像。同樣,我從反面的角度說說怎樣做不太合適:

Figure 3

  1. 電鏡照片的scale bar和背景對比度不夠強烈,應該使用白色;同時兩幅照片的scale bar位置、字體、大小都不一樣
  2. 電鏡照片內的標記太多。原則上電鏡照片除了scale bar (這個必須有,但是數字可以放在圖注里),不需要添加其他的注釋、箭頭、符號、標記。在一些情況下,比如表示晶面間距,指示一些不易觀察到的對象,可以使用少量的標記,文字可以放到圖注里。 圖A白色的虛線箭頭完全沒有必要
  3. 對於SEM或者TEM照片,可以進行後期處理,僅限於調節亮度和對比度(這些操作在電鏡下也是可以實現的),添加假色(pseudo-colour)要非常慎重。照片的處理方法參見:Basic Photoshop For Electron Microscopy http://www.nuance.northwestern.edu/docs/epic-pdf/Basic_Photoshop_for_Electron_Microscopy_06-2015.pdf
  4. 圖片序號混亂。除了Science和PNAS,圖片的序號都應該用小寫字母(正體,Arial),放到圖片外,這樣做是為了避免干擾圖片內的信息。不宜使用如圖AB那樣打補丁式的做法。另外,不要使用C1, C2, D1, D2這樣的命名法,因為讀者一般在D後總是會去尋找E, F,不會去想到去看C1, C2
  5. C和D中紅色的圓圈多餘。局部的放大完全在圖注里可以說清楚。我見過很多文章在圖片中添加很多注釋,而圖注只有聊聊幾句話。這其實是本末倒置,因為一般的讀者最先看的是圖,然後是圖注,圖注中找不到的信息才去文章里找。所以圖注應該寫得清楚詳細,避免讓讀者去文章里大海撈針
  6. 圖片之間應該留出足夠的空間,留白不夠會讓圖片顯得拘謹狹促,也不要隨意添加方框,在圖片中隨意添加線條是大忌
  7. 圖片中的線條,色彩,形狀對讀者而言都是信息,如果這些線條、色彩、形狀、標記沒有對應的科學意義就不要放。這樣才能最大程度地突出數據,比如能譜元素的標註不需要用藍色的底色。
  8. C1, C2, D1, D2的圖片已經變形了

Figure 4

這張圖片的問題也比較典型:

  1. 坐標軸的字體太小,原則上坐標軸的字體和名稱應該和圖片的序號(a,b,c)差不多大。我們在origin里作圖的時候圖片都是放得很大的,因此常常會有錯覺:在origin里坐標和數字看得很清楚,但是一旦縮小1/3或者1/4就基本看不清了(如上圖)。另外刻度尺原則上應該外翻,NS期刊上絕大部分的圖片刻度尺都是外翻的,這樣做是防止刻度尺與圖片互相干擾,比如圖A中各條曲線與橫軸的截距就很難辨識。
  2. 配色:論文圖片的配色應該保守(甚至古板),配色應該越少越好,如果只有一條曲線,不需要用彩色,因為很多期刊(wiley)彩圖要收費。基本配色是紅色、藍色、暗綠,橘黃(土黃),避免使用亮色(如圖B中的亮色基本看不清楚)。NS期刊有很多不錯的配色方案可以參考。另外,配色要統一,一種物質在全文統一使用一種顏色,不要在這張圖裡是紅色曲線,在另一張圖裡又是藍色曲線。

Figure 5

通過這兩張圖分享兩個作圖技巧:

  1. 左邊這幅圖有一部分的數據被遮擋了。如果z軸的絕對數值不重要的話,這種情況可以用色溫標(colour bar)代替z軸,即通過不同顏色來代表相對強度,做成一張平面的彩圖。
  2. 右邊這張圖糅雜了兩種體系(GR含量和金屬離子),這也是不恰當的,因為變數太多,曲線太多,顏色太多,會讓圖片失去重點。對於某一種變數(含量,濃度等)成梯度變化的情況,有一個配色的技巧是使用漸變色(如下圖,PNAS, 2016, E1206–E1215, doi: 10.1073/pnas.1524128113),即通過顏色的漸變來代表變數的變化,這樣曲線與變數之間的關係一目了然。如果下圖使用了十幾種顏色,那讀者基本上什麼也看不出來。

Figure 6

(3)圖片的組織

一般的通訊(communication, letter)篇幅都比較短,所以這類論文的圖片的數量一般控制在4張以內,把大量的數據都放到SI里。控制圖片數量的目的是讓文章緊湊,重點突出,很多情況下2-3張圖片就完全可以把故事講清楚,而且文章的創新點都反映在圖片里,讀者(審稿人)一眼就知道。圖片太多反而讓文章顯得冗長散漫,看到後面忘了前面,分散了讀者(審稿人)對文章創新點的把握。一般的通訊文章核心數據只有幾張圖,作者在構圖時一定要考慮如何突出核心數據,從而讓讀者(審稿人)理解論文的重點和創新點。所以,每一次對圖片的取捨與重排都是確定文章重點創新點,明確寫作策略的過程。比如,如果文章的敘事邏輯是結構——性能——應用,每一項各用一張圖就夠了。結構部分,材料的製備、表徵都可以放在一起,(如下圖,Nature Photonics, 2015, doi:10.1038/nphoton.2015.37)這樣論文的結構緊湊,邏輯清楚,而且重點突出。

Figure 7


論文製圖是一個耗時耗力的過程,需要反覆的修改。平時可以有意識地多去琢磨NS上高質量插圖的設計思路,布局考量,配色方案,組織邏輯,數據呈現技巧,漸漸地提升自己的科研品味和審美。作圖要多站在讀者(審稿人)的角度逆向思考,多讓導師把關,多聽取同事的反饋意見。切忌自我感覺良好,別出心裁多半會弄巧成拙

Figure 8

以上是我對這個問題的一點粗淺認知,大家各取所需,如果有不周到地方還請各位知友不吝賜教 (文章中的例子只是為了說明問題,沒有冒犯之意)。


作為一隻理工狗,我們不僅可能需要熬夜編程,更需要在很多時候畫圖來展示自己的結果。


如果不能用漂亮的圖片來展示結果,別人對你的工作評價也許會大打折扣,這樣熬夜編的程基本上算是白熬了。


下面隆重向大家推薦十款主流畫圖軟體,美好的生活從作出高品(bi)格的圖片開始。(以下示例圖片均來自網路,版權歸原作者所有)


第10名:鋸齒風Matlab

Matlab只排在第十位是因為本來它就不是一個用來做畫圖的軟體。人家的主要功能是矩陣操作、統籌優化、數學實驗、模擬模擬(此處省略一萬字)等等好嗎?用matlab畫圖簡直就是高射炮打蚊子——大材小用。如果非要只比較它的畫圖能力,只能說呵呵了,下面是Matlab的畫風,淡淡的鋸齒風一直被網友所吐槽。


曲線圖:


散點圖:


多圖:


曲面圖:

三維圖:


Matlab畫圖雖然鋸齒嚴重,但這並不能掩蓋它是一款極其優秀的科學計算軟體的事實。每個人只有在適合自己的崗位上才能充分發揮自己的優勢,每個軟體也是一樣。所以使用matlab畫圖功能時,最合適的用途是用來實施檢查編程結果是否正確,並不做最後報告或論文輸出。



第9名:清爽風Gnuplot

Gnuplot是一個命令行的互動式繪圖工具。用戶通過輸入命令,逐步設置或修改繪圖環境,並以圖形描述數據或函數。優點是畫圖速度快、畫風清爽,軟體開源且免費,圖片質量相當專業。缺點是:需要寫代碼。下面是幾個例子:


曲線圖:


曲面圖:


三維圖:


場圖:


統計圖:


第8名:高冷風Matplotlib

Matplotlib是著名Python的標配畫圖包,其繪圖函數的名字基本上與 Matlab 的繪圖函數差不多。優點是曲線精緻,軟體開源免費,支持Latex公式插入,且許多時候只需要一行或幾行代碼就能搞定。缺點是需要Python編程基礎。幾個例子:


曲線圖:


頻數圖:


矢量分布圖:


統計圖:


極坐標:



第7名:簡易風visio

Microsoft Visio是Windows 操作系統下運行的流程圖軟體,它現在是Microsoft Office軟體的一個部分。Visio可以製作的圖表範圍十分廣泛,利用Visio的強大繪圖功能繪製地圖、企業標誌等。最主要還是用來畫流程圖、示意圖。


流程圖:


電路圖:


電路圖:

從matlab、gnuplot和matplotlib中選一個畫曲線圖的軟體,並和畫示意圖的visio搭配,是畫圖初級階段的標配。


第6名:SCI風Origin

Origin是簡單易學、操作靈活、功能豐富全面的畫圖軟體,既可以滿足一般用戶的製圖需要,也可以滿足高級用戶數據分析、函數擬合的需要。目前,它似乎已成為專業論文SCI的標配繪圖軟體。缺點是操作系統不太友好、易崩潰,只支持Windows系統。幾個示例圖:


曲線圖:


混沌圖:

等高線:


地形圖:

三維場圖:



第5名:統計風R-ggplot2

ggplot2是R語言的一個包,最擅長統計數據可視化。ggplot2按圖層作圖,其核心理念是將繪圖與數據分離。缺點是ggplot2功能沒有Python或者Matlab全面,不過人家就是在統計方面做的最好最專業,其它的功能忽略掉好像也無所謂。



第4名:流場風Tecplot

Tecplot從簡單的二維曲線曲面圖,到複雜的三維動態圖都可以實現。它的特色在於可快捷的將大量數據資料轉化為容易理解的圖片,例如等高線、向量圖、網格圖、剖面圖、流線圖等等。它提供和CAD、CFD軟體的介面,可以用於其它分析軟體(如有限元、計算流體動力學等)的後處理工作。


飛機表面應力雲圖:


機翼附近流場:


螺旋槳網格圖:


女性內衣設計:


海上鑽井平台:


第3名:矢量風Illustrator

Adobe illustrator是一種應用於出版、多媒體和在線圖像的工業標準矢量插畫的軟體,作為一款非常好的圖片處理工具,Adobe Illustrator廣泛應用於印刷出版、海報書籍排版、專業插畫、多媒體圖像處理和互聯網頁面的製作等,也可以為線稿提供較高的精度和控制,適合生產任何小型設計到大型的複雜項目。


簡單的示意圖:


絢麗的原理圖:


複雜的人像圖:


複雜的人像圖:


從Origin、ggplot2和Tecplot中選一個畫圖的軟體,並和畫示意圖的illustrator搭配,是畫圖中級階段的配置。


第2名:專業風Paraview

Paraview除了可以畫最基本的曲線曲面圖等,也提供和CAD、CFD軟體的介面,可以用於其它分析軟體的後處理工作。Paraview支持多種數據格式和顯示方式,目前包括網格繪製,面繪製,體繪製等方法。可視化包含:數據讀取,數據過濾和數據渲染三個基本的步驟。Paraview提供開源可編程。缺點是難度較高,入門需花時間。


賽車附近流場圖:


正常紅細胞和變異紅細胞分布圖:


全球氣溫分布:


第1名:LaTex 風Tikz

Word是很目前很流行的排版軟體。然而還有另外一種和它相媲美只是沒那麼流行的排版軟體——LaTeX,它是一種基於TEX的排版系統。利用它能在短時間內生成很多具有書籍質量的印刷品,尤其是生成複雜表格和數學公式。因此它非常適用於生成高印刷質量的科技和數學類文檔。Tikz是LaTex原生支持的圖包來,可以畫論文中的插圖。用TikZ畫可以做到完美,特別是與LaTeX文檔的整體交互,比用一般繪圖軟體好得多。二維圖、三維圖、流程圖、示意圖都能實現。同樣的,缺點也是難度較高,入門需花時間。


散點圖:


曲線圖:


磁場分布圖:


邏輯圖:


結構圖:



第0名:自己

其實,想畫出精美的圖片,最重要的是在於想好怎麼畫,以及理清他們之間的邏輯關係。


然後,就是用好顏色搭配,並布置好布局,調整好看的字體。


如果你把上面任何一款軟體用的非常熟練,再加上多嘗試,無論用哪款軟體都能畫出精彩的圖片。

ps, 如果對科學計算(尤其是Matlab使用中)的經驗、教訓或者好玩的東西感興趣,可以關注公號「科研充電寶(kexuebc)」哦。每天推送一條實用小技巧。

比如:

如何把別人論文中的曲線圖,自動轉化為數據點?

最常用的10個Matlab快捷鍵,助你編程更高效

寫論文和報告容易犯的低級錯誤,別再像外行一樣寫論文了



開頭放顆愛心吧,圖片是我自己用 LaTex 編譯得到的,代碼來自Can we make a love heart with LaTeX?

再放一個今天剛看到的多米諾的圖,覺得超贊,代碼來自

再放一個今天剛看到的多米諾的圖,覺得超贊,代碼來自Falling dominoes。

以上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}
egin{document}

egin{tikzpicture}
egin{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 的。

egin{tikzpicture}

雖然 tikz 不知道是什麼意思,但是 begin 和 picture 我知道,所以我猜這是要開始畫圖了。

egin{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) 還是能理解的。然後,你說 "--" 是什麼意思?linew=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}

egin{document}

egin{tikzpicture}
egin{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

Pgfplots | TikZ example

Animated definite integral

三維的

Spherical and cartesian grids

Membrane-like surface

網路結構也沒問題

Scientific interactions

經典物理力學

Free body diagrams

化學的

RNA codons table

元素周期表也是可以的

Periodic Table of Chemical Elements

電路

Power electronics

如果你想要一個示波器

TeXtronics oscilloscope

光學

Polarizing microscope

分形也沒什麼啦

Lindenmayer systems

有了分形,即使是聖誕樹也是有可能的

Christmas fractal tree

手繪風格

Simulating hand-drawn lines with TikZ

還有Art

Sunset | TikZ example

Poppy flower

Modernized Islamic Art

Mandala | TikZ example

可能,理論上說,其它工具也可以畫出這些圖,但是,我懷疑它們是否有一個和 LaTex 媲美的社區,提供這麼多豐富的資源和代碼。

LaTex 還有一個和stackoverflow媲美的問答網站,我日常工作中會遇到的 LaTex 相關的問題的答案,都可以在這裡找到TeX - LaTeX Stack Exchange


這個問題我關注了一年多,許多答案看了許多遍。在這期間不但學會了matplotlib, ggplot2, MATLAB的畫圖功能也了解得更深了。在此,感謝 @馮昱堯, @Online Pig,謝謝你們的答案讓我開闊了視野。

我的這篇回答並不是再多提供一個繪圖軟體,再附上許多絢爛的繪圖實例。這裡我會從零開始介紹如何利用這些繪圖工具畫出一張簡潔美觀大方,並可以被學術期刊接受並發表的數據圖。

好了,廢話太多,上代碼:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2*np.pi, 50)
y = np.sin(x)
y2 = y + 0.1 * np.random.normal(size=x.shape)

fig, ax = plt.subplots()
ax.plot(x, y, "k--")
ax.plot(x, y2, "ro")

plt.show()


只是一個簡單的正弦函數加上一些噪音,這裡數據並不重要,怎麼讓它漂亮起來是重點。
這個圖目前有幾個問題。

  1. 圖片大小不知道。一般期刊都會對圖片大小有要求,比如Elsevier要求單欄圖片寬度90mm,雙欄圖片寬度190mm。詳細要求在這https://www.elsevier.com/authors/author-schemas/artwork-and-media-instructions;
  2. 什麼字體不知道。期刊都會對字體有詳細要求,比如Elsevier明確說明等寬字體是Courier,襯線字體是Times New Roman,無襯線字體是Arial或者Helvetica;
  3. 字體大小不知道。字體大小最好與正文和其他圖片大小一致。這是的一致不是說字體大小要一模一樣,但也不能差別過大。比如正式是10pt,那圖片字體一般9pt或者8pt。但所有的圖片字體必須一致。
  4. 圖片有白邊,也就是margins,這在大部分期刊里都是不允許的。

目前就這麼多,很多同學會說可以對圖片後處理啊,切個邊再縮放一下就好了。但問題是剪切縮放後字體大小,線寬都會變形。這也是為什麼很多期刊字體大小在每幅圖裡面都不一樣的主要原因。

那麼如何做才能克服以上四點問題,再次上代碼:

from matplotlib import rc
rc("font", **{"family": "sans-serif", "sans-serif": ["Arial"], "size": 8})
params = {"text.usetex": False, "mathtext.fontset": "stixsans"}
plt.rcParams.update(params)

這四行代碼控制字體與字體大小

fig, ax = plt.subplots(num=1, figsize=(3.54, 2.26))

這一行,固定了圖片大小

plt.subplots_adjust(right=0.99, left=0.125, bottom=0.14, top=0.975)

最後這一行調整畫框的位置,用來消除白邊。

現在圖片是這個樣子,應該已經滿足大部分期刊的最低要求,注意是最低。接下來還有很多美化工作要作。

現在圖片是這個樣子,應該已經滿足大部分期刊的最低要求,注意是最低。接下來還有很多美化工作要作。

首先,marker(實在不知道marker的中文翻譯是什麼,抱歉)尺寸太大,marker的顏色是正紅色, rgb(255,0,0),太不美觀,並且對色盲群體也不友好。關於顏色的選擇這裡並不展開,不過有一個很好的參考網站ColorBrewer: Color Advice for Maps。matplotlib也包含了這個網站的各種顏色組合。

先用一小段代碼把其中一組顏色"Set1"提取出來

cm_number = 6
cm = plt.cm.get_cmap("Set1", cm_number)
color = []
for i in range(0, cm_number):
color.append(cm(1. / (cm_number - 1) * i))

這裡cm_number是指我們需要多少種不同的顏色,然後修改一下plot指令:

ax.plot(x, y2, "o", markerfacecolor=color[0], markersize=2,
markeredgecolor=color[0])

圖片現在成了這個樣子。數據可視化有一個重要原則就是去除一切不必要的元素,我想了想發現,上邊和右邊的軸線我們並不需要,所以兩行代碼去掉它們

圖片現在成了這個樣子。數據可視化有一個重要原則就是去除一切不必要的元素,我想了想發現,上邊和右邊的軸線我們並不需要,所以兩行代碼去掉它們

ax.spines["right"].set_visible(False)
ax.spines["top"].set_visible(False)

而且我希望利用網格代替刻度,這樣讀者可以更容易發現數據的大小關係。

ax.xaxis.grid(True, which="major", lw=0.5, linestyle="--", color="0.8",
zorder=1)
ax.yaxis.grid(True, which="major", lw=0.5, linestyle="--", color="0.8",
zorder=1)

最後圖片的樣子是

今天先到這裡,以後有機會可以討論下雲圖怎麼畫,希望大家多多交流討論。

今天先到這裡,以後有機會可以討論下雲圖怎麼畫,希望大家多多交流討論。
最後放一些我自認為還滿意的圖片,知乎不支持矢量圖,真是遺憾。


先放一張今年剛中的某雜誌的cover image

先放一張今年剛中的某雜誌的cover image

題主是問插圖,那可以是示意圖,可以是矢量圖,可以是帶有橫縱坐標的數據圖,也可以是三維渲染圖。這些圖我在博士期間發表的論文中都用到過。下面按照使用的軟體具體討論。

1. Origin
對於不是數學和計算機的領域來說,學術論文里可能並不會太多用到題主發出的那種多維度的圖。
前面高票答案給出的圖和題主的情況可能比較接近,大多需要編程來畫出複雜的多維圖。對於我這行業來說x-y兩個維度來表達足以把問題說清楚了。
這種情況下太多軟體可以用,但對於科學繪圖來說Origin確實是個不錯的選擇。


可以把幾個y疊加起來對應一個x



可以多圖層,這樣左右兩邊可以用不同的y坐標系,因為每個圖層有自己的y-x


可以做分峰分析


可以對自己的曲線圖做擬合(fitting)

2. Matlab

2. Matlab
雖然這個接觸非常早,但是進入研究領域以後就很少用了,因為Origin+PPT+PS可以解決我的大部分在物理,化學和材料科學上的畫圖需求。
但是平時上課會接觸數學和統計,偶爾完成作業還是會用到它。


3. Mathematica
和Matlab一樣,這個軟體對我來說也主要是用來完成作業。


盜用網上幾張圖


4. R
R是處理統計學的工具,近年來在學界工業界使用頻率愈發高漲。在概率與統計學上的畫圖中R應該是非常專業的。

下面幾張圖來自於:

下面幾張圖來自於: Wiley: Data Mining and Business Analytics with R

4. Powerpoint
ppt依然是我用的最多的畫圖軟體,很方便,又不佔空間。
這裡先廢話一些抖抖和科技論文插圖無關的但是和ppt有關的東西。我們其實可以用ppt做很多事情。
案例1:畫摺紙

先畫兩個矩形,不同顏色。

先畫兩個矩形,不同顏色。

然後右鍵編輯頂點即可把矩形變梯形。

最後再鏡面對稱就做出摺紙效果了。


案例2:畫彩帶

PPT畫鋸齒形。依靠Shapes-Lines裡面的free模式。

畫完這個平面鋸齒,使用3D Format + 3D Rotation

畫完這個平面鋸齒,使用3D Format + 3D Rotation



把深度拉起來(比如30),然後contour,並把裡面顏色設置好,

然後在3D
Rotation中給個旋轉角度就可以看到效果了。

這裡我畫了三個這樣的波浪,並給不同的顏色,以達到彩帶的效果。

對三個彩帶align一下,水平和豎直各align一下。

再調節ground高度,比如這裡我用0,-30,-60。這樣三個彩帶就可以均勻分布,形成一種彩虹的感覺。



案例3:扁平盤

畫出一大一小兩個圓盤,用相反的漸變色調填充。然後再組合就好了。

但是很顯然,邊緣太突兀了。

用PPT的縱向功能會更方便和強大。

這個繼續下去就可以得到如下風格圖。這裡和這個叫PPT設計的網站學到了不少東西。


總之,用好ppt,也會很好很強大。

5. Photoshop

我常用Photoshop去背景,這樣平時在谷歌或者文檔中看到的一些好圖片就可以搜刮下來放到自己的論文插圖或封面中備用。

當然,PS提供的功能豐富的圖層,路徑,蒙版,筆刷都可以拿來設計論文中的「概念示意圖」,「TOC」,甚至cover image

當然,PS提供的功能豐富的圖層,路徑,蒙版,筆刷都可以拿來設計論文中的「概念示意圖」,「TOC」,甚至cover image


因為自己的科研和液體相關,所以很多示意圖就需要表達出這樣的概念,然後我就特別喜歡用PS畫些不同風格的水泡,兼容性可是超好,大部分圖都可以用上。

上面這個方法是,先是用圓形選區畫圓-->背景填充黑色,選區填充白色-->選區縮小-->羽化-->delete 就會得到中間那樣的具有漸進效果的具有反光效果的球體。

上面這個方法是,先是用圓形選區畫圓--&>背景填充黑色,選區填充白色--&>選區縮小--&>羽化--&>delete 就會得到中間那樣的具有漸進效果的具有反光效果的球體。

可以多次羽化,得到最右的超薄的白色邊緣效果。

最後用柔性畫筆畫出球體中間反光的白色。

當然我這個也是隨便畫畫比較粗糙。水泡的畫法有很多種,有的很精細,幾乎和真實世界的一樣了。


下面想介紹一下PS的3D畫圖功能。

可以先畫一個平面圖,然後用3D凸出功能變成3D圖形。

凸出方式有很多,比如這裡我弄成長方體。

可以改變視角,打光,變形,更改地板和背景。


這裡可以看到有很多功能:環境,場景—當前視圖,圖層,無限光,相機

這裡可以看到有很多功能:環境,場景—當前視圖,圖層,無限光,相機

可以更改立方體的側面圖案,也就是材質,比如這裡載入的是一個棋盤。


然後我就用3D功能模擬了電極片,再結合2D功能,畫出下面這貨。

論文發表在這裡:

Mixed-phase mullite electrocatalyst for pH-neutral oxygen reduction in magnesium-air batteries

具體想了解3D功能可以看這裡,Adobe公司的官網教學視頻

https://helpx.adobe.com/photoshop/how-to/create-3d-models.html

當然,和3dsMax和Maya等老牌3D繪圖軟體相比PS還太嫩。只是自己平時常用PS,都是畫2D圖,偶爾想用3D了以後就可以信手拈來了而無需用額外的3D軟體也蠻好的。

然後回到開頭的那個cover image,全部是用photoshop搞定的。

然後回到開頭的那個cover image,全部是用photoshop搞定的。
這裡用到了扭曲,描邊路徑,添加雜色,高斯分布,風格化--大風,動感模糊,濾鏡扭曲,水波筆刷,閃電筆刷,圖層蒙版等技巧。
雖然數據是根本,photoshop只是搞設計的,但是真的很喜歡把它用到科技論文里。我幾乎每篇最後發表出來的論文都有photoshop的身影。
這個工作發表在這裡,成了當期的封面:Intercalation Pseudocapacitance of Exfoliated Molybdenum Disulfide for Ultrafast Energy Storage

6. 3dsMax

這個軟體本來是專業的室內設計3D繪圖軟體,其實不太適合學術論文使用。不過自己強迫症犯了,總想把圖畫的更炫,恨不得論文里的示意圖,TOC一直到cover image都用3D畫法畫出來,還要渲染,打光,帶背影,也是醉了。

所以呢喜歡設計的人玩玩這個軟體真是太有意思了。

下面是我畫的幾個劣作


吊燈


枕頭


樓梯


當然學了這麼多得學以致用,3dsMax用於科研繪圖也是藝術氣息滿滿。

看過文章中好多漂亮的3D石墨烯,一直想嘗試,於是上圖這個就成了我畫的第一個3D石墨烯。

看過文章中好多漂亮的3D石墨烯,一直想嘗試,於是上圖這個就成了我畫的第一個3D石墨烯。
在3dsMax中畫完石墨烯,再水波處理,打光,表面再撒上幾根辣條(那是納米線)。
最後放到PS里加上其它的修飾就可以了。
這個工作的完整故事在這裡,發表在Nano Energy上
Graphene decorated vanadium oxide nanowire aerogel for long-cycle-life magnesium battery cathodes
畫這個圖是為了響應雜誌的要求競標當期的cover image,雖然最後沒有被接收,但還是很高興。
回想起之前的家居毫無違和感啊,這石墨烯怎麼看怎麼感覺像床單,hoho

7. 材料科學專業繪圖軟體
Vesta:晶體結構繪圖軟體
比如下面這個普魯士藍


還有化學的軟體ChemDraw什麼的,下面這個例子是用ChemDraw家族中的Chem3D簡單畫了一下。




現已畢業,但是今後進入工作崗位還是會持之以恆地在繪圖領域繼續跟進的。以後可能會往IT可視化和文藝設計類拓展。


各位大神們的回答已經很詳細了。我來分享一個PPT做3D圖的實例:

隨著3D繪圖軟體的增多,大家肯定有一個疑惑,這些3D軟體都各有所長,難道我要全部都學習一遍嗎。的確,如果有精力可以去學習大量的不同3D繪圖軟體,如專註結構設計的SolidWorks、建築行業的3Dmax、產品外形的C4D、動態特效的MAYA等,那麼遇上各式各樣的圖都能選擇其一表達。但是,你至少要精通其中一項,如果每個3D繪圖軟體都只會一些簡單操作,不適合自己的發展,教程以外的新圖就很難以自己的方式單獨完成,選擇一個自己「專攻」的3D繪圖軟體是比較重要的,今天給大家介紹的是一個非主流的3D設計軟體—PowerPoint,你沒有聽錯,PPT真的可以進行「三維設計」。

前幾天很多人想知道怎麼畫孔道結構,當然我們言之成理也給出了3Dmax的解決方案,但對於不用3Dmax的同學可能就難過了,因為這畢竟是要用上專有插件才能繪畫出來的,所以,我索性選擇了一個最常見的工具進行繪製,最後得到了不錯的結果,如下圖所示:

肯定有人要問了,ppt難道有什麼插件嗎,或者這是用了網上的一些圖組合嗎?都不用,你只需要一個「單純」的ppt就行了,全圖只用上了該功能—形狀,是不是很好奇,接下來我將詳細給出繪製教程(註:該方法與其他3D繪圖軟體最大區別是,後者通過建模得到,固擁有比較「正確」的結構,該方法突出在繪畫,所以依靠的是繪畫功底,如果想要更「正確」的結構建議不用此方法):

1、學會分析

仔細一分析大家就會發現這個「複雜」的模型圖其實功能上很簡單:左圖主體內部為透視立方,通過矩形繪製+深度透視即可完成;角度稜台為多邊形+3D稜台;表面覆蓋的灰綠為隨機形狀+凸台;右圖其實只需要把左圖的「黑藍」刪除即可得到。有沒有發現這個還真是畫出來的o(* ̄▽ ̄*)ブ?

2、透視立方

第一步,繪製一個長寬相等的矩形,利用矩形形狀+shift即可實現;第二步,設置該矩形的透視角度,我調整的三維參數為:X軸旋轉60°Y軸旋轉30°Z軸旋轉0°透視為120°,覺得光線怪異可以將光源角度調整為220°;第三步,調整深度,該步驟的關鍵是要讓這個立方體長寬高相等,但是深度單位是「磅」怎麼辦呢?很簡單,把「磅」刪除,自己打字「厘米」即可,確認後ppt會自動轉化成磅單位。

3、不規則凸台

第一步,利用任意多邊形隨機繪製一個形狀,你沒有聽錯,就是亂畫一個(不要太離譜就行…),然後設置三維格式為圓稜台,寬度和高度設為2磅和5磅(個人審美,可以自己改動);第二步,多繪製一些這樣的隨機形狀,最好均勻分散,留一些空隙畫「水晶」,三維格式設置和第一步一致,整體的輪廓要和黑細線大致接近即可;第三步,在第二步基礎上繪製綠色部分,在黑色之間的空隙處利用任意多邊形操作繪製,三維格式設為寬度1磅和高度0.5磅(綠色比黑色要矮),初始框架就完成啦!

第四步,利用水平翻轉,鏡像第三步得到的圖形,大致輪廓得以體現,此時可以稍微挪動一些或者改變形狀,防止讓別人很明顯觀察到這是鏡像的操作;第五步,複製一部分至頂部,我的參數設置為X軸旋轉150°Y軸旋轉220°透視為45°,大家可以自己慢慢調整,肯定比我還會好看的;第六步,將第二大步製作的透視立方置於底層,然後放在後面,然後用不規則多邊形繪製陰影,是不是就漂亮了很多(p≧w≦q)?

4、角度稜台

第一步,利用任意多邊形工具繪製一些不規則多邊形,調整一下顏色;第二步,將邊線去掉,設置為角度稜台,寬度8磅,高度5磅,材料選擇亞光效果,光源選擇冷凍,角度自己調整;第三步,加上發光和陰影即可得到「發光的水晶」。

最終步驟,將「水晶」和第三大步立方塊結合得到最終模型,裡面有一個小細節就是利用圖層的先後順序可以體現出一種「水晶」被嵌入其中的感覺。

5、美化包裝

第一步,從網上找一張清晰度高的炫酷圖片,找圖確實是一個很艱難的過程,要提前構思好想法。個人比較喜歡藍色大海,選擇了上圖。

第二步,將之前繪製的模型「置入」其中,為了體現出被「沖洗」的感覺,我設置的傾斜角度為18°,然後通過ppt的調色功能進行亮度調節,使得顏色能夠融入大海顏色。

第三步,利用ppt的背景刪除功能,多複製幾張原圖,進行選擇性刪除,這樣做的目的是為了「掩蓋」模型的下半部分。

第四步,加入其他的元素,其中「淹水」效果也是通過ppt的背景刪除功能,大家可以想想怎麼做的。離子是半透明球,研之成理之前ppt教程有提到如何繪製,這樣一副封面圖就基本完成啦!

整體效果圖如下,是不是感覺很「高大上」?沒錯,該封面就是完全由ppt製作,大家可以多多思考,如何畫出更漂亮的圖,或者有比我更簡單的方法,歡迎一起學習!(PS:上圖封面為Tu等人的JMCA文章,因為藍色調很配自己繪製的封面,所以我只是把他們的封面圖換成了自己繪製的封面)

這個教程怎麼樣呢,是不是認為ppt是個神奇的軟體?沒錯,只要你肯專研一種軟體,一定能發揮出意想不到的成果,所以畫圖過程和科研是一樣的,要有刻苦的精神和豐富的創造力。其他未畫的圖過程幾乎一樣,大家趕緊去試試吧!

~~~~~~分割線~~~~~~~待更~~~~~~~

默默的來打個廣告:

工作室提供科技論文封面設計,文章中示意圖、流程圖設計,以及模型的構建。

聯繫方式:

郵箱:sciencevisual@163.com

QQ:1569828704

(如果觸犯了知乎的規則,聯繫刪除。)

~~~~~~分割線~~~~~~~20171107更~~~~~~~

今天再和大家更新一個實例:

瑞士洛桑理工大學年輕教授Andras Kis 通過ALD技術在單層MoS2表面製備一層30 nm厚的HfO2薄膜作為柵介質,其室溫流動性與石墨烯納米棒相當,晶體管的室溫電流開/關率達到1×10^8,超低待機功耗。雖然電子遷移率比石墨烯低,但是石墨烯沒有帶隙,且開關比低,硫化鉬的問世給了半導體領域注入了新的希望。今天給大家帶來的是ppt的MoS2電極模型繪製教程,效果如下圖所示:

很多人肯定會有這樣的疑問,MoS2分子層是網上找的圖片?ppt怎麼做出這種有「質感」的層?首先可以明確的告訴大家,這個模型沒有藉助其他軟體或者插件,整個模型包括分子層完全由ppt繪製,下面開始今天的教程:

1、學會分析

是不是很簡單?主要組成其實就三個部分:首先是透視立方,學習了上一期ppt教程後,這個簡直不能更Easy~通過調整透視角度和深度即可完成;材質光線部分上一期沒有仔細說明,其實也是非常簡單的一項,嘗試幾次就會了;最後可能是最有技術難度的一部分,也就是MoS2原子層的繪製,但其實也只是凸台的升級版,所以不用擔心,有了之前的基礎,再也不用擔心出現買家秀了

o(* ̄▽ ̄*)ブ!

2、透視立方

第一步,繪製一個圓角矩形(為了凸顯立體效果);第二步,設置該矩形的三維角度,X軸旋轉60°Y軸旋轉30°Z軸旋轉0°透視為120°(由於本次教程效果圖中各個透視立方三維參數均不同,所以用了上一期教程的參數設置,其一參數X50°Y10°Z356°T45°);第三步,調整深度。是不是和上一期幾乎一樣,沒錯,掌握了上一期的內容,本期難度會大大降低O(∩_∩)O。

3、材質光線

第一步,將上一步的結果圖複製過來(當我沒說…);第二步,設置光線角度,光線角度相當於3D軟體中的燈光,可以調節局部的明暗和陰影,圖中示意為200°,這個其實無所謂,怎麼看得舒服就怎麼調整,建議明暗不要相差太大;第三步,加上凸台效果,設置的高寬建議1:1,是不是就非常有立體感了?到了這一步,模型已經繪製完成了1/3,但是很多人組合時候會出現這種情況:

會不會覺得很奇怪,為什麼我複製一個一模一樣的缺無法對齊?那這樣怎麼組裝啊QAQ。認真思考思考,複習一下空間幾何關係,如下圖所示:

大家是不是恍然大悟了,因為透視視圖下會造成「空間扭曲」,圖中下角標的1和2長度均不相等且在空間是相交的,所以你組裝不起來是很正常的事情,那麼該怎麼辦呢?解決方法如下:

其中R指減少,E指增加,Y指Y軸旋轉,W指寬度,D指深度,H指高度,按照這個操作,是不是就能對的非常整齊啦( ?? ω ?? )y,有時間趕緊翻開高數課本算算調整多少參數最完美。

4、凸撞球柱

第一步,創建一個圓;第二步,加上凸台效果(一直是凸台,是不是都快膩了哈哈);第三步,加上深度就可以得到圓柱;第四步,將「圓柱」和球體組裝成MoS2結構(有一個Mo原子沒畫出來是為了省事,其實畫出來也是被擋住的)。第四部關鍵是掌握透視和旋轉以及圖層上下的用法,慢慢調整會比我更加逼真的!

大家親自嘗試就會發現,如果只是簡單的複製粘貼排列就會出現左圖的情況,立體感很差,聰明的同學肯定想起了剛剛的「透視幾何」知識,所以只需要把越「裡面」的單元整體略微縮小一點即可,如右圖所示,是不是很明顯立體感增強了!

5、美化包裝

第一步依然是從網上找一張清晰度高的炫酷圖片,提前構思好想法。這次感覺色調和封面含義可以與宇宙星空光彩聯繫起來,所以選擇了上圖。

第二步,去網上下載一些流星炫光之類的素材加以修飾,目的是表現出光電效應的存在以及使模型和背景更加融為一體。

第三步,置入背景之中,享受單獨完成封面製作的感受(p≧w≦q)!

整體效果圖如上,是不是很炫酷?ppt不是萬能的,但我們可以從裡面挖掘出很多的功能,所以,對於不想學習複雜3D軟體的你,就一起來用ppt科研製圖吧!(有疑問和建議歡迎在下方留言!)


工科生說Matlab完爆其他
數學系的說Mathematica高貴冷艷
統計系的說R語言作圖領域天下無敵
計算機系的說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 在他的博客中提到

Q: 你的 Blog 配圖都好精緻!究竟是用什麼畫圖的呢?
A: 我用 http://Paint.NET 、 Pixelmator 、 Mathematica 、 GeoGebra 等工具畫圖。配圖的秘訣就是背景透明化、圖形反鋸齒化、注重色彩、多用 png 、圖內字體大小與正文一致。

以下是圖形範例:

以上。


請允許我重複回答一下、吧!美好的 R ggplot2 包 絕對值得被重複提起嗯!

複雜的和美麗的荔紙多得無以附加,其實也許你需要一些更切實的應用,比如多圖對比。下面的圖例摘自網路,數據來自 Pippa Norris Shared Datasets,做的是 191 個國家 2000年 GDP per capita 與 Polity score of democracy 的散點圖。

先看個用 lattice 包的圖例:

再來看用 ggplot2 的效果:


且不說美不美,是不是立刻感覺信息量大了起來、解釋起來會更輕鬆?嗯,我的碩士論文裡也用了類似上圖的圖例,比較了六個箱圖。


好東西就要廣而告之。相信我!


安利給大家一個寫論文都會遇到的作圖工具ProcessOnProcessOn - 免費在線作圖,實時協作

首先如果你需要做圖的話,不用翻牆,不用下載軟體,可以直接在線操作,登錄網站就可以,不管是原型圖、思維導圖、流程圖還是UML圖,都支持繪製,不用為了寫個論文電腦里裝太多作圖工具。

或者你論文提綱總是需要反覆修改整理思路也可以用裡面的思維導圖來幫助你梳理,把自己的思維離散之後再專註,效果還是挺不錯的。


而且網站內部還有很模板可以使用,如果寫論文的時候沒思路或者不知道如何把圖做的更美化,可以在推薦頁面里搜一下,不少大神都分享了自己的作品。




就先給大家截幾張這樣的吧,可以根據自己的需要查找ProcessOn - 免費在線作圖,實時協作

恩,畢業季到了,大家加油


木有人講生物醫學方向的么?我來試答一波~雖然跟其他專業有共性,但也還是有些自己的特點。比如大多醫生上臨床已經夠忙的了,做科研都要佔用業餘時間,所以嘛,簡單粗暴就好。

在醫學SCI中常見的圖片大致可以分為幾大類別,不同的圖片適用軟體有所不同。除軟體之外,還有很多注意事項,漂亮不漂亮各有審美,但不可以踩坑。

【統計圖】

大多可用Excel,專業點的Graphpad PrismOrigin也很受歡迎,編程愛好者則多用R。Graphpad能滿足大多生物醫學的統計要求,R則幾乎沒有解決不了的統計問題。

像柱狀圖,散點圖、線圖、生存曲線、流式圖等等,從數據生成的圖。期刊對此類Figure要求最嚴,每種類型的統計圖都有非常多需要注意的細節。

這張就是典型的柱狀圖,各種元素也很齊全。

圖片要點

編號:如果是有多張圖片拼合在一起的話,每張圖片要用字母A、B、C、D來進行編號。每張編號的圖片都要有相應的圖注說明。

標題:多張圖片在一起時,除了編號之外,最好還能有個標題。這樣比編號更直觀,讓讀者不看圖注也能大概明白圖片內容。

縱軸:多是數值,要注意有時候必須註明單位。

橫軸:內容是分組情況時應寫清組名,內容是數字(比如時間)時,要註明單位。

誤差線:表示標準差或標準誤。

顯著性符號:要在圖注中說明各種符號所表示的含義,一般來說*/**/***分別代表P&<0.05/P&<0.01/P&<0.001。除*外,常用的還有#、△等。

散點圖

線圖

生存曲線(這個的確Graphpad大法好)

流式圖(可用FlowJo製作)

【照片】

照片也是一種常用的圖片類型,能夠對現實如實的反應,在臨床研究中使用的更多。

圖片要點

照片背景應選用與其反差較大的顏色,突出邊緣。下方應放置米尺,做標尺用,來說明大小。

照片應遵照真實性原則,可以適當調整整體亮度、對比度等,但不能對局部進行PS調整。同時,可以用箭頭指示病變部位。

X-ray、CT、PET-CT、MRI等造影照片是照片的另一大種類。此類照片最好保留電子版圖片。如果只有膠片資料,則應盡量使用專業掃描儀提取電子相片。若條件不允許,也應擺正角度,用高解析度的數碼相機記錄。

【切片染色圖】

其實這也是照片的一個亞型,但作為很多疾病診斷的金標準,染色圖成為了很多論文中的支持結論的重要依據。染色圖通過不同的化學試劑+抗體的組合,可以定性反映微觀結構的改變,蛋白表達的分布等等,還有更為精細的量化操作,所以獨立出來。

圖片要點

做染色圖的時候要貼上比例尺,比例尺能夠說明微觀結構的尺寸及放大倍數,是重要參數。上圖中雖然沒有畫出來,但在圖注里有這麼一句說明:

C) IHC analysis of ZFX protein expression in human clinical samples of normal tissues, atrophy, intestinal metaplasia, dysplasia and GC tissues (n = 30, respectively), original magnification: X 200.

還要注意三個「度」。拍照時,注意調節曝光度,曝光度過低會讓畫面整體灰暗,曝光過度則可能損失圖片重要細節,且後期很難用軟體矯正。調節飽和度,飽和度代表畫面的「鮮艷」程度。調節平衡度,盡量保證空白區域為純白色,未矯正白平衡的照片會整體偏藍或偏黃。

熒光染色圖

和切片染色類似,只不過用熒光素標記分子,非常漂亮的一種圖,通常會展示同一視野下多種分子的表達情況,並在最後展示合併(Merge)後的圖片,可用Image J製作。此類圖片要注意標記每種顏色代表的分子。

【條帶圖】

以Western Blot最為多見,還有半定量PCR、SDS page、免疫共沉澱等。條帶圖上的重要的信息包括:條帶代表的分子名稱、條帶分子量以及分組情況。

圖片要點

條帶左側標記了分子名稱;上方用劃橫線的方式將若干條帶分組;也可以在右側標記蛋白分子大小(建議標註單位kDa)。

將不同條帶裁剪組合在一張圖上時,要注意保留條帶上下一定的空白區域(或加上明顯的邊框),如有雜帶也應如實保留,否則可能遭到質疑。

可以在不損失細節的情況下調整條帶整體的亮度、對比度,但絕不能對條帶局部進行調整甚至塗改,也不能從中間挖去某個條帶。 也不能出現一圖多用的情況,尤其注意不要重複使用同一張內參的條帶圖,也不要對條帶進行簡單的水平或垂直翻轉就再次使用,一般editor和reviewer對這一點非常敏感,涉及科研誠信,不能馬虎。

前不久東京大學的渡邊嘉典教授就是用這個姿勢掉坑的啊,還有些小夥伴表示「大家不都這樣么」,唉,你非要浪出天際我也沒辦法。

【示意圖】

用於說明概念,總結生化過程、通路等,要求直觀明確。

細胞作用示意圖

這類圖簡單的可用PPT,精緻的可用PS、AI。雖說後者可以搞得很複雜,但我們又不是專業搞設計的,會其中幾個常用操作就行了。

更多的科研作圖在解螺旋公眾號(ID: helixlife)里有很多,也不少視頻課可以參考,比如用得最多的GraphPad Prism 7 作圖教程https://www.helixlife.cn/detail-10.html

歡迎大家來關注!


Xfig

Tikz/PGF


OmniGraffle


Inkscape


Dia


Graphviz


GeoGebra


ipe


Mahtematica


conceptdraw


看來大家都喜歡代碼流啊,但是用代碼大量微調作圖的細節還是很麻煩吧。。。比如把圖注向右上方偏移2毫米,坐標 ticks 調稀疏這些操作,對於出版級的作圖是經常遇到的。這時候需要花大量時間(如果你不是經常干這個的話)查作圖命令的文檔,上stack overflow搜尋奇技淫巧。。。


這裡強烈推薦一個無腦的、互動式的作圖工具,Veusz。基於Python寫的,免費開源。有點像Excel,把數據導入成表格然後作圖,可以直觀地手調幾乎所有細節。放心,比excel的出圖專業多了,畫風嚴謹樸素。

另外,也可以使用矢量圖片編輯器對圖片(svg,eps或者pdf格式)做「後期處理」,比如把字體調大一點、加個小箭頭啊什麼的。我推薦 inkscape,也是開源免費的(現在在osx上也很流暢啦!)。


推薦閱讀:

世界上有哪些失敗的大型科研項目?
海洋科學目前有哪些研究熱點及應用前景?
養細胞有哪些經驗和教訓?

TAG:科研 | 論文 | 繪圖 | 繪圖軟體 | 論文插圖 |