gpt4 book ai didi

python-3.x - 子图的常用 x 标签

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

我想创建一个带有 3 个子图的图。这个情节应该有 常见的 y 和常见的 x 标签 我关注了:Common xlabel/ylabel for matplotlib subplots .
但是,我正在更改纵横比 aspect=0.5这会导致 x-label 离绘图太远。 你知道如何解决这个问题吗?
enter image description here
> 此处的最小可重现示例:

import numpy as np
import matplotlib.pyplot as plt

# Get Data
data1 = np.random.rand(100,100)
data2 = np.random.rand(100,100)
data3 = np.random.rand(100,100)
data = [data1,data2,data3]
# Create Figure
fig, axes = plt.subplots(nrows=1, ncols=3, sharex=True, sharey=True)
for i,ax in enumerate(axes.flat):
im = ax.imshow(data[i], origin="lower", interpolation='quadric', cmap='jet', extent=[50,250,0,400], aspect=0.5, vmin=0, vmax = 1)


cbar_ax = fig.add_axes([1, 0.35, 0.01, 0.3])
fig.colorbar(im, cax=cbar_ax) # orientation='horizontal'
fig.tight_layout(pad=0.7)

## add a big axis, hide frame
fig.add_subplot(111, frameon=False)
## hide tick and tick label of the big axis
plt.tick_params(labelcolor='none', top=False, bottom=False, left=False, right=False)
plt.xlabel("common X")
plt.ylabel("common Y")


plt.show()

最佳答案

这是一个解决方案。这个想法是用子图集的实际极值位置创建一个大轴。对于不同的子图设置,这应该是灵活的。
common label row subplots

import numpy as np
import matplotlib.pyplot as plt

# Get Data
data1 = np.random.rand(100,100)
data2 = np.random.rand(100,100)
data3 = np.random.rand(100,100)
data = [data1,data2,data3]
# Create Figure
fig, axes = plt.subplots(nrows=1, ncols=3, sharex=True, sharey=True)
for i,ax in enumerate(axes.flat):
im = ax.imshow(data[i], origin="lower", interpolation='quadric', cmap='jet', extent=[50,250,0,400], aspect=0.5, vmin=0, vmax = 1)


cbar_ax = fig.add_axes([1, 0.35, 0.01, 0.3])
fig.colorbar(im, cax=cbar_ax) # orientation='horizontal'
fig.tight_layout(pad=1.5)

# Get extents of subplot
x0 = min([ax.get_position().x0 for ax in axes])
y0 = min([ax.get_position().y0 for ax in axes])
x1 = max([ax.get_position().x1 for ax in axes])
y1 = max([ax.get_position().y1 for ax in axes])

# Hidden axes for common x and y labels
plt.axes([x0, y0, x1 - x0, y1 - y0], frameon=False)
plt.tick_params(labelcolor='none', top=False, bottom=False, left=False, right=False)

# Labelize
plt.xlabel("common X")
plt.ylabel("common Y")
plt.title('Common Title')

plt.show()
# plt.savefig("example.png", bbox_inches="tight") # save figure

关于python-3.x - 子图的常用 x 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64512227/

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