簡體   English   中英

使用 AxesGrid 不匹配面板圖的軸刻度和刻度標簽

[英]Unmatching axes ticks and tick labels for a panel plot using AxesGrid

我正在嘗試使用mpl_toolkits.axes_grid1制作面板圖。 它有三行和 2 列,代碼是:

import os
import yt
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1 import AxesGrid

fig=plt.figure()
grid= AxesGrid(fig, (0.075,0.075,0.85,0.85), nrows_ncols = (3,2), axes_pad = 0.5,
               label_mode="L",share_all = True, direction='row', cbar_location="right",
               cbar_mode="edge", cbar_size="5%", cbar_pad="0.0%", aspect=True)
loc='/share/Part1/guido/mc_evolution/bouchut/'
folder=['cond_0_amr/','cond_0_h/']
snap_bn='mc_evolution_hdf5_plt_cnt_'

snap_1=[25,50,96]
snap_2=[25,50,130]

snap_d={'0':snap_1,'1':snap_2}

property='density'
color_map='rainbow'
zmin=2.12e-22
zmax=1e-19
axis="z"
log_norm_vel=False
max_dens=np.zeros(len(snap_1))
min_dens=np.zeros(len(snap_1))

for i in range(len(folder)):
    for k,j in enumerate(snap_d[str(i)]):
        index=2*k+i
        ds=yt.load(loc+folder[i]+snap_bn+str(j).zfill(4))
        p=yt.SlicePlot(ds, axis,property,center='c')
        slc=ds.slice(axis,0.5)
        p_fdr=slc.to_frb((5,'pc'),1024)
        max_dens[k]=p_fdr['dens'].max()
        min_dens[k]=p_fdr['dens'].min()
        p.antialias = True
        p.set_log(property,True)#,linthresh=None)
        p.set_minorticks('all','on')
        p.set_cbar_minorticks('all','on')
        p.zoom(2.0)
        p.annotate_velocity(factor=25, normalize=log_norm_vel, 
                            plot_args={"color":'g', 'headwidth':10, 'headlength':8})
        p.annotate_timestamp(corner='upper_left', draw_inset_box=False, 
                             text_args={'fontsize':'x-small','color':'w'})
        plot = p.plots['density']
        plot.figure = fig
        plot.axes = grid[index].axes
        plot.cax = grid.cbar_axes[index]
        plot.cax.minorticks_on()
        p._setup_plots()

plt.savefig('panel_collapse_evol_3v2_2_sims_each_'+color_map+'.png')

我得到的數字如下:

在此處輸入圖片說明

問題在於右下圖的 x 軸,它沒有顯示相同的軸刻度標簽,它只顯示 -2、0 和 2 而不是像底部一樣的 -2,-1,0,1,2左圖。 我不知道是什么原因造成的。 請你幫助我好嗎?

我猜顏色條如此接近會干擾自動刻度標簽選擇。 您可以手動標記它們,但由於所有子圖的顏色條都相同,因此更好的方法是僅繪制一個更大的單獨顏色條。 以下是如何執行此操作的示例: Matplotlib Gallery

順便說一下, rainbow不是映射連續變量的好選擇,因為它不是順序顏色圖。 最好使用默認的viridis 這在這里討論:選擇顏色圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM