gpt4 book ai didi

python - 如何获得 matplotlib 图中第二个颜色条的正确大小?

转载 作者:行者123 更新时间:2023-12-01 02:26:31 25 4
gpt4 key购买 nike

我希望创建一个“分割图”,即在图的左半部分和右半部分使用不同的颜色图。因此我需要两个不同的颜色条。不幸的是,我必须手动设置第二个颜色条的位置,并在每次包含标签或标题时进行修改。有没有办法自动化?

我想知道是否可以从右侧颜色栏中提取以下最小示例的矩形参数。这会对我有帮助,因为我只稍微改变了它。也欢迎任何其他(/更好)的想法。

目前,每当我稍微更改标签或标题时,都必须再次修改左侧颜色条的手动设置位置。这很烦人。我包括一个正在运行的最小示例及其产生的输出:

import matplotlib as mpl
params = {
'xtick.direction' : 'out',
'ytick.direction' : 'out',
'text.usetex' : True,
}

mpl.rcParams.update(params)
mpl.rcParams.update({'figure.autolayout': True})

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors


extent_arr1 = [-1,0, -1,1]
extent_arr2 = [ 0,1, -1,1]
M = 501

# define test-data
data_arr1 = np.zeros((M, M))
data_arr2 = np.ones((M, M))

# define figure
fig = plt.figure()
ax = fig.add_subplot(111)

# left plot:
image1 = ax.imshow( data_arr1, cmap='jet', interpolation='bilinear', extent=extent_arr1, \
origin='lower')
plt.title("Minimal example")
cbar1 = plt.colorbar(image1)

# right plot:
image2 = ax.imshow( data_arr2, cmap='gnuplot', interpolation='bilinear', extent=extent_arr2, \
origin='lower')

# define axes-labels:
plt.xlabel(r"$x$")
plt.ylabel(r"$y$")

# define colour-bar at left side:
rect_loc = [0.0, 0.08, 0.03, 0.88] # define position ---> how to automatise this?
cax2 = fig.add_axes(rect_loc) # left | bottom | width | height
cbar2 = plt.colorbar(image2, cax=cax2)
cbar2.ax.yaxis.set_ticks_position('left')

# set limits:
ax.set_xlim(-1,1)
ax.set_ylim(-1,1)

plt.show()

输出: enter image description here

提前致谢!

最佳答案

当然有多种方法可以创建颜色条轴并将其放在绘图旁边。我建议阅读这些问题:

其中许多概念可以扩展到第二个颜色条。我个人更喜欢的解决方案如下,它使用轴分隔器。优点是颜色条保持轴的大小。

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np; np.random.seed(1)

plt.rcParams.update({'figure.autolayout': True})

fig, ax = plt.subplots(figsize=(6,4))
im = ax.imshow(np.random.rand(10,10), extent=[-1,0,0,1], cmap="RdYlGn")
im2 = ax.imshow(np.random.rand(10,10), extent=[0,1,0,1], cmap="magma")
ax.set_xlabel("x label")
ax.set_ylabel("y label")
ax.set_xlim(-1,1)
ax.set_ylim(0,1)

divider = make_axes_locatable(ax)
cax = divider.new_horizontal(size="5%", pad=0.2)
fig.add_axes(cax)
fig.colorbar(im2, cax=cax)

cax2 = divider.new_horizontal(size="5%", pad=0.7, pack_start=True)
fig.add_axes(cax2)
cb2 = fig.colorbar(im, cax=cax2)
cb2.ax.yaxis.set_ticks_position('left')
plt.show()

enter image description here

关于python - 如何获得 matplotlib 图中第二个颜色条的正确大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47336309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com