Как я могу установить положение вспомогательных участков, когда они находятся в осях geograpy c? - PullRequest
0 голосов
/ 11 марта 2020

Я новичок в python и мне нужна помощь. Я работаю в проекте, в котором мне нужно отобразить набор точек, эти точки имеют широту, долготу и глубину. Я хочу показать не только распределение точек на плоскости XY, но также хочу добавить вспомогательные участки плоскостей XZ и YZ. Но у меня возникли проблемы с определением относительной позиции между этими подсюжетами.

Я использую cartopy, потому что это дает мне возможность добавить фон (который мне нужен). Может быть, это не лучший вариант, но единственный, который я научился использовать до сих пор.

Я использую код примерно такой:

def map_data_set0(data):
    import matplotlib.pyplot as plt
    import cartopy.crs as ccrs
    import cartopy.io.img_tiles as cimgt
    event_lon = data[0]
    event_lat = data[1]
    event_depth = data[2]
    stamen_terrain = cimgt.Stamen('terrain')

    fig1 = plt.figure(figsize=(17, 9))
    grid = fig1.add_gridspec(3, 3)
    ax1 = fig1.add_subplot(grid[0:-1, 0:-1], projection=stamen_terrain.crs)
    ax1.set_extent([min(event_lon) - 0.003, max(event_lon) + 0.003, min(event_lat) - 0.0025 max(event_lat) + 0.0025], crs=ccrs.PlateCarree())
    ax1.add_image(stamen_terrain, 13, zorder=0)
    ax1.gridlines(draw_labels=True, color='b', alpha=0.2, linestyle='--')
    map1 = ax1.scatter(event_lon, event_lat, s=18, c=event_depth, transform=ccrs.PlateCarree(), label='Events',
                  edgecolors='black', zorder=1)

    ax2 = fig1.add_subplot(grid[-1,:-1])
    ax2.grid(True, linestyle='--', linewidth=.5, color='k', alpha=.3)
    ax2.set_ylim(ymin=(max(event_depth)+0.1), ymax=0)
    ax2.set_xlim(xmin=(min(event_lon) - 0.003), xmax=(max(event_lon) + 0.003))
    map2 = ax2.scatter(event_lon,event_depth,s=18, c=event_depth)

    ax3 = fig1.add_subplot(grid[:-1, -1])
    ax3.grid(True, linestyle='--', linewidth=.5, color='k', alpha=.3)
    ax3.set_xlim(xmin=0, xmax=(max(event_depth)+0.1))
    ax3.set_ylim(ymin=(min(event_lat) - 0.0025), ymax=(max(event_lat) + 0.0025))
    ax3.tick_params('y', left=False, labelleft=False, right=True, labelright=True)
    map3 = ax3.scatter(event_depth, event_lat,s=18, c=event_depth)

    plt.show()

, но то, что я получаю, не в масштаб, по крайней мере, не сюжеты. подсюжеты не в правильном масштабе

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