gpt4 book ai didi

python - 使用子图和带有 matplotlib 的颜色条将 x 轴与 sharex 对齐

转载 作者:行者123 更新时间:2023-12-03 20:27:49 25 4
gpt4 key购买 nike

我正在尝试使用 pyplot 创建一组共享 x 轴的子图。当图形很简单并且所有 x 轴都对齐时,这一切都很好。但是,当我包含一个包含颜色条的子图时,这会压缩该特定子图的宽度以包含颜色条,从而导致子图不再共享 x 轴。

我在网上搜索过,但没有成功。我尝试了几种不同的方法,但我在下面包含了最简单的示例。我在每个子图中绘制完全相同的数据,但用颜色条绘制一个。您可以看到数据不再沿 x 轴对齐。

在此先感谢您的帮助!

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
import pandas as pd

x = np.linspace(0, 10, num=100)
y = x ** 2 + 10 * np.random.randn(100)


f, (ax1, ax2) = plt.subplots(2,1,sharex=True,figsize=(8,12))

im1 = ax1.scatter(x, y, c=y, cmap='magma')
divider = make_axes_locatable(ax1)
cax = divider.append_axes("right", size="5%", pad=.05)

plt.colorbar(im1, cax=cax)

im2 = ax2.plot(x, y,'.')

plt.show()

Plot that I can't embed

最佳答案

这是一种hacky的方式来做到这一点。

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
import pandas as pd

x = np.linspace(0, 10, num=100)
y = x ** 2 + 10 * np.random.randn(100)


f, (ax1, ax2) = plt.subplots(2,1,sharex=True,figsize=(8,12))

im1 = ax1.scatter(x, y, c=y, cmap='magma')
divider = make_axes_locatable(ax1)
cax = divider.append_axes("right", size="5%", pad=.05)

plt.colorbar(im1, cax=cax)

im2 = ax2.plot(x, y,'.')
divider2 = make_axes_locatable(ax2)
cax2 = divider2.append_axes("right", size="5%", pad=.05)
cax2.remove()
plt.show()

结果是

enter image description here

关于python - 使用子图和带有 matplotlib 的颜色条将 x 轴与 sharex 对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54473465/

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