python:如何定位色条?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (360)

python附图上有一个彩色条。我想要定位的颜色条,使它是水平的,并在我的plot中。

我通过以下方式做到了这一点:

plt.colorbar(orientation="horizontal",fraction=0.07,anchor=(1.0,0.0))

但是,颜色条仍然与地块稍微重叠(以及x轴的标签)。我想把彩条往下挪,但我想不出怎么做。

提问于
用户回答回答于

使用paddingpad

为了相对于子图移动颜色条,可以使用pad参数fig.colorbar

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)

fig, ax = plt.subplots(figsize=(4,4))
im = ax.imshow(np.random.rand(11,16))
ax.set_xlabel("x label")

fig.colorbar(im, orientation="horizontal", pad=0.2)
plt.show()

使用轴分配器

可以使用make_axes_locatable划分轴并创建一个与图像图完全一致的新轴。再次,pad参数允许设置两个轴之间的空间。

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

fig, ax = plt.subplots(figsize=(4,4))
im = ax.imshow(np.random.rand(11,16))
ax.set_xlabel("x label")

divider = make_axes_locatable(ax)
cax = divider.new_vertical(size="5%", pad=0.7, pack_start=True)
fig.add_axes(cax)
fig.colorbar(im, cax=cax, orientation="horizontal")

plt.show()

使用子图

一个可以直接创建两行子图,一个用于图像,另一个用于彩色条。然后,设置height_ratiosgridspec_kw={"height_ratios":[1, 0.05]}在图形创作中,使其中一个子图的高度比另一个小得多,这个小子图可以容纳色条。

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)

fig, (ax, cax) = plt.subplots(nrows=2,figsize=(4,4), 
                  gridspec_kw={"height_ratios":[1, 0.05]})
im = ax.imshow(np.random.rand(11,16))
ax.set_xlabel("x label")

fig.colorbar(im, cax=cax, orientation="horizontal")

plt.show()
用户回答回答于

最好的方法,以获得良好的控制的颜色条的位置,是给它自己的轴。就像这样:

# What I imagine your plotting looks like so far
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(your_data)

# Now adding the colorbar
cbaxes = fig.add_axes([0.8, 0.1, 0.03, 0.8]) 
cb = plt.colorbar(ax1, cax = cbaxes)  

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励