<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 7176字,需瀏覽 15分鐘

           ·

          2024-05-28 10:05

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
          重磅干貨,第一時(shí)間送達(dá)
          本文整理自知乎問答,僅用于學(xué)術(shù)分享,著作權(quán)歸作者所有。如有侵權(quán),請聯(lián)系后臺作刪文處理。編譯:極市平臺
          方法一

          作者|馮昱堯

          https://www.zhihu.com/question/21664179/answer/18928725

          強(qiáng)烈推薦 Python 的繪圖模塊 matplotlib: python plotting 。畫出來的圖真的是高端大氣上檔次,低調(diào)奢華有內(nèi)涵~ 適用于從 2D 到 3D,從標(biāo)量到矢量的各種繪圖。能夠保存成從 eps, pdf 到 svg, png, jpg 的多種格式。并且 Matplotlib 的繪圖函數(shù)基本上都與 Matlab 的繪圖函數(shù)名字都差不多,遷移的學(xué)習(xí)成本比較低。開源免費(fèi)。如圖所示(題目描述中的圖在最后):
          (以下圖片均引用自 Thumbnail gallery )

          像這種普通的函數(shù)圖象:
              
          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 數(shù)據(jù)?沒有問題 (不過用 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)

          四行代碼你就能擁有(后三行是畫坐標(biāo)平面上的等高線,嚴(yán)格的額說還是一行)。

          除此以外,不過你是矢量場,網(wǎng)絡(luò)還是什么奇葩的需求都能夠搞定:
              
          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公式的插入,當(dāng)別人畫的圖還是這個(gè)樣子的時(shí)候(以下圖片引用自Matplotlib Tutorial(譯))

          你能夠把它變成這個(gè)樣子:
          如果再搭配上 IPython 作為運(yùn)行終端(這張圖是自己的~):


          簡直就是神器啊,有木有!
          心動不如行動,還等什么?

          經(jīng)@許鋮同學(xué)提醒,再補(bǔ)充一句,matplotlib 還可以話 xkcd 風(fēng)格的圖呦~



          (圖片引用自網(wǎng)絡(luò))

          此外結(jié)合 IPython Notebook 后更多精彩內(nèi)容,請看http://nbviewer.ipython.org/

          如果嫌安裝麻煩并且恰好在 Windows 系統(tǒng)下的話可以嘗試Python的一個(gè)發(fā)行版winpython - Portable Scientific Python 2/3 32/64bit Distribution for Windows。

          鑒于@van li同學(xué)質(zhì)疑 matplotlib 是否能畫出題目中所示的圖像,我在這里將題目中的圖像用 matplotlib 畫出來如下:


          代碼在此處:
          https://gist.github.com/coldfog/c479124328fc6bb8b789
          代碼在此處:
          https://gist.github.com/coldfog/5da63a6958fc0a949b52

          看到樓下有人說配色和好看,唉....那我也貼幾個(gè)吧...只不過當(dāng)初限于篇幅沒有寫而已。

          首先,python 有一個(gè)專門的配色包jiffyclub/brewer2mpl 路 GitHub,提供了從美術(shù)角度來講的精美配色(戳這里感受ColorBrewer: Color Advice for Maps)。

          此外還有一些致力于美化繪圖的庫,用起來也都非常方便,比如olgabot/prettyplotlib 路 GitHub。

          廢話不多說,上圖就是王道。
          (一下圖片來源網(wǎng)絡(luò))

          有人可能會說需要復(fù)雜的設(shè)置,其實(shí)也不用。比如上邊這幅圖,只需要多加一個(gè)參數(shù)就好:
              
          cmap=brewer2mpl.get_map('RdBu', 'diverging', 8, reverse=True).mpl_colormap,

          樓下說到統(tǒng)計(jì)繪圖。嘛 seaborn (https://github.com/mwaskom/seaborn) 是一個(gè)調(diào)用 matplotlib 的統(tǒng)計(jì)繪圖庫,上圖:
          代碼一行,后邊的幾乎都是一行,沒做其他設(shè)置,默認(rèn)就這樣。我就不貼其他的代碼了:
              
          g = sns.jointplot(x1, x2, kind="kde", size=7, space=0)




          這還有個(gè)更炫酷的可交互式的繪圖,大家自己戳開看吧:
          http://nbviewer.ipython.org/github/plotly/python-user-guidechaocc/blob/master/s0_getting-started/s0_getting-started.ipynb
          哼哼,完爆了吧~~~~\(≧▽≦)/~

          ---
          遇到安裝問題的請嘗試Anaconda這個(gè)Python發(fā)行版。下載安裝后直接使用即可,它幾乎預(yù)裝了所有要用到的科學(xué)計(jì)算及可視化的庫。


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

          方法二

          作者|阿昆

          https://www.zhihu.com/question/21664179/answer/1182984311

          遍這個(gè)問題下的所有回答,發(fā)現(xiàn)凡是提到Matlab的,其評價(jià)中常有‘鋸齒’,‘菜鳥’,‘難看’,‘不忍直視’等標(biāo)簽。

          然而,2020年了,技術(shù)提升了,觀念進(jìn)步了,當(dāng)一些基本問題解決后,Matlab還那么‘不堪’嗎?




          觀察Mathematica、Origin、Python/matplotlib、R/ggplot2等軟件繪制的數(shù)據(jù)、結(jié)果圖,其與Matlab圖的差異主要體現(xiàn)在點(diǎn)、線、面等對象屬性(位置、尺寸、顏色等)的不同上。

          既然只是屬性的不同,那是不是只要修改一下這些信息,就可以實(shí)現(xiàn)各種軟件繪圖風(fēng)格之間的轉(zhuǎn)換了呢?

          答案是肯定的。

          比如,這是高贊回答 @馮昱堯用Python/matplotlib繪制的一幅圖:



          我們用Matlab默認(rèn)屬性來繪制,效果是這樣的(沒加誤差棒):


          然后,只需再修改一下位置、尺寸、顏色等信息,就可以得到風(fēng)格差不多的圖(沒加誤差棒):


          當(dāng)我們用這一思想來思考該如何繪制插圖時(shí),就很容易實(shí)現(xiàn)自己的小想法,仿造甚至創(chuàng)造出理想的插圖。

          比如,某一天,發(fā)現(xiàn)傍晚的天空顏色很美,心想:為什么不能把它畫到論文插圖里呢?(見:Matlab論文插圖配色2——自然漸變)

          于是,


          再比如,某一天,看到女朋友的照片,覺得很美,心想:為什么不能把她畫到論文插圖里呢?(見:Matlab論文插圖配色1——是女朋友的顏色)

          于是,



          這時(shí),有朋友就要說了:“哎呀答主,你整這些個(gè)花里花哨的東西,還不是得一行代碼一行代碼的敲出來啊,太麻煩了吧?!?/span>

          此言差矣。

          就像R有g(shù)gplot2,Python有matplotlib,Matlab其實(shí)也有很多現(xiàn)成的繪圖工具包,并不需要你自己開發(fā)。

          比如,

          Pierre Morel [1] 結(jié)合ggplot2,開發(fā)了gramm工具,用于繪制復(fù)雜圖形。

          Inspired by ggplot2 (Wickham 2009), the R implementation of “grammar of graphics” principles (Wilkinson 1999), gramm improves Matlab’s plotting functionality, allowing to generate complex figures using high-level object-oriented code.
          示例效果如下:


          類似的,Stephen Cobeldick [2] 將matplotlib配色方案移植到了Matlab。

          也就是說,在Matlab中就可以直接用matplotlib的配色方案了,就不必總是‘jet’了。
          The MatPlotLib 2.0 default colormaps ported to MATLAB. This submission also includes the Line ColorOrder colormaps!
          示例效果如下:


          還有很多專門針對論文插圖的工具包,這里就不一一介紹了。

          總的來說,工具只是工具,它們并沒有高低貴賤之分。

          若想畫出好看的插圖,關(guān)鍵還是在于使用工具的人。

          集中一點(diǎn),登峰造極。

          參考:
          Morel P . Gramm: grammar of graphics plotting in Matlab.
          Cobeldick S . MatPlotLib Perceptually Uniform Colormaps.
             
          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 83
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  小骚屄在线 | 小骚逼无码内射 | 翔田千里全部A片 | 2024无码| 一级无码视 |