亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

共用坐標

當一個圖像中有多個子圖時,若這些子圖坐標的含義相同,那么省略一些坐標可以讓圖像更加簡潔。在matplotlib中,通過sharex或者sharey可以起到共享x或y軸坐標的作用。示例如下

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()

效果如下,左上角的子圖沒有x刻度值,右下角則沒有y刻度值,右上角則什么坐標軸也沒有。

添加共享軸

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

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()

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

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

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()

灰度直方圖

上面示例中那幾個子圖,彼此之間區(qū)別不大,放在一張圖中是完全沒問題的,但有些情況則不適合放在一張圖中,比如對于一張圖片來說,想知道其水平方向上灰度強度的分布,就比較適合坐標。

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)        # 散點圖繪制
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個通道,所以在對每行或者每列像素求和時,選擇分別對三個通道進行操作。而后在繪制曲線時,對三個通道的值也使用了不同的顏色方案。通過tick_params函數(shù),取消了上圖底部和右圖左側的坐標刻度。

最后得圖如下

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

相關文章

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

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

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

    python通過TimedRotatingFileHandler按時間切割日志

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

    Pandas中resample方法詳解

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

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

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

    opencv設置采集視頻分辨率方式

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

    Python使用JDAudioCrawler將下載的音頻存儲到本地

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

    Python使用自帶的base64庫進行base64編碼和解碼的實現(xiàn)

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

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

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

    Python中re模塊:匹配開頭/結尾(^/$)

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

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

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

最新評論