Я не могу отрегулировать размер графика и цветовой шкалы - PullRequest
0 голосов
/ 08 ноября 2019

Я новичок в производстве мультиплотов. Я работаю с xarray и климатологическими данными netcdf, чтобы проверить суточный ход геофизической переменной 'csb'. Таким образом, я хотел бы создать мультиплот с почасовыми картами. График хорошо выглядит в блокноте Jupyter, но когда я сохраняю его, метки заголовка и оси обрезаются. Я пытался найти онлайн-справку, но, похоже, ключевые слова и методы не совпадают. Вторая (на данный момент незначительная) проблема заключается в том, что я также не могу настроить размер цветовой шкалы по той же причине. У меня такое ощущение, что я двигаюсь кругами :( Любая помощь будет признательна! Спасибо!

    # setup colorbar and levels
    my_cmap = plt.get_cmap('gist_rainbow')
    my_cmap.set_under('white')
    levels = [-30, -20, -10, -8, -6, -4, -2, 0, 5]

    # define data slice
    dr = da.sel(latitude=slice(lat_min, lat_max), longitude=slice(lon_min, lon_max))

    # plot
    g = dr['csb'].plot(x='longitude', y='latitude', col='UTC', col_wrap=4, aspect=dr.dims['longitude']/dr.dims['latitude'],  cmap=my_cmap, vmin=-30, vmax=5, levels=levels, robust=True, subplot_kws={'projection': ccrs.PlateCarree()})

    g.set_axis_labels(x_var='longitude', y_var='latitude')

    # configure subplots
    extent = [lon_min, lon_max, lat_min, lat_max]
    for i, ax in enumerate(g.axes.flat):
        ax.set_extent(extent)
        ax.coastlines(color="black", lw=1)
        ax.set_title(('%s M=%d UTC=%d' % (area, month, i)))
        ax.add_feature(cfeature.RIVERS, lw=2, edgecolor='grey')    
        ax.add_feature(cfeature.BORDERS, lw=1)
        ax.set_xticks([j for j in [-75, -45]])
        ax.set_yticks([j for j in [10, 0, -25]])

    # title and adjust subplots up:
    suptitle = '%s, month=%d, latitude=(%d, %d) longitude=(%d, %d)' % (name, month, lat_max, lat_min, lon_min, lon_max)
    st = plt.suptitle(suptitle, fontsize = 22)
    st.set_y(1.01)
    st.set_x(0.45)

    figure_name = '[my_path]/[my_file_name]' 
    plt.savefig(figure_name, dpi=600)
...