溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中怎么利用Matplotlib創(chuàng)建可視化套圖

發(fā)布時(shí)間:2021-07-10 14:01:30 來源:億速云 閱讀:199 作者:Leah 欄目:大數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Python中怎么利用Matplotlib創(chuàng)建可視化套圖,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Matplotlib有一個(gè)概念subplot:包含在Figure對(duì)象中的小型Axes對(duì)象。這允許我們?cè)谝环鶊D中創(chuàng)建很多個(gè)子圖,方便對(duì)比數(shù)據(jù)。

創(chuàng)建子圖的3種常用方法:

  1. fig.add_axes

  2. plt.subplots

  3. plt.GridSpec

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlineplt.style.use("ggplot")

1. fig.add_axes

  1. 先調(diào)用plt.figure()創(chuàng)建Figure對(duì)象,圖表是所有坐標(biāo)的容器。

  2. 調(diào)用fig.add_axes()在圖表的任意位置添加子圖,該方法接收一個(gè)包含4個(gè)數(shù)字的列表: $[x, y, width, height]$,分別代表子圖左下角的坐標(biāo)(x,y),子圖的寬度和高度,這四個(gè)數(shù)字的取值范圍都是$[0,1]$,代表相對(duì)位置和大小。

  3. 最后調(diào)用ax.plot將數(shù)據(jù)映射到子圖。

# 創(chuàng)建圖表對(duì)象
fig = plt.figure(figsize=(10, 7))
# 創(chuàng)建子圖ax1 = fig.add_axes([0, 0.5, 0.45, 0.45])  # 在圖表的左上角創(chuàng)建一個(gè)子圖
ax2 = fig.add_axes([0.5, 0, 0.45, 0.45])  # 在圖表的右下方創(chuàng)建一個(gè)子圖
# 左上角子圖:曲線圖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")

Python中怎么利用Matplotlib創(chuàng)建可視化套圖

2. plt.subplots

plt.subplots用于快速創(chuàng)建多個(gè)子圖,這些子圖會(huì)以網(wǎng)格狀排列。函數(shù)返回長(zhǎng)度為2的元組,第一個(gè)元素是Figure對(duì)象,第二個(gè)元素是坐標(biāo)集合。

# 創(chuàng)建一個(gè)圖形對(duì)象,拆分為2*3的網(wǎng)格,包含6個(gè)坐標(biāo)對(duì)象
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]索引獲取單個(gè)坐標(biāo)對(duì)象
# 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)

Python數(shù)據(jù)分析:用Matplotlib可視化創(chuàng)建套圖

3. plt.GridSpec

上面的案例創(chuàng)建了規(guī)則排列的子圖(網(wǎng)格狀),但有時(shí)候想創(chuàng)建不規(guī)則的子圖,部分子圖更大,展示核心信息,有的子圖較小,展現(xiàn)輔助信息。

plt.GridSpec可實(shí)現(xiàn)這一點(diǎn),工作原理是先創(chuàng)建一個(gè)網(wǎng)格狀的藍(lán)圖,然后合并部分子圖(類似于Excel中合并單元格的操作)。

  1. 調(diào)用plt.GridSpec創(chuàng)建網(wǎng)格狀的藍(lán)圖

  2. 通過切片和索引按需求'合并'子圖

  3. 調(diào)用ax.plot()將數(shù)據(jù)映射到圖表

# 創(chuàng)建圖表對(duì)象
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)格對(duì)象可索引和切片,根據(jù)網(wǎng)格對(duì)象可創(chuàng)建坐標(biāo)對(duì)象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相同,接下來我們展示如何合并子圖

Python中怎么利用Matplotlib創(chuàng)建可視化套圖

# 創(chuàng)建圖表對(duì)象
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)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI