не может показать 0 галочку справа, когда central_longitude = 180 - PullRequest
1 голос
/ 02 июня 2019

, когда другие условия, такие как +180 и -180, поворачиваются.когда 0 должно быть справа, оно не появилось.

Результаты веб-сайта такие же без прав 0

https://scitools.org.uk/cartopy/docs/latest/gallery/tick_labels.html?highlight=tick

Я прочитал код геоосей и попробую другой метод, чтобы показать 0 в ригтхт,

Если использовать метод matplotlib, результаты будут более неправильными.

Если использовать линии сетки картографических карт и метки тиков, результаты будут такими же.

https://scitools.org.uk/cartopy/docs/latest/matplotlib/gridliner.html#cartopy.mpl.gridliner.Gridliner.xformatter

#===================================================
#plot the world map central 180 
#===================================================
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
def make_map(scale):
    fig=plt.figure(figsize=(8, 10))
    ax=plt.axes(projection=ccrs.PlateCarree(central_longitude=180))
    ax.set_global()
    land = cfeature.NaturalEarthFeature('physical', 'land', scale,edgecolor='face',
                                                              facecolor=cfeature.COLORS['land'])
    ax.add_feature(land, facecolor='0.75')
    ax.coastlines(scale)
    #===set tick
    ax.set_xticks([0, 60, 120, 180, 240, 300, 360], crs=ccrs.PlateCarree())
    ax.set_yticks([-90, -60, -30, 0, 30, 60, 90], crs=ccrs.PlateCarree())

    lon_formatter = LongitudeFormatter(zero_direction_label=False)
    lat_formatter = LatitudeFormatter()
    ax.xaxis.set_major_formatter(lon_formatter)
    ax.yaxis.set_major_formatter(lat_formatter)
    #=====set grid
    #gl = ax.gridlines()
    ax.grid()
    return fig,ax
fig,ax=make_map(scale='110m')

enter image description here

Как получить значение 0, отображаемое справа от оси?

1 Ответ

1 голос
/ 02 июня 2019

Мне кажется, что ноль, который должен появиться справа, также показан слева; Заметьте, что эта метка немного смелее других ?!

enter image description here

Причина в том, что 360% 360 == 0, поэтому галочка вращается вокруг начала.

Обходной путь - установить последний сдвинутый тик, как

[0, 60, 120, 180, 240, 300, 359.9999999999]

или

[0, 60, 120, 180, -120, -60, -1e-10]

Пример:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
def make_map(scale):
    fig=plt.figure(figsize=(8, 6))
    ax=plt.axes(projection=ccrs.PlateCarree(central_longitude=180))
    ax.set_global()
    land = cfeature.NaturalEarthFeature('physical', 'land', scale,edgecolor='face',
                                        facecolor=cfeature.COLORS['land'])
    ax.add_feature(land, facecolor='0.75')
    ax.coastlines(scale)

    ax.set_xticks([0, 60, 120, 180, 240, 300, 359.9999999999], crs=ccrs.PlateCarree())
    ax.set_yticks([-90, -60, -30, 0, 30, 60, 90], crs=ccrs.PlateCarree())

    lon_formatter = LongitudeFormatter(zero_direction_label=True)
    lat_formatter = LatitudeFormatter()
    ax.xaxis.set_major_formatter(lon_formatter)
    ax.yaxis.set_major_formatter(lat_formatter)

    ax.grid()
    return fig,ax

fig,ax=make_map(scale='110m')
plt.show()

enter image description here

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