gpt4 book ai didi

python - 将颜色条置于图中

转载 作者:太空狗 更新时间:2023-10-29 20:26:06 26 4
gpt4 key购买 nike

我有一个简单的散点图,其中每个点都有一个颜色,该颜色由 0 到 1 之间的值设置为选定的颜色图。这是我的代码的 MWE:

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

x = np.random.randn(60)
y = np.random.randn(60)
z = [np.random.random() for _ in range(60)]

fig = plt.figure()
gs = gridspec.GridSpec(1, 2)

ax0 = plt.subplot(gs[0, 0])
plt.scatter(x, y, s=20)

ax1 = plt.subplot(gs[0, 1])
cm = plt.cm.get_cmap('RdYlBu_r')
plt.scatter(x, y, s=20 ,c=z, cmap=cm)
cbaxes = fig.add_axes([0.6, 0.12, 0.1, 0.02])
plt.colorbar(cax=cbaxes, ticks=[0.,1], orientation='horizontal')

fig.tight_layout()
plt.show()

看起来像这样:

pic

这里的问题是我想要小的水平颜色条位置在绘图的左下角,但是使用 cax 参数不仅感觉有点 hacky,它显然与 tight_layout< 冲突 导致警告:

/usr/local/lib/python2.7/dist-packages/matplotlib/figure.py:1533: UserWarning: This figure includes Axes that are not compatible with tight_layout, so its results might be incorrect.
warnings.warn("This figure includes Axes that are not "

有没有更好的方法来定位颜色条,即在运行代码时不会向您抛出讨厌的警告?


编辑

我希望颜色条仅显示最大值和最小值,即:0 和 1,Joe 通过将 vmin=0, vmax=1 添加到 scatter 像这样:

plt.scatter(x, y, s=20, vmin=0, vmax=1)

所以我要删除这部分问题。

最佳答案

可以使用 mpl_toolkits.axes_grid1.inset_locator.inset_axes将一个轴放在另一个轴内。该轴可用于承载颜色条。它的位置是相对于父轴的,类似于图例的放置方式,使用 loc 参数(例如 loc=3 表示左下方)。它的宽度和高度可以用绝对数字(英寸)或相对于父坐标轴(百分比)指定。

cbaxes = inset_axes(ax1, width="30%", height="3%", loc=3) 

enter image description here

import matplotlib.pyplot as plt 
import numpy as np
import matplotlib.gridspec as gridspec
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

x = np.random.randn(60)
y = np.random.randn(60)
z = [np.random.random() for _ in range(60)]

fig = plt.figure()
gs = gridspec.GridSpec(1, 2)

ax0 = plt.subplot(gs[0, 0])
plt.scatter(x, y, s=20)

ax1 = plt.subplot(gs[0, 1])
cm = plt.cm.get_cmap('RdYlBu_r')
plt.scatter(x, y, s=20 ,c=z, cmap=cm)

fig.tight_layout()

cbaxes = inset_axes(ax1, width="30%", height="3%", loc=3)
plt.colorbar(cax=cbaxes, ticks=[0.,1], orientation='horizontal')


plt.show()

请注意,为了抑制警告,可以在添加插入轴之前简单地调用 tight_layout

关于python - 将颜色条置于图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211967/

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