Как можно отредактировать объект «Текст» с осей «Y» и «X» из сюжета с географическими картами и географической привязкой - PullRequest
0 голосов
/ 08 февраля 2019

Этот вопрос возник из другой проблемы Stackoverflow 1 :

Моя проблема связана с выпуском ярлыков с осями X и Y из сюжета cartopy-геопанда.Я хотел бы изменить свой текстовый объект от каждой из моих меток (оси X и Y) в соответствии с определенным правилом.

Например, я хотел бы заменить десятичный разделитель ('.') На разделитель запятых (',') из моих ярлыков оси X и Y.

Вот код, который можетне делайте этого:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import geopandas as gpd

Geopandas_DF = gpd.read_file('my_file.shp')

# setting projection and Transform
Projection=ccrs.PlateCarree()
Transform = ccrs.Geodetic(globe=ccrs.Globe(ellipse='GRS80'))

Fig, Ax = plt.subplots(1,1, subplot_kw={'projection': Projection})

Geopandas_DF.plot(ax=Ax, transform=Ax.transData)

gl = Ax.gridlines(crs=Projection , draw_labels=True, linewidth=0.5, 
                  alpha=0.4, color='k', linestyle='--')

gl.top_labels = False
gl.right_labels = False


### Creating a function to change my Ticklabels:

def Ticker_corrector(ax):
        """
    Parameter:ax, axes whose axis X and Y should be applied the function

        """


    ## Correcting the Axis X and Y of the main Axes

        Xticks = ax.get_xticklabels()

        for i in Xticks:
            T = i.get_text()
            T = T.replace('.',',')
            i = i.set_text(T)

            print(T)

        ax.set_xticklabels(Xticks)



        ## Correcting the Axis Y

        Yticks = ax.get_yticklabels()

        for i in Xticks:
            T = i.get_text()
            T = T.replace('.',',')
            i = i.set_text(T)

            print(T)

        ax.set_yticklabels(Yticks)

        return ax

Ax = Ticker_corrector(Ax)

Fig.show()


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

Тем не менее, метки Ticklabels остаются неизменными.Поэтому мне нужна помощь с этой проблемой.

Я благодарю вас за ваше время.

С уважением,

1 Ответ

0 голосов
/ 12 февраля 2019

Я считаю, что нашел решение.Это может работать не всегда, но это определенно решило мою проблему.

Фундаментальным основанием для решения было установить "Locale" моего matplotlib перед созданием моего графика.

Вот пример:

import locale
locale.setlocale(locale.LC_ALL, "Portuguese_Brazil.1252")
import matplotlib as mpl
mpl.rcParams['axes.formatter.use_locale'] = True


import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import geopandas as gpd

Geopandas_DF = gpd.read_file('my_file.shp')

# setting projection and Transform
Projection=ccrs.PlateCarree()
Transform = ccrs.Geodetic(globe=ccrs.Globe(ellipse='GRS80'))

Fig, Ax = plt.subplots(1,1, subplot_kw={'projection': Projection})

Geopandas_DF.plot(ax=Ax, transform=Ax.transData)

gl = Ax.gridlines(crs=Projection , draw_labels=True, linewidth=0.5, 
                  alpha=0.4, color='k', linestyle='--')

gl.top_labels = False
gl.right_labels = False


Fig.show()

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