欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

matplotlib多子圖實(shí)現(xiàn)共享坐標(biāo)軸的示例詳解

 更新時(shí)間:2024年02月01日 13:56:10   作者:微小冷  
這篇文章主要為大家詳細(xì)介紹了matplotlib繪制多子圖師如何實(shí)現(xiàn)共享坐標(biāo)軸,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

共用坐標(biāo)

當(dāng)一個(gè)圖像中有多個(gè)子圖時(shí),若這些子圖坐標(biāo)的含義相同,那么省略一些坐標(biāo)可以讓圖像更加簡(jiǎn)潔。在matplotlib中,通過(guò)sharex或者sharey可以起到共享x或y軸坐標(biāo)的作用。示例如下

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5,5,100)
ys = [np.sin(x+i) for i in range(5)]

fig,axes = plt.subplots(2,2,sharex=True, sharey=True)

axes = axes.reshape(-1)
for i in range(4):
    axes[i].plot(x, ys[i])

plt.show()

效果如下,左上角的子圖沒(méi)有x刻度值,右下角則沒(méi)有y刻度值,右上角則什么坐標(biāo)軸也沒(méi)有。

添加共享軸

直接通過(guò)subplots來(lái)創(chuàng)建圖窗和坐標(biāo)軸,盡管用一行代碼解決了很多問(wèn)題,但相應(yīng)地也不夠靈活,而靈活添加坐標(biāo)軸的函數(shù)add_subplot也有sharex和sharey的參數(shù),但二者并不是布爾型參數(shù),而是需要輸入希望共享的坐標(biāo)軸。

fig = plt.figure()
ax3 = fig.add_subplot(223)
ax3.plot(x,ys[2])

ax1 = fig.add_subplot(221, sharex=ax3)
ax1.plot(x[:50],ys[0][:50])

ax4 = fig.add_subplot(224, sharey=ax3)
ax4.plot(x[50:],ys[3][50:])

ax2 = fig.add_subplot(222, sharex=ax4, sharey=ax1)
ax2.plot(x,ys[1])

plt.show()

效果如下,一方面,從各坐標(biāo)軸的坐標(biāo)來(lái)看,的確實(shí)現(xiàn)了坐標(biāo)共享,但并沒(méi)有像subplots中一樣,直接隱藏不必要的坐標(biāo)刻度。

為了達(dá)到和subplots相同的效果,需要手動(dòng)隱藏坐標(biāo)刻度,如將代碼改為下面的形式,即可實(shí)現(xiàn)目標(biāo)

fig = plt.figure()
ax3 = fig.add_subplot(223)
ax3.plot(x,ys[2])

ax1 = fig.add_subplot(221, sharex=ax3)
ax1.plot(x[:50],ys[0][:50])
ax1.tick_params(axis="x", labelbottom=False)

ax4 = fig.add_subplot(224, sharey=ax3)
ax4.plot(x[50:],ys[3][50:])
ax4.tick_params(axis="y", labelleft=False)

ax2 = fig.add_subplot(222, sharex=ax4, sharey=ax1)
ax2.plot(x,ys[1])
ax2.tick_params(axis="x", labelbottom=False)
ax2.tick_params(axis="y", labelleft=False)

plt.show()

灰度直方圖

上面示例中那幾個(gè)子圖,彼此之間區(qū)別不大,放在一張圖中是完全沒(méi)問(wèn)題的,但有些情況則不適合放在一張圖中,比如對(duì)于一張圖片來(lái)說(shuō),想知道其水平方向上灰度強(qiáng)度的分布,就比較適合坐標(biāo)。

path = r'lena.jpg'
img = plt.imread(path)

xs = [np.sum(img[:,:,i],0) for i in range(3)]
ys = [np.sum(img[:,:,i],1) for i in range(3)]

fig = plt.figure()
gs = fig.add_gridspec(2, 2,
    width_ratios=(4, 1),
    height_ratios=(1, 4))

ax = fig.add_subplot(gs[1, 0])
ax.imshow(img)        # 散點(diǎn)圖繪制
plt.axis('off')

