1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

如何使用Python修改matplotlib.pyplot.colorbar的位置以对齐主图

如何用Python修改matplotlib的二维图形?

作为Python中常见的二维图形,matplotlib.pyplot经常用来生成各种图表。那么,如何利用Python对这些图形进行修改呢?以matplotlib.pyplot.colorbar位置的修改为例,本文将向大家介绍具体方法。

如何使用Python修改matplotlib.pyplot.colorbar的位置以对齐主图

问题描述

假如你想把一个二维图形里的右侧colorbar的高度设置成与主图一样,该怎么做呢?

方法

本文将向大家介绍以下四种方法:

0.plt.colorbar参数介绍

matplotlib.pyplot.colorbar的参数介绍可以点击该链接进行查看:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.colorbar.html?highlight=colorbar#matplotlib.pyplot.colorbar。其中,fraction参数可以通过调节其数值(0.035-0.046)来达到修改colorbar高度的作用。但是,当图像的长、高对比过大时,该方法可能会失去作用。

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

同样是利用fraction参数来调节colorbar高度,但不同的是,该方法的fraction参数可以任意调节其数值来达到更精细的调节效果。不过,当图像的长、高对比过大时该方法还是可能会失去作用。

2.make_axes_locatable方法

make_axes_locatable是matplotlib包的一个函数,可以让你在一个subplot上创建colorbar的axis。用法示例如下:

import matplotlib.pyplot as plt
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)

注意:该方法不适用于有投影参数的axe(会报错),如cartopy的GeoAxes。

3.make_axes_locatable升级版

make_axes_locatable升级版的用法可以参考此链接:https://stackoverflow.com/questions/18195758/set-matplotlib-colorbar-size-to-match-graph。用法示例如下:

import matplotlib.pyplot as plt
from mpl_toolkits import axes_grid1

def add_colorbar(im, aspect=20, pad_fraction=0.5, **kwargs):
    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)

注意:该方法的用法适用于有投影参数的axe。

4.单独创建一个colorbar的axe

如果你想手动给colorbar添加一个axe,则可以参考以下代码(链接:https://stackoverflow.com/questions/18195758/set-matplotlib-colorbar-size-to-match-graph):

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = plt.axes()

im = ax.imshow(np.arange(100).reshape((10,10)))
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)
#类似于fig.colorbar(im, cax = cax)

结尾

综上所述,本文介绍了几种方法来帮助大家修改matplotlib的二维图形,希望能对大家有所帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7136.html