如何用Python修改matplotlib的二维图形?
作为Python中常见的二维图形,matplotlib.pyplot经常用来生成各种图表。那么,如何利用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
