Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解
Matplotlib 提供了大量配置參數(shù),這些參數(shù)可以但不限于讓我們從整體上調(diào)整通過 Matplotlib 繪制的圖形樣式,這里面的參數(shù)還有很多是功能性的,和其他工具結(jié)合時需要用的配置。
通過plt.rcParams,可以查看所有的配置信息:
import matplotlib.pyplot as plt print(len(plt.rcParams)) #運(yùn)行結(jié)果 312
總共居然有312個配置選項(xiàng)。
一一介紹所有的選項(xiàng)意義不大,具體可參考官方文檔:https://matplotlib.org/stable/api/matplotlib_configuration_api.html#matplotlib.rcParams
本篇只是拋磚引玉,介紹幾個常用的參數(shù),目的是了解參數(shù)的使用方法和產(chǎn)生的效果。
1. 坐標(biāo)軸
首先是坐標(biāo)軸相關(guān)的配置,通過下面的代碼可以看看有多個關(guān)于坐標(biāo)軸的配置:
import matplotlib.pyplot as plt
count = 1
for key, val in plt.rcParams.items():
#只打印以 axes 開頭的配置
if key.startswith("axes"):
print(key, " = ", val)
count += 1
#相關(guān)的配置有 38 個
print(f"axes 相關(guān)設(shè)置有: {count} 個")一共有38個關(guān)于坐標(biāo)軸的配置。
挑選一些配置,看看修改前后的效果:
x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) plt.rcParams.update(plt.rcParamsDefault) fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) ax.plot(x, y1, label="sin") ax.plot(x, y2, label="cos") ax.legend() plt.show()

