science图表_使用基于matplotlib的SciencePlots绘制精美图表
開源項目地址:https://github.com/garrettj403/SciencePlots
安裝這個包,需要輸入魔法:
pip install SciencePlots
例如繪制如下函數(shù),導(dǎo)入matplotlib包:
import numpy as np import matplotlib.pyplot as plt
def model(x, p): return x ** (2 * p + 1) / (1 + x ** (2 * p))
x = np.linspace(0.75, 1.25, 201)
science樣式,代碼如下:
with plt.style.context(['science']): fig, ax = plt.subplots() for p in [10, 15, 20, 30, 50, 100]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig1.pdf') fig.savefig('figures/fig1.jpg', dpi=300)
science+ieee樣式,代碼如下:
with plt.style.context(['science', 'ieee']): fig, ax = plt.subplots() for p in [10, 20, 50]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig2.pdf') fig.savefig('figures/fig2.jpg', dpi=300)
science+scatter樣式:
with plt.style.context(['science', 'scatter']): fig, ax = plt.subplots(figsize=(4,4)) ax.plot([-2, 2], [-2, 2], 'k--') ax.fill_between([-2, 2], [-2.2, 1.8], [-1.8, 2.2], color='dodgerblue', alpha=0.2, lw=0) for i in range(7): x1 = np.random.normal(0, 0.5, 10) y1 = x1 + np.random.normal(0, 0.2, 10) ax.plot(x1, y1, label=r"$^\#${}".format(i+1)) ax.legend(title='Sample', loc=2) ax.set_xlabel(r"$\log_{10}\left(\frac{L_\mathrm{IR}}{\mathrm{L}_\odot}\right)$") ax.set_ylabel(r"$\log_{10}\left(\frac{L_\mathrm{6.2}}{\mathrm{L}_\odot}\right)$") ax.set_xlim([-2, 2]) ax.set_ylim([-2, 2]) fig.savefig('figures/fig3.pdf') fig.savefig('figures/fig3.jpg', dpi=300)
high-vis樣式:
with plt.style.context(['science', 'high-vis']): fig, ax = plt.subplots() for p in [10, 15, 20, 30, 50, 100]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig4.pdf') fig.savefig('figures/fig4.jpg', dpi=300)
dark_background+science+high-vis樣式:
with plt.style.context(['dark_background', 'science', 'high-vis']): fig, ax = plt.subplots() for p in [10, 15, 20, 30, 50, 100]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig5.pdf') fig.savefig('figures/fig5.jpg', dpi=300)
bright樣式
with plt.style.context(['science', 'bright']): fig, ax = plt.subplots() for p in [5, 10, 15, 20, 30, 50, 100]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig6.pdf') fig.savefig('figures/fig6.jpg', dpi=300)
vibrant樣式:
with plt.style.context(['science', 'vibrant']): fig, ax = plt.subplots() for p in [5, 10, 15, 20, 30, 50, 100]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig7.pdf') fig.savefig('figures/fig7.jpg', dpi=300)
muted樣式:
with plt.style.context(['science', 'muted']): fig, ax = plt.subplots() for p in [5, 7, 10, 15, 20, 30, 38, 50, 100, 500]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order', fontsize=7) ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig8.pdf') fig.savefig('figures/fig8.jpg', dpi=300)
retro樣式:
with plt.style.context(['science', 'retro']): fig, ax = plt.subplots() for p in [10, 15, 20, 30, 50, 100]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig9.pdf') fig.savefig('figures/fig9.jpg', dpi=300)
science+notebook樣式:
with plt.style.context(['science', 'notebook']): fig, ax = plt.subplots() for p in [10, 15, 20, 30, 50, 100]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig10.pdf') fig.savefig('figures/fig10.jpg', dpi=300)
science+grid樣式,代碼如下:
with plt.style.context(['science', 'grid']): fig, ax = plt.subplots() for p in [10, 15, 20, 30, 50, 100]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.set(xlabel='Voltage (mV)') ax.set(ylabel='Current ($\mu$A)') ax.autoscale(tight=True) fig.savefig('figures/fig11.pdf') fig.savefig('figures/fig11.jpg', dpi=300)
先不說了,廣告時間又到了,現(xiàn)在植入廣告:幾個《傳熱學(xué)》相關(guān)的小程序總結(jié)如下,可在微信中點擊體驗:
有限元三角單元網(wǎng)格自動剖分
Delaunay三角化初體驗
(理論戳這)
Contour等值線繪制
(理論戳這)
2D非穩(wěn)態(tài)溫度場有限元分析
1D穩(wěn)態(tài)導(dǎo)熱溫度場求解
(源碼戳這)
1D非穩(wěn)態(tài)導(dǎo)熱溫度場求解程序
(源碼戳這)
2D穩(wěn)態(tài)導(dǎo)熱溫度場求解
(源碼戳這)
普朗克黑體單色輻射力
《傳熱學(xué)》相關(guān)小程序演示動畫如下(其中下圖1D非穩(wěn)態(tài)導(dǎo)熱計算發(fā)散,調(diào)小時間步長后重新計算,結(jié)果收斂!):
黑體單色輻射力如下圖,可見溫度越高,同頻率輻射力越大:
《(計算)流體力學(xué)》中的幾個小程序,可在微信中點擊體驗:
Blasius偏微分方程求解速度邊界層
(理論這里)
理想流體在管道中的有勢流動
(源碼戳這)
渦量-流函數(shù)法求解頂驅(qū)方腔流動
(源碼戳這)
SIMPLE算法求解頂驅(qū)方腔流動
(源碼戳這)
Lattice Boltzmann Method計算繞流演示
(參考源碼)
流體力學(xué)實驗在線演示
進(jìn)行演示
關(guān)于《(計算)流體力學(xué)》相關(guān)的幾個小程序演示動畫如下:
LBM(=Lattice Boltzmann Method)計算得到的圓柱繞流“卡門渦街”演示(由于網(wǎng)格較少,分辨率低,圓柱近乎正方形):
順便,《(熱工過程)自動控制》中關(guān)于PID控制器的仿真可點擊此處體驗:PID控制演示小程序,(PID控制相關(guān)視頻見:基礎(chǔ)/整定/重要補(bǔ)充)。動畫如下:
(正文完!)
現(xiàn)將往期內(nèi)容制成目錄,內(nèi)容如下:
1前言(已完成)
2HTML5 基礎(chǔ)(已完成)
2.1 開發(fā)平臺搭建(已完成)
2.2 HTML5基礎(chǔ)入門(已完成)
2.2.1 js基礎(chǔ)(已完成)
2.2.2 HTML標(biāo)簽簡介(已完成)
2.2.3 文檔對象模型DOM及表單(已完成)
2.2.4 HTML5 Canvas繪圖基礎(chǔ)(已完成)
2.2.5 HTML5程序調(diào)試(已完成)
2.2.6 第三方j(luò)s類庫(已完成)
2.2.7webAssemble簡介/工具鏈配置/應(yīng)用DemoCode
2.3 簡單網(wǎng)頁編寫Primer(已完成)
2.3.1 基于easyUI(已完成)
2.3.2 基于bootstrap(已完成)
2.3.3 Wrap it up!(已完成)
2.4 電腦/手機(jī)客戶端開發(fā)簡介(已完成)
2.5 node.js回首望(已完成)
3 基于HTML5的數(shù)據(jù)可視化(已完成)
3.1 Contour繪制(已完成)
3.1.1 借助顯卡GPU繪制Contour(已完成)
3.1.2 使用繪圖API繪制Contour的思路(已完成)
3.1.3 繪制三維Contour圖的思路(已完成)
3.2 矢量圖的繪制(已完成)
3.3 繪制曲線(已完成)
3.4 js生成報表(已完成)
4 高等數(shù)學(xué)中若干簡單數(shù)值計算算例(已完成)
4.1 數(shù)值積分、高等函數(shù)繪制(已完成)
4.2 非線性方程求解(已完成)
4.3 差分與簡單常微分方程初值問題(已完成)
5 使用HTML5編程實現(xiàn)熱傳導(dǎo)溫度場求解(已完成)
5.1 一維導(dǎo)熱算例(已完成)
5.1.1一維無內(nèi)熱源溫度場數(shù)值模擬(基于基于HTML5編程)(已完成)
5.1.2 一維非穩(wěn)態(tài)無內(nèi)熱源導(dǎo)熱程序(已完成)
5.2 二維導(dǎo)熱算例-綜述(已完成)
5.2.1 二維導(dǎo)熱算例-熱導(dǎo)的概念(已完成)
5.2.2 二維導(dǎo)熱算例-迭代計算(已完成)
5.2.3 二維導(dǎo)熱算例-整體架構(gòu)(已完成)
5.2.4 二維無內(nèi)熱源穩(wěn)態(tài)導(dǎo)熱程序(已完成)
5.2.5.1 webGL顯式迭代計算溫度場的shader[顯卡風(fēng)扇不能停]
5.2.5.2 webGL隱式迭代計算溫度場的shader[顯卡風(fēng)扇不能停]
5.3 幾個傳熱學(xué)視頻
5.3.1 [視頻]導(dǎo)熱控制偏微分方程
5.3.2 [視頻]一維肋的穩(wěn)態(tài)導(dǎo)熱溫度場求解
5.3.3 [視頻]集中參數(shù)法求解集總體的非穩(wěn)態(tài)溫度場
5.3.4 [視頻]熱傳導(dǎo)問題的數(shù)值解法
5.3.5 [視頻]二維常物性不可壓流體對流換熱問題的數(shù)學(xué)描述
5.3.6 [視頻]兩個封閉系統(tǒng)輻射換熱計算
5.4 Wrap it up!(已完成)
6 工程流體力學(xué)(已完成)
6.1 理想流體的簡單勢流計算(已完成)
6.2 粘性流體渦量-流函數(shù)算法(已完成)
6.3 SIMPLE算法(已完成)
6.4 投影算法(已完成)
6.5 邊界層-Blasius方程的求解(已完成)
6.6 開源軟件與商業(yè)軟件(已完成)
7 小型制冷設(shè)計(已完成)
7.1 使用js多快好省繪制簡單CAD圖紙(已完成)
7.1.1 二維圖紙繪制(已完成)
7.1.2 三維圖紙繪制(已完成)
7.2 冷凝器算例(已完成)
7.2.1 需求分析及前端界面(已完成)
7.2.2 計算程序(已完成)
7.2.3 圖紙輸出(已完成)
7.3 蒸發(fā)器算例(已完成)
8 熱工過程自動控制(已完成)
8.1 時域分析與頻域分析(已完成)
8.2 汽包鍋爐水位自動控制(已完成)
8.2a 數(shù)字PID控制示例,以液位控制為例
8.3 串口讀寫(已完成)
8.4 PID控制器三部分:基礎(chǔ)/整定/重要補(bǔ)充(已完成)
9 物聯(lián)網(wǎng)(已完成)
10 機(jī)器學(xué)習(xí)(已完成)
11 虛擬現(xiàn)實(已完成)
11.1 webVR/AR:webGL的副業(yè)
Where to go from here?(已完成)
[python從入門到放棄系列]
Python基本命令、函數(shù)、數(shù)據(jù)結(jié)構(gòu)
8個常用Python庫從安裝到應(yīng)用
python API操作tecplot做數(shù)據(jù)處理
(已完成)
用pyautogui批量輸入表單(已完成)
推公式sympy(已完成)
基于百度OCR的文字識別(已完成)
pyautogui+acrobat去PDF水印一例(已完成)
[瞎侃系列]
平行宇宙引-雙縫干涉實驗-量子糾纏態(tài)
Gmsh使用教程
不服跑個分!-解Laplace偏微分方
《傳熱學(xué)/流體力學(xué)》中幾個簡單演示程序
LBM計算卡門渦街繞流
總結(jié)
以上是生活随笔為你收集整理的science图表_使用基于matplotlib的SciencePlots绘制精美图表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java学习——传说中的13个规范
- 下一篇: CDN加速技术可以解决网络客户的哪些痛点