這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Python中怎么利用Matplotlib創(chuàng)建可視化套圖,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
十余年專注成都網(wǎng)站制作,成都定制網(wǎng)站,個人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設(shè)計流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都定制網(wǎng)站,高端網(wǎng)頁制作,對成都發(fā)電機(jī)維修等多個方面,擁有豐富的營銷推廣經(jīng)驗。
Matplotlib有一個概念subplot:包含在Figure對象中的小型Axes對象。這允許我們在一幅圖中創(chuàng)建很多個子圖,方便對比數(shù)據(jù)。
創(chuàng)建子圖的3種常用方法:
fig.add_axes
plt.subplots
plt.GridSpec
import numpy as np import matplotlib.pyplot as plt %matplotlib inlineplt.style.use("ggplot")
先調(diào)用plt.figure()創(chuàng)建Figure對象,圖表是所有坐標(biāo)的容器。
調(diào)用fig.add_axes()在圖表的任意位置添加子圖,該方法接收一個包含4個數(shù)字的列表: $[x, y, width, height]$,分別代表子圖左下角的坐標(biāo)(x,y),子圖的寬度和高度,這四個數(shù)字的取值范圍都是$[0,1]$,代表相對位置和大小。
最后調(diào)用ax.plot將數(shù)據(jù)映射到子圖。
# 創(chuàng)建圖表對象 fig = plt.figure(figsize=(10, 7)) # 創(chuàng)建子圖ax1 = fig.add_axes([0, 0.5, 0.45, 0.45]) # 在圖表的左上角創(chuàng)建一個子圖 ax2 = fig.add_axes([0.5, 0, 0.45, 0.45]) # 在圖表的右下方創(chuàng)建一個子圖 # 左上角子圖:曲線圖x1 = np.linspace(-10, 10, 100) ax1.plot(x1, np.sin(x1), color="red") # 右下角子圖:柱狀圖x2 = ["a", "b", "c", "d", "e", "f"] y2 = [1.2, 1.3, 2.5, 0.25, 5, 1.56] ax2.bar(x2, y2, color="blue")
plt.subplots用于快速創(chuàng)建多個子圖,這些子圖會以網(wǎng)格狀排列。函數(shù)返回長度為2的元組,第一個元素是Figure對象,第二個元素是坐標(biāo)集合。
# 創(chuàng)建一個圖形對象,拆分為2*3的網(wǎng)格,包含6個坐標(biāo)對象 fig, axes = plt.subplots( nrows=2, # 定義行數(shù) ncols=3, # 定義列數(shù) sharex=True, # 是否共享x軸坐標(biāo) sharey=True, # 是否共享y軸坐標(biāo) figsize=(10, 7) # 圖像大小 )# axes是2*3的numpy數(shù)組,可根據(jù)[row, col]索引獲取單個坐標(biāo)對象 # print(type(axes)) # print(axes) for i in range(2): for j in range(3): axes[i, j].text(0.5, 0.5, str((i, j)), ha="center", fontsize=15)
上面的案例創(chuàng)建了規(guī)則排列的子圖(網(wǎng)格狀),但有時候想創(chuàng)建不規(guī)則的子圖,部分子圖更大,展示核心信息,有的子圖較小,展現(xiàn)輔助信息。
plt.GridSpec可實(shí)現(xiàn)這一點(diǎn),工作原理是先創(chuàng)建一個網(wǎng)格狀的藍(lán)圖,然后合并部分子圖(類似于Excel中合并單元格的操作)。
調(diào)用plt.GridSpec創(chuàng)建網(wǎng)格狀的藍(lán)圖
通過切片和索引按需求'合并'子圖
調(diào)用ax.plot()將數(shù)據(jù)映射到圖表
# 創(chuàng)建圖表對象 fig = plt.figure(figsize=(10, 7)) # 創(chuàng)建2*3的'網(wǎng)格'藍(lán)圖 grid = plt.GridSpec(nrows=2, ncols=3, figure=fig) # 網(wǎng)格對象可索引和切片,根據(jù)網(wǎng)格對象可創(chuàng)建坐標(biāo)對象for row in range(2): for col in range(3): ax = plt.subplot(grid[row, col]) ax.text(0.5, 0.5, str((row, col)), ha="center", fontsize=15) # 至此的效果跟plt.subplots相同,接下來我們展示如何合并子圖
# 創(chuàng)建圖表對象 fig = plt.figure(figsize=(10, 7)) # 創(chuàng)建2*3的'網(wǎng)格'藍(lán)圖 grid = plt.GridSpec(nrows=2, ncols=3, figure=fig) # 合并子圖ax1 = plt.subplot(grid[0, 0]) ax2 = plt.subplot(grid[0, 1:]) # 合并(0,1)和(0,2)位置的子圖 ax3 = plt.subplot(grid[1, 0:2]) # 合并(1,0)和(1,1)位置的子圖 ax4 = plt.subplot(grid[1, 2]) x = np.linspace(0, 10, 30) ax1.plot(x, np.sin(x), "-r") ax2.plot(x, np.cos(x), "-ob") ax3.plot(x, np.sin(x + 10), "-oy") ax4.plot(x, np.cos(x + 10), "-g")
上述就是小編為大家分享的Python中怎么利用Matplotlib創(chuàng)建可視化套圖了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。