【发布时间】:2021-08-13 08:39:28
【问题描述】:
我一直在尝试绘制两个相邻的数据集。 有人在之前的帖子中提出了这种方法。但是,我现在无法为每个数据集获取一个颜色条(因此 data1 一个颜色条,data2 另一个颜色条)。
我使用的是合成数据集,但在我的真实数据集中,我有非常不同的最大值和最小值,比如 -.4 到 .4 或 -.6 到 .8,所以对于这个示例数据集,如何我只为两个数据集分别制作一个颜色条?
每个单独的图都有一个颜色条,但我的目标是拥有这 32 个图,但只有两个颜色条:一个用于数据集“data1”,另一个用于数据集“data2”。
这是我目前所拥有的:
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import xarray as xr
data1 = np.random.rand(16, 20, 15)
data2 = np.random.rand(16,20,15)
fig, axes = plt.subplots(nrows=8, ncols=4, figsize=(10,20))
axes = axes.ravel()
# plot the data in pairs
for i in range(16):
data1 = axes[2*i].pcolormesh(data1[i])
axes[2*i].set_title(f'data1[{i}]')
cbar1 = fig.colorbar(x, fraction=.2,ax=axes[2*i])
data2 = axes[2*i+1].pcolormesh(data2[i])
axes[2*i+1].set_title(f'data2[{i}]')
cbar2 = fig.colorbar(y, fraction=.2,ax=axes[2*i+1])
for ax in axes:
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.grid()
plt.tight_layout()
plt.show()
我也尝试过这种方式,它给出了一个颜色条......但我意识到它只是显示 last 等高线图的颜色条(因为颜色条函数不在循环中)。我希望只有一个基于所有图的颜色条。 这种方式是错误的*,但试图根据每个数据集(data1 和 data2)仅获取一个颜色条。
fig, axes = plt.subplots(nrows=8, ncols=4, figsize=(10,20))
axes = axes.ravel()
# plot the data in pairs
for i in range(16):
data1 = axes[2*i].pcolormesh(data1[i])
axes[2*i].set_title(f'data1[{i}]')
#cbar1 = fig.colorbar(x, fraction=.2,ax=axes[2*i])
data2 = axes[2*i+1].pcolormesh(data2[i])
axes[2*i+1].set_title(f'data2[{i}]')
#cbar2 = fig.colorbar(y, fraction=.2,ax=axes[2*i+1])
for ax in axes:
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.grid()
cbaxes1 = fig.add_axes([1.02,.85,.05,.1])
cbar1 = fig.colorbar(data1, cax = cbaxes1, fraction=.02)
cbar1.set_label('data1',labelpad=15, y=.5, rotation=90,fontsize=20)
cbaxes = fig.add_axes([1.2,.85,.05,.1])
cbar = fig.colorbar(data2, cax = cbaxes, fraction=.02)
cbar.set_label('data2',labelpad=15, y=.5, rotation=90,fontsize=20)
plt.tight_layout()
plt.show()
【问题讨论】:
标签: python numpy matplotlib jupyter