亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用子圖和帶有 matplotlib 的顏色條將 x 軸與 sharex 對齊

使用子圖和帶有 matplotlib 的顏色條將 x 軸與 sharex 對齊

鳳凰求蠱 2021-10-26 16:49:45
我正在嘗試使用 pyplot 創建一組共享 x 軸的子圖。當圖形很簡單并且所有 x 軸都對齊時,這一切都很好。但是,當我包含一個包含顏色條的子圖時,這會壓縮該特定子圖的寬度以包含顏色條,從而導致子圖不再共享 x 軸。我在網上搜索過,但沒有成功。我嘗試了幾種不同的方法,但我在下面包含了最簡單的示例。我在每個子圖中繪制完全相同的數據,但用顏色條繪制一個。您可以看到數據不再沿 x 軸對齊。在此先感謝您的幫助!import matplotlib.pyplot as pltfrom mpl_toolkits.axes_grid1 import make_axes_locatableimport numpy as npimport pandas as pdx = np.linspace(0, 10, num=100)y = x ** 2 + 10 * np.random.randn(100)f, (ax1, ax2) = plt.subplots(2,1,sharex=True,figsize=(8,12))im1 = ax1.scatter(x, y, c=y, cmap='magma')divider = make_axes_locatable(ax1)cax = divider.append_axes("right", size="5%", pad=.05)plt.colorbar(im1, cax=cax)im2 = ax2.plot(x, y,'.')plt.show()
查看完整描述

3 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

您可以在創建子圖時考慮到顏色條的需要。不使用分隔線,而是使用 生成四個不同寬度的子圖gridspec_kw。然后,您可以刪除cax第二個子圖不需要的:


import matplotlib.pyplot as plt

import numpy as np


x = np.linspace(0, 10, num=100)

y = x ** 2 + 10 * np.random.randn(100)




##creating four subplots with unequally divided widths:

f, axes = plt.subplots(

    2,2, sharex='col', figsize=(8,12),

    gridspec_kw = {'width_ratios' : (10,1)},

)

ax1,ax2 = axes[:,0]


##remove unneeded Axes instance:

axes[1,1].remove()


im1 = ax1.scatter(x, y, c=y, cmap='magma')

plt.colorbar(im1, cax=axes[0,1])


im2 = ax2.plot(x, y,'.')


f.savefig('sharex_colorbar.png')

結果如下所示:

http://img1.sycdn.imooc.com//6177c17e0001f52c07391025.jpg

作為刪除 unneded 子圖實例的替代方法,您還可以首先顯式生成 gridspec 并僅生成所需的子圖。如果您有很多情節,這可能更合適:


from matplotlib.gridspec import GridSpec

gs = GridSpec(nrows=2, ncols=2, width_ratios = (10,1))

f = plt.figure(figsize=(8,12))


ax1 = f.add_subplot(gs[0,0])

ax2 = f.add_subplot(gs[1,0],sharex=ax1)

cax = f.add_subplot(gs[0,1])


im1 = ax1.scatter(x, y, c=y, cmap='magma')

plt.colorbar(im1, cax=cax)


查看完整回答
反對 回復 2021-10-26
  • 3 回答
  • 0 關注
  • 344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號