日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

如何使用Python修改matplotlib.pyplot.colorbar的位置以對(duì)齊主圖_python

作者:r0nny ? 更新時(shí)間: 2022-08-25 編程語(yǔ)言

問(wèn)題描述

像這樣的圖,我想把右邊的colorbar設(shè)置成和主圖一樣高度

方法

0. plt.colorbar參數(shù)介紹

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.colorbar.html?highlight=colorbar#matplotlib.pyplot.colorbar

1. plt.colorbar(im, fraction=0.046, pad=0.04, shrink=1.0)

fraction可以從0.035-0.046調(diào)節(jié)以找到合適大小

但當(dāng)圖像的長(zhǎng)、高對(duì)比過(guò)大時(shí),可能不起作用

2. make_axes_locatable

這是matplotlib包里的一個(gè)函數(shù)

from mpl_toolkits.axes_grid1 import make_axes_locatable

im = plt.imshow(data)
divider = make_axes_locatable(plt.gca())
cax = divider.append_axes("right", size="5%", pad="3%")
plt.colorbar(im, cax=cax)

不適用于有投影參數(shù)的axe(會(huì)報(bào)錯(cuò)),如cartopy的GeoAxes

3. make_axes_locatables 升級(jí)版

https://stackoverflow.com/questions/18195758/set-matplotlib-colorbar-size-to-match-graph @Matthias

import matplotlib.pyplot as plt
from mpl_toolkits import axes_grid1

def add_colorbar(im, aspect=20, pad_fraction=0.5, **kwargs):
    """Add a vertical color bar to an image plot."""
    divider = axes_grid1.make_axes_locatable(im.axes)
    width = axes_grid1.axes_size.AxesY(im.axes, aspect=1./aspect)
    pad = axes_grid1.axes_size.Fraction(pad_fraction, width)
    current_ax = plt.gca()
    cax = divider.append_axes("right", size=width, pad=pad)
    plt.sca(current_ax)
    return im.axes.figure.colorbar(im, cax=cax, **kwargs)

用法示例

im = plt.imshow(np.arange(200).reshape((20, 10)))
add_colorbar(im)

4. 手動(dòng)給colorbar添加一個(gè)axe

https://stackoverflow.com/questions/18195758/set-matplotlib-colorbar-size-to-match-graph @Fei Yao

import matplotlib.pyplot as plt
import numpy as np

fig=plt.figure()
ax = plt.axes()
im = ax.imshow(np.arange(100).reshape((10,10)))

# Create an axes for colorbar. The position of the axes is calculated based on the position of ax.
# You can change 0.01 to adjust the distance between the main image and the colorbar.
# You can change 0.02 to adjust the width of the colorbar.
# This practice is universal for both subplots and GeoAxes.

cax = fig.add_axes([ax.get_position().x1+0.01,ax.get_position().y0,0.02,ax.get_position().height])
plt.colorbar(im, cax=cax) # Similar to fig.colorbar(im, cax = cax)

效果展示

總結(jié)?

原文鏈接:https://blog.csdn.net/qq_42471423/article/details/116133697

欄目分類
最近更新