修改了背景色,邊框和網(wǎng)格:
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.rcParams.update(plt.rcParamsDefault)
plt.rc("axes", facecolor="#FFE4C4", edgecolor="#A52A2A", grid=True)
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend()
plt.show()
2. 網(wǎng)格
關(guān)于網(wǎng)格,除了通過坐標(biāo)軸來設(shè)置,它還有自己的一些專門的設(shè)置選項(xiàng):
count = 1
for key, val in plt.rcParams.items():
if key.startswith("grid"):
print(key, " = ", val)
count += 1
print(f"grid 相關(guān)設(shè)置有: {count} 個")
總共有5個相關(guān)的配置,設(shè)置看看效果。
代碼和上面類似,這里只把設(shè)置部分的代碼列出來。
plt.rcParams.update(plt.rcParamsDefault)
plt.rc("axes", grid=True)
plt.rc("grid", linestyle="solid", linewidth=2, color="g", alpha=0.5)
這是修改后的效果,修改前的效果和上一節(jié)中的一樣。
3. 刻度
刻度相關(guān)的參數(shù)如下:
xcount = 1
ycount = 1
for key, val in plt.rcParams.items():
if key.startswith("xtick"):
print(key, " = ", val)
xcount += 1
if key.startswith("ytick"):
print(key, " = ", val)
ycount += 1
print(f"xtick 相關(guān)設(shè)置有: {xcount} 個")
print(f"ytick 相關(guān)設(shè)置有: {ycount} 個")
X軸刻度和Y軸刻度的相關(guān)設(shè)置各有21個。
設(shè)置方法和效果如下:
plt.rcParams.update(plt.rcParamsDefault)
plt.rc("xtick", color="g", direction="in")
plt.rc("ytick", color="r")
上面的示例分別設(shè)置X軸和Y軸的顏色,以及X軸的direction,direction="in" 表示刻度的小短線在圖形內(nèi)部,
Y軸沒設(shè)置這個屬性,它的刻度線是在圖形外的。
4. 顏色列表
我們繪制圖形的時候,一個圖形中有多個曲線時,每個曲線默認(rèn)就會使用不同的顏色。
這是因?yàn)榕渲弥杏幸粋€默認(rèn)的顏色列表,繪制多個圖形時,會依次使用其中的顏色。
print(plt.rcParams["axes.prop_cycle"])
#運(yùn)行結(jié)果
cycler('color',
['#1f77b4',
'#ff7f0e',
'#2ca02c',
'#d62728',
'#9467bd',
'#8c564b',
'#e377c2',
'#7f7f7f',
'#bcbd22',
'#17becf'])如果去查下顏色編碼的話,可以看出,前兩個顏色就是藍(lán)色和紅色。
所以上面的示例中的兩條曲線都是藍(lán)色和紅色。
修改下這個默認(rèn)的顏色列表,看看變化效果:
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
from matplotlib import cycler
colors = cycler(
"color", ["#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"]
)
plt.rcParams.update(plt.rcParamsDefault)
plt.rc("axes", prop_cycle=colors)
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend()
plt.show()
改變顏色列表之后,兩條曲線的顏色都變了。
繪制曲線或者其他圖形時,其實(shí)是有參數(shù)可以指定顏色的,為什么還需要這個顏色列表的配置?
這是因?yàn)?,如果我們能夠確定整體報告的風(fēng)格,那么就可以在一開始就根據(jù)報告的風(fēng)格設(shè)置好這個顏色列表,
然后繪制各種圖形時就不需要指定顏色,極大簡化后續(xù)的代碼,也提高了代碼的可維護(hù)性。
5. 總結(jié)
在配置 rcParams 時,我們可以根據(jù)需要修改各種選項(xiàng),以達(dá)到更好的顯示效果。
但需要注意的是,過多地修改 rcParams 可能會導(dǎo)致繪圖緩慢或出現(xiàn)其他問題,因此需要根據(jù)實(shí)際情況進(jìn)行合理的配置。
到此這篇關(guān)于Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解的文章就介紹到這了,更多相關(guān)Matplotlib配置參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Python dict存中文字符dumps()的問題
這篇文章主要介紹了關(guān)于Python dict存中文字符dumps()的問題,本文給大家分享問題及解決方案,給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-10-10
Python中的魔術(shù)方法Magic?Methods使用實(shí)例全面指南
在Python中,魔術(shù)方法Magic?Methods是一種特殊的方法,它們以雙下劃線開頭和結(jié)尾,如__init__、__str__等,這些方法允許定制類的行為,使得對象更具有靈活性和可定制性,本文將深入探討Python中一些常用的魔術(shù)方法,以及如何使用它們來定制類與對象2024-01-01
Python 檢查數(shù)組元素是否存在類似PHP isset()方法
isset方法來檢查數(shù)組元素是否存在,在Python中無對應(yīng)函數(shù),在Python中一般可以通過異常來處理數(shù)組元素不存在的情況,而無須事先檢查2014-10-10
Python中如何實(shí)現(xiàn)MOOC掃碼登錄
這篇文章主要介紹了Python中如何實(shí)現(xiàn)MOOC掃碼登錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
python模塊詳解之pywin32使用文檔(python操作windowsAPI)
pywin32是一個第三方模塊庫,主要的作用是方便python開發(fā)者快速調(diào)用windows API的一個模塊庫,這篇文章主要給大家介紹了關(guān)于python模塊詳解之pywin32使用文檔的相關(guān)資料,文中將python操作windowsAPI介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
PyTorch搭建ANN實(shí)現(xiàn)時間序列風(fēng)速預(yù)測
這篇文章主要為大家介紹了PyTorch搭建ANN實(shí)現(xiàn)時間序列風(fēng)速預(yù)測,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
使用PyCharm創(chuàng)建Django項(xiàng)目及基本配置詳解
pycharm是個很不錯的python開發(fā)工具,大大縮短了python項(xiàng)目的創(chuàng)建時間以及調(diào)試時間。這篇文章主要介紹了使用PyCharm創(chuàng)建Django項(xiàng)目及基本配置詳解,pycharm是個很不錯的python開發(fā)工具,大大縮短了python項(xiàng)目的創(chuàng)建時間以及調(diào)試時間2018-10-10

