gpt4 book ai didi

python-3.x - plt.subplot_adjust() 工作不正常

转载 作者:行者123 更新时间:2023-12-04 00:30:50 26 4
gpt4 key购买 nike

我正在制作一些密度图,如下所示:

import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics import r2_score
import matplotlib
from scipy import stats
import matplotlib.gridspec as gridspec
from mpl_toolkits.axes_grid1.inset_locator import InsetPosition
from matplotlib.ticker import FormatStrFormatter
import matplotlib.cm as cm
from scipy.ndimage.filters import gaussian_filter
import random

matplotlib.rcParams.update({'font.size': 16})
matplotlib.rcParams['xtick.direction'] = 'in'
matplotlib.rcParams['ytick.direction'] = 'in'

x = random.sample(range(1, 10001), 1000)
y = random.sample(range(1, 10001), 1000)



def myplot(x, y, s, bins=1000):
heatmap, xedges, yedges = np.histogram2d(x, y, bins=bins)
heatmap = gaussian_filter(heatmap, sigma=s)

extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
return heatmap.T, extent
cmap = cm.YlOrRd

fig, (ax, ax1, cax) = plt.subplots(ncols = 3, figsize = (15, 5),
gridspec_kw={"width_ratios":[1,1, 0.5]})
img, extent = myplot(x, y, 20)
im = ax.imshow(img, extent = extent, origin = 'lower', cmap = cmap)
ax.text(0.05, 0.92, '$R^2$ = {}'.format(np.round(r2_score(x, y), 2)), fontsize=14, color = 'k', transform = ax.transAxes)
ax.plot(ax.get_xlim(), ax.get_ylim(), ls="--", c=".3")
ax.set_xlabel("Black Sky")
ax.set_ylabel("Blue Sky")

img2, extent2 = myplot(x, y, 20)
ax1.imshow(img2, extent = extent2, origin = 'lower', cmap = cmap)
ax1.text(0.05, 0.92, '$R^2$ = {}'.format(np.round(r2_score(x, y), 2)), fontsize=14, color = 'k', transform = ax1.transAxes)
ax1.axes.get_yaxis().set_visible(False)
ax1.yaxis.set_ticks([])
ax1.plot(ax1.get_xlim(), ax1.get_ylim(), ls="--", c=".3")
ax1.set_xlabel("White Sky")


ip = InsetPosition(ax1, [1.05,0,0.05,1])

cax.set_axes_locator(ip)

fig.colorbar(im, cax=cax, ax=[ax,ax1], use_gridspec = True)

plt.subplots_adjust(wspace=0.1, hspace=0)

这给了我一个这样的情节:

enter image description here

不管我怎么改 wspace情节保持不变。我认为这是因为当我在 ax1 中转动 y 轴时我只是将文本设为空白,而不是将 y 轴全部删除。有没有办法做到这一点,以便我可以使数字之间的宽度间距更接近?

最佳答案

正如评论,wspace设置图之间的最小距离。在相等纵横轴的情况下,该距离可能更大。然后它将取决于图形大小,图形方面和图像方面。
A. 使用自动切面
您可以设置 aspect = "auto"在您的 imshow情节,

ax.imshow(..., aspect = "auto")
enter image description here
B. 调整子图参数
您可以将左或右子图参数设置为较小的值。例如。
plt.subplots_adjust(wspace=0.0, hspace=0, right=0.7)
enter image description here
C.调整图形大小
使用更接近实际图像方面的较小图形宽度也将减少图形周围的空白。
例如,使图形只有 11 英寸宽,并在右侧使用 5% 的填充,
plt.subplots(..., figsize = (11, 5))
plt.subplots_adjust(wspace=0.0, hspace=0, right=.95)
enter image description here

关于python-3.x - plt.subplot_adjust() 工作不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51446526/

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