xHist = fig.add_subplot(gs[0, 0], sharex=ax)
xHist.tick_params(axis="x", labelbottom=False)

yHist = fig.add_subplot(gs[1, 1], sharey=ax)
yHist.tick_params(axis="y", labelleft=False)

colors = 'rgb'
for i in range(3):
    xHist.plot(xs[i], color=colors[i])
    yHist.plot(ys[i], np.arange(len(ys[i])),color=colors[i])

plt.show()

由于lena圖有3個(gè)通道,所以在對(duì)每行或者每列像素求和時(shí),選擇分別對(duì)三個(gè)通道進(jìn)行操作。而后在繪制曲線(xiàn)時(shí),對(duì)三個(gè)通道的值也使用了不同的顏色方案。通過(guò)tick_params函數(shù),取消了上圖底部和右圖左側(cè)的坐標(biāo)刻度。

最后得圖如下

到此這篇關(guān)于matplotlib多子圖實(shí)現(xiàn)共享坐標(biāo)軸的示例詳解的文章就介紹到這了,更多相關(guān)matplotlib共享坐標(biāo)軸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pyinstaller將python程序打包為可執(zhí)行文件

    pyinstaller將python程序打包為可執(zhí)行文件

    這篇文章主要介紹了pyinstaller將python程序打包為可執(zhí)行文件,pyinstaller是一個(gè)python打包工具,它將python程序及所需依賴(lài)都打包成一個(gè)可執(zhí)行文件
    2022-08-08
  • python通過(guò)TimedRotatingFileHandler按時(shí)間切割日志

    python通過(guò)TimedRotatingFileHandler按時(shí)間切割日志

    這篇文章主要介紹了python通過(guò)TimedRotatingFileHandler按時(shí)間切割日志的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Pandas中resample方法詳解

    Pandas中resample方法詳解

    這篇文章主要介紹了Pandas中resample方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python+matplotlib繪制簡(jiǎn)單的海豚(頂點(diǎn)和節(jié)點(diǎn)的操作)

    python+matplotlib繪制簡(jiǎn)單的海豚(頂點(diǎn)和節(jié)點(diǎn)的操作)

    這篇文章主要介紹了python+matplotlib繪制簡(jiǎn)單的海豚(頂點(diǎn)和節(jié)點(diǎn)的操作),具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • opencv設(shè)置采集視頻分辨率方式

    opencv設(shè)置采集視頻分辨率方式

    今天小編就為大家分享一篇opencv設(shè)置采集視頻分辨率方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python使用JDAudioCrawler將下載的音頻存儲(chǔ)到本地

    Python使用JDAudioCrawler將下載的音頻存儲(chǔ)到本地

    在當(dāng)今數(shù)字化時(shí)代,音頻數(shù)據(jù)的獲取和處理變得越來(lái)越重要,本文將訪(fǎng)問(wèn)網(wǎng)易云音樂(lè)為案例,介紹如何使用JDAudioCrawler這個(gè)強(qiáng)大的工具,將音頻數(shù)據(jù)存儲(chǔ)下載到本地存儲(chǔ)中,需要的可以了解下
    2023-10-10
  • Python使用自帶的base64庫(kù)進(jìn)行base64編碼和解碼的實(shí)現(xiàn)

    Python使用自帶的base64庫(kù)進(jìn)行base64編碼和解碼的實(shí)現(xiàn)

    本文主要介紹了Python使用自帶的base64庫(kù)進(jìn)行base64編碼和解碼的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 使用PYTHON解析Wireshark的PCAP文件方法

    使用PYTHON解析Wireshark的PCAP文件方法

    今天小編就為大家分享一篇使用PYTHON解析Wireshark的PCAP文件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Python中re模塊:匹配開(kāi)頭/結(jié)尾(^/$)

    Python中re模塊:匹配開(kāi)頭/結(jié)尾(^/$)

    本文主要介紹了Python中re模塊:匹配開(kāi)頭/結(jié)尾(^/$),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • python實(shí)現(xiàn)三階魔方還原的示例代碼

    python實(shí)現(xiàn)三階魔方還原的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)三階魔方還原的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論