Несовпадение меток осей и меток меток для графика панели с помощью AxesGrid - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь создать панельный график, используя mpl_toolkits.axes_grid1. Он состоит из трех строк и двух столбцов, а код:

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')

Получается следующая цифра:

enter image description here

Проблема в том, что ось X на правом нижнем графике не показывает метки с одинаковыми осями, она просто показывает -2, 0 и 2 вместо -2, -1,0,1,2, как нижний левый участок. Я не знаю, что может быть причиной этого. Не могли бы вы помочь мне?

1 Ответ

0 голосов
/ 26 марта 2020

Полагаю, цветовая полоса, находящаяся на таком близком расстоянии, мешает автоматическому выбору метки c. Вы можете пометить их вручную, но, поскольку цветовая полоса одинакова для всех вспомогательных участков, лучшим подходом было бы построить только одну большую отдельную цветную полосу. Вот пример того, как это сделать: Галерея Matplotlib

Кстати, rainbow не является хорошим выбором для отображения непрерывной переменной, поскольку она не является последовательной картой цветов. Лучше использовать по умолчанию viridis. Это обсуждается здесь: Выбор цветовых карт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...