找不到将颜色栏包含在hist2d和子图中的方法

2024-06-25 23:42:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试向hist2d绘图添加颜色条。我有三个子图,它们的粒子分布相同,来自不同的方向。我有两个主要问题:

  • 当我使用colors.LogNorm()时,绘图是否共享规范化?你知道吗
  • 如果是这样的话,如何在右边添加一个色条?我试过使用plt.colorbar(),但我真的不知道如何与hist2d一起使用,因为我发现了使用pcolor。你知道吗

我的代码:

fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(15,5))
my_cmap = copy.copy(mpl.cm.get_cmap('inferno'))
my_cmap.set_bad((0,0,0))

ax[0].set_xlabel('$x_c$ [$\mathrm{kpc}$]')
ax[0].set_ylabel('$y_c$ [$\mathrm{kpc}$]')
ax[0].set_aspect('equal')
ax[0].hist2d(x_plot, y_plot, bins=(bin_num, bin_num), norm=mpl.colors.LogNorm(), cmap=my_cmap, range=[[-box_size, box_size], [-box_size, box_size]])

ax[1].set_xlabel('$y_c$ [$\mathrm{kpc}$]')
ax[1].set_ylabel('$z_c$ [$\mathrm{kpc}$]')
ax[1].set_aspect('equal')
ax[1].hist2d(y_plot, z_plot, bins=(bin_num, bin_num), norm=mpl.colors.LogNorm(), cmap=my_cmap, range=[[-box_size, box_size], [-box_size, box_size]])

ax[2].set_xlabel('$x_c$ [$\mathrm{kpc}$]')
ax[2].set_ylabel('$z_c$ [$\mathrm{kpc}$]')
ax[2].set_aspect('equal')
ax[2].hist2d(x_plot, z_plot, bins=(bin_num, bin_num), norm=mpl.colors.LogNorm(), cmap=my_cmap, range=[[-box_size, box_size], [-box_size, box_size]])

fig.suptitle('Dark matter density', y=0.99)
plt.tight_layout()
plt.savefig('dm_density.pdf', dpi=300)
plt.show()

Tags: boxsizebinplotmypltaxnum