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

目录
  • 问题描述
  • 方法 0. plt.colorbar参数介绍
    • 1. plt.colorbar(im, fraction=0.046, pad=0.04, shrink=1.0)
    • 2. make_axes_locatable
    • 3. make_axes_locatables 升级版
    • 4. 手动给colorbar添加一个axe
  • 总结

问题描述

像这样的图,我想把右边的colorbar设置成和主图一样高度

方法 0. plt.colorbar参数介绍

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调节以找到合适大小

但当图像的长、高对比过大时,可能不起作用

2. make_axes_locatable

这是matplotlib包里的一个函数

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_locatables 升级版

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. 手动给colorbar添加一个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)

效果展示

总结

到此这篇关于如何使用Python修改matplotlib.pyplot.colorbar的位置以对齐主图的文章就介绍到这了,更多相关Python修改matplotlib.pyplot.colorbar位置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度

    前言 matplotlib.pyplot是一些命令行风格函数的集合,使matplotlib以类似于MATLAB的方式工作.每个pyplot函数对一幅图片(figure)做一些改动:比如创建新图片,在图片创建一个新的作图区域(plotting area),在一个作图区域内画直线,给图添加标签(label)等.matplotlib.pyplot是有状态的,亦即它会保存当前图片和作图区域的状态,新的作图函数会作用在当前图片的状态基础之上. 在开始本文之前,不熟悉的朋友可以先看看这篇文章:Python

  • matplotlib.pyplot绘图显示控制方法

    在使用Python库时,常常会用到matplotlib.pyplot绘图,本文介绍在PyCharm及Jupyter Notebook页面中控制绘图显示与否的小技巧. 在PyCharm中显示绘图 在绘图代码最后加上"plt.show()"语句. import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 2*np.pi, .001) y = np.sin(2 * np.pi * x) plt.clf() plt.

  • matplotlib.pyplot.plot()参数使用详解

    在交互环境中查看帮助文档: import matplotlib.pyplot as plt help(plt.plot) 以下是对帮助文档重要部分的翻译: plot函数的一般的调用形式: #单条线: plot([x], y, [fmt], data=None, **kwargs) #多条线一起画 plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs) 可选参数[fmt] 是一个字符串来定义图的基本属性如:颜色(color),点型(marker),

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

    目录 问题描述 方法 0. plt.colorbar参数介绍 1. plt.colorbar(im, fraction=0.046, pad=0.04, shrink=1.0) 2. make_axes_locatable 3. make_axes_locatables 升级版 4. 手动给colorbar添加一个axe 总结 问题描述 像这样的图,我想把右边的colorbar设置成和主图一样高度 方法 0. plt.colorbar参数介绍 https://matplotlib.org/sta

  • Python使用matplotlib.pyplot as plt绘图图层优先级问题

    前言: 在最近做多智能车的控制时,绘制障碍物的时候发现障碍物的图层被路面图层所覆盖,一时不知道怎么解决,其实在用matplotlib.pyplot 绘图的时候可以使用参数zorder设置优先级进行调节,zorder整数越大,显示时越靠上. 调整前: ax.hlines(y=30, xmin=-50, xmax=200, color='gray', linewidth=50) ax.hlines(y=0, xmin=-50, xmax=200, color='gray', linewidth=50

  • 教你利用python的matplotlib(pyplot)绘制折线图和柱状图

    目录 前言 一.折线图 二.柱状图 总结 前言 今天帮师兄赶在deadline之前画论文的图,现学现卖很是刺激,现把使用matplotlib的子库pyplot画折线图和柱状图的代码记录分享一下,方便大家参考,个人感觉pyplot真的蛮方便的,非常值得使用. 先看下官方对pyplot的描述:“Provides a MATLAB-like plotting framework.”.对,就是一个类似matlab的画图框架.就不多多说了,直接上代码吧: 一.折线图 代码: import matplotl

  • Python利用matplotlib.pyplot.boxplot()绘制箱型图实例代码

    目录 一.matplotlib.pyplot.boxplot()语法 二.绘制箱型图 ①绘制简单箱型图 ②各个参数绘制箱型图 (1)notch参数(bool值,是否凹口的形式展现箱线图,默认值False非凹口) (2)sym(str,指定异常点的形状,默认为+号显示) (3)vert参数(bool值,是否需要将箱线图垂直摆放,默认True垂直摆放) (4)widths参数(float值,指定箱线图的宽度,默认值:0.5) (5)patch_artist(bool值,是否填充箱体颜色,默认值:Fa

  • Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法

    本文实例讲述了Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法.分享给大家供大家参考,具体如下: Matplotlib中文显示问题--用例子说明问题 #-*- coding: utf-8 -*- from pylab import * t = arange(-4*pi, 4*pi, 0.01) y = sin(t)/t plt.plot(t, y) plt.title('www.jb51.net - test') plt.xlabel(u'\u2103',fontp

  • Python使用matplotlib实现的图像读取、切割裁剪功能示例

    本文实例讲述了Python使用matplotlib实现的图像读取.切割裁剪功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') import matplotlib.pylab as plt # 加载图像 im = plt.imread("C:/4.png") print(im.shape) # (y轴像素点数, x轴像素点数,图像通道数) def

  • Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例

    本文实例讲述了Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息.分享给大家供大家参考,具体如下: 进行图像绘制有时候需要设定坐标轴以及图像标题等信息,示例代码如下: #-*- coding: utf-8 -*- #!/usr/bin/python import matplotlib.pyplot as plt from numpy.random import randn x = range(100) y = randn(100) fig = plt.figure() ax

  • python中matplotlib的颜色以及形状实例详解

    目录 绘制折线图 绘制柱形图 簇状柱形图 堆积柱形图 散点图 附:matplotlib实现区域颜色填充 总结 绘制折线图 命令形如: # 常用 plt.plot(x, y, linewidth = '1', label = "test", color=' red ', linestyle=':', marker='|') # 所有可选参数 plt.plot(x,y,color,linestyle=,linewidth,marker,markeredgecolor,markeredgwi

  • 不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决

    前言 本文主要给大家介绍了关于不同版本中Python matplotlib.pyplot.draw()界面绘制异常的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 在 Ubuntu系统上进行如下配置: $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install python-dev $ sudo apt-get install python-pip $ sudo pip install --u

随机推荐