4個(gè)Python庫(kù)來(lái)美化你的Matplotlib圖表!
來(lái)源:
奇酷教育 發(fā)表于:
4個(gè)Python庫(kù)來(lái)美化你的Matplotlib圖表!
4個(gè)Python庫(kù)來(lái)美化你的Matplotlib圖表!
而且每個(gè)方法都可以使用兩行代碼來(lái)實(shí)現(xiàn),一條import語(yǔ)句和一條Matplotlib的使用語(yǔ)句。
盡管這些庫(kù)非常適合創(chuàng)建酷炫的圖表,但是你還是需要了解你的目標(biāo)受眾以及可能遇到的視覺(jué)問(wèn)題,比如色盲等情況。
下面就讓我們來(lái)一起看看吧!
在開(kāi)始使用探索Matplotlib圖表之前,先創(chuàng)建一些虛擬數(shù)據(jù),用來(lái)生成圖表。
幾行代碼輕松搞定。
import numpy as np
# 生成 x 值
x = np.linspace( 0 , 10 , 20 )
# 生成 y 值
y = np.sin(x)
y2 = np.cos(x)
01 賽博朋克風(fēng)格——mplcyberpunk
賽博朋克是一種科幻小說(shuō)的子類型,以其反烏托邦、技術(shù)先進(jìn)的世界和反文化態(tài)度而聞名。
場(chǎng)景通常以未來(lái)主義風(fēng)格描繪,經(jīng)常包括霓虹燈及明亮、鮮艷的色彩等元素。
比如,在制作海報(bào)或者是信息圖表時(shí),你需要額外的元素來(lái)吸引讀者。這便是賽博朋克風(fēng)格可以發(fā)揮作用的地方。
但是,你也要知道,它在為出版物創(chuàng)建圖表或在論文中使用時(shí)可能會(huì)被視為不專業(yè),并且可能不適合視覺(jué)有問(wèn)題的讀者。
要開(kāi)始使用這個(gè)主題,需要先安裝mplcyberpunk庫(kù)。
# 安裝
pip install mplcyberpunk
使用賽博朋克主題,只需要調(diào)用plt.style.use(),并傳入?yún)?shù)cypberpunk即可。
使用plt.scatter()繪制散點(diǎn)圖。為了使我們的散點(diǎn)發(fā)光,還需要調(diào)用make_scatter_glow()函數(shù)。
import mplcyberpunk
import matplotlib.pyplot as plt
# 使用賽博朋克風(fēng)樣式
plt.style.use('cyberpunk')
plt.figure(figsize=(8, 8))
# 散點(diǎn)圖1
plt.scatter(x, y, marker='o')
mplcyberpunk.make_scatter_glow()
# 散點(diǎn)圖2
plt.scatter(x, y2, marker='o', c='lime')
mplcyberpunk.make_scatter_glow()
# 坐標(biāo)軸名稱
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
# 顯示
plt.show()
運(yùn)行上面的代碼時(shí),可以得到下圖。
將賽博朋克主題應(yīng)用到折線圖中。為了使線條發(fā)光,我們可以調(diào)用make_lines_glow()。
# 使用賽博朋克風(fēng)樣式
plt.style.use('cyberpunk')
plt.figure(figsize=(8, 8))
# 折線圖
plt.plot(x, y, marker='o')
plt.plot(x, y2, marker='o', c='lime')
# 發(fā)光效果
mplcyberpunk.make_lines_glow()
# 坐標(biāo)軸名稱
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
# 顯示
plt.show()
運(yùn)行完成,將返回帶有霓虹燈線條的圖表。
我們還可以將圖表效果更進(jìn)一步,在線條和X軸之間添加漸變填充。
# 使用賽博朋克風(fēng)樣式
plt.style.use('cyberpunk')
plt.figure(figsize=(8, 8))
# 折線圖
plt.plot(x, y, marker='o')
plt.plot(x, y2, marker='o', c='lime')
# 發(fā)光效果+漸變填充
mplcyberpunk.add_gradient_fill(alpha_gradientglow=0.5, gradient_start='zero')
# 坐標(biāo)軸名稱
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
# 顯示
plt.show()
這便創(chuàng)造了一個(gè)非常有趣的效果。
當(dāng)然這個(gè)賽博朋克庫(kù)還有其他的美化參數(shù),大家可以去GitHub上查看使用。
地址:https://github.com/dhaitz/mplcyberpunk
02 Matplotx
matplotx庫(kù)提供了一種簡(jiǎn)單的方法可以快速對(duì)matplotlib圖表進(jìn)行美化。
它包含幾個(gè)可以便捷使用,且可應(yīng)用于任何matplotlib圖表的主題。
在深色主題的Jupyter Notebook或VSCode中處理圖表時(shí),出現(xiàn)亮白色的圖表可能會(huì)有些許刺眼。
為了減少這種影響,我們可以將樣式設(shè)為深色主題。但是,這需要好幾行代碼才能實(shí)現(xiàn)。
正如接下來(lái)所看到的,Matplotx使這個(gè)過(guò)程變得更加容易。由于它包含多個(gè)主題,我們可以輕松找到一個(gè)與VSCode主題相匹配的。
通過(guò)打開(kāi)終端/命令提示符并運(yùn)行以下命令,可以將Matplotx安裝到你的Python環(huán)境中去。
# 安裝
pip install matplotx
安裝好以后,可以使用with語(yǔ)句來(lái)調(diào)用plt.style.context和傳入matplotx.styles。
在這里,我們可以選擇眾多的可用主題。 比如非常流行的Dracula主題。
import matplotx
with plt.style.context(matplotx.styles.dracula):
# 散點(diǎn)圖
plt.scatter(x, y, c=y2)
# 顏色類型
plt.colorbar(label='Y2')
# 坐標(biāo)軸名稱
plt.xlabel('X')
plt.ylabel('Y')
# 顯示
plt.show()
運(yùn)行代碼,得到下圖。
其中matplotx中有許多不同的樣式,具體情況如下。
下面讓我們用Pitaya Smoothie主題來(lái)創(chuàng)建一個(gè)折線圖。
由于有多個(gè)子主題,我們需要使用方括號(hào)訪問(wèn)它們。
在這個(gè)例子中,我們有一個(gè)深色主題,所以我們需要傳入「dark」參數(shù)才能使用。
with plt.style.context(matplotx.styles.pitaya_smoothie['dark']):
# 折線圖
plt.plot(x, y, marker='o')
plt.plot(x, y2, marker='o')
# 坐標(biāo)軸名稱
plt.xlabel('X')
plt.ylabel('Y')
# 顯示
plt.show()
當(dāng)我們運(yùn)行上面的代碼時(shí),我們會(huì)得到下面這個(gè)折線圖。
當(dāng)然也有許多淺色主題。比如Pitaya Smoothie有一個(gè),可以像這樣使用。
with plt.style.context(matplotx.styles.pitaya_smoothie['light']):
如果你想了解更多有關(guān)此庫(kù)的信息,可以查看它的GitHub。
地址:https://github.com/nschloe/matplotx
03 量子黑色風(fēng)格
QuantumBlack Labs是一家成立于2012年的公司,旨在幫助其他公司使用數(shù)據(jù)做出更好的決策。
他們使用機(jī)器學(xué)習(xí)和人工智能等先進(jìn)技術(shù)來(lái)分析醫(yī)療保健、金融和交通等一系列行業(yè)的復(fù)雜數(shù)據(jù)集。
幾年前,他們?cè)贕itHub上發(fā)布了自己的樣式庫(kù)。
地址:
https://github.com/quantumblacklabs/qbstyles
要使用該主題,我們需要安裝這個(gè)Python庫(kù)。
# 安裝
pip install qbstyles
安裝好以后,就可以使用了~
from qbstyles import mpl_style
# 深色主題開(kāi)
mpl_style(dark=True)
# 深色主題關(guān)
mpl_style(dark=False)
來(lái)創(chuàng)建一個(gè)散點(diǎn)圖,代碼如下。
from qbstyles import mpl_style
# 深色主題
mpl_style(dark=True)
# 非深色主題
mpl_style(dark=False)
# 散點(diǎn)圖
plt.scatter(x, y, c=y2)
# 顏色
plt.colorbar(label='Y2')
# 坐標(biāo)軸名稱
plt.xlabel('X')
plt.ylabel('Y')
# 顯示
plt.show()
返回如下兩種圖表結(jié)果,具體取決于你選擇的是淺色還是深色主題。
讓我們看看深色主題的折線圖是什么樣子的。
# 深色主題
mpl_style(dark=True)
# 折線圖
plt.plot(x, y, marker='o')
plt.plot(x, y2, marker='o')
# 坐標(biāo)軸名稱
plt.xlabel('X')
plt.ylabel('Y')
# 顯示
plt.show()
當(dāng)我們運(yùn)行上面的代碼時(shí),我們會(huì)得到下面的圖。
這個(gè)庫(kù)的繪圖樣式與Matplotx中生成的繪圖相比略有緩和。
但是,它確實(shí)感覺(jué)更專業(yè)一些,尤其是淺色主題的繪圖。非常適合應(yīng)用在專業(yè)演示或培訓(xùn)課程材料中。
04 科學(xué)圖表
在撰寫科學(xué)期刊或會(huì)議文章時(shí),創(chuàng)建一個(gè)清晰、簡(jiǎn)單且易于解釋的圖表至關(guān)重要。
一些期刊,例如Nature,都是需要固定的樣式,方便簡(jiǎn)化讀者難以理解的圖表。
這就是SciencePlots庫(kù)的用武之地。 它經(jīng)常被用于生成常見(jiàn)的科學(xué)期刊樣式圖表,從而使創(chuàng)建圖表變得更加容易。
這個(gè)庫(kù)的一大優(yōu)點(diǎn)是它使圖表適合黑白打印——這仍然是研究人員的普遍做法。通過(guò)更改線條樣式或確保分類數(shù)據(jù)的散點(diǎn)圖上有不同的形狀,這將使得線條很容易區(qū)分。
如果您想探索SciencePlots中更多可用的樣式,可以訪問(wèn)它的GitHub。
地址:
https://github.com/garrettj403/SciencePlots/wiki/Gallery
運(yùn)行SciencePlots庫(kù)需要在你的電腦上安裝LaTeX。你可以下面的地址找到有關(guān) LaTex以及如何安裝等更多詳細(xì)信息。
地址:https://www.latex-project.org/get/
在完成庫(kù)的安裝及LaTeX設(shè)置完成后,可以使用下面的代碼創(chuàng)建一個(gè)科學(xué)繪圖圖表。
import scienceplots
with plt.style.context(['science', 'high-vis']):
# 新建畫布
plt.figure(figsize=(6, 6))
# 折線圖
plt.plot(x, y, marker='o', label='Line 1')
plt.plot(x, y2, marker='o', label='Line 2')
# 坐標(biāo)軸名稱
plt.xlabel('X')
plt.ylabel('Y')
# 圖例
plt.legend()
# 顯示
plt.show()
當(dāng)我們運(yùn)行上面的代碼時(shí),我們得到以下圖表,這非常適合使用在期刊出版物中。
讓我們看看IEEE風(fēng)格是什么樣的。我們可以通過(guò)修改參數(shù)來(lái)創(chuàng)建一個(gè)。
with plt.style.context(['science', 'ieee']):
和上面的有點(diǎn)不一樣,顏色也變了,但還是一個(gè)很好看的科學(xué)期刊圖表。
這對(duì)于搞學(xué)術(shù)研究的同學(xué)幫助非常大。
通過(guò)使用SciencePlots,不再為調(diào)整大小、顏色和線條樣式而煩惱。