Python 如何在matplotlib的basemap工具箱中使子午线向西为正值?

Python 如何在matplotlib的basemap工具箱中使子午线向西为正值?,python,matplotlib,matplotlib-basemap,Python,Matplotlib,Matplotlib Basemap,我正在使用matplotlib的basemap工具包,我很难将子午线设置为西正,而不是东正。这在basemap中是可能的吗 除此之外,我在BasemapAPI()中给出的字符串格式说明中遇到了问题。下面的代码片段使我的meridians east为正值,但我不确定如何按照字符串格式说明进行操作,以便在每个刻度增量后都有一个“E”或“W”。我做错了什么 self.meridians = self.basemap_ax.drawmeridians(numpy.around(numpy.degrees

我正在使用matplotlib的basemap工具包,我很难将子午线设置为西正,而不是东正。这在basemap中是可能的吗

除此之外,我在BasemapAPI()中给出的字符串格式说明中遇到了问题。下面的代码片段使我的meridians east为正值,但我不确定如何按照字符串格式说明进行操作,以便在每个刻度增量后都有一个“E”或“W”。我做错了什么

self.meridians = self.basemap_ax.drawmeridians(numpy.around(numpy.degrees(coord_lons)),
    labels=[1,0,0,1], labelstyle='+/-', fmt="%s", linewidth=0.5, color='gray', yoffset=5) % "E" #This will be either "E" or "W" depending on whether the meridians are east-positive or west-positive.
下面是Meridian的屏幕截图,代码片段如下:


谢谢大家!!非常感谢您的帮助。

我找到了字符串格式问题的答案。为了在每个刻度增量的末尾添加一个“E”,我只做了以下操作:

self.meridians = self.basemap_ax.drawmeridians(numpy.around(numpy.degrees(coord_lons)),
    labels=[1,0,0,1], labelstyle='+/-', fmt='%g' + 'E', linewidth=0.5, color='gray', yoffset=5)

正如@wwii提到的格式参数(fmt)可以使用格式化函数,您可以自己编写

def fmt_lon(lon):
    str_lon = u'' + str(lon) + '$^\circ$D'
    return str_lon 

def fmt_lat(lat):
    str_lat = u'' + str(lat) + '$^\circ$K'
    return str_lat


parallels = m.drawparallels(np.arange(ll_lat+0.5, ur_lat, 2.5), labels=[1, 0, 0, 1], fmt=fmt_lat, fontsize=5, linewidth=0.25)

meridians = m.drawmeridians(np.arange(ll_lon, ur_lon, 2.5), labels=[0, 0, 0, 1], fmt=fmt_lon, fontsize=5, linewidth=0.25)

只需调用所需的函数即可获得所需的格式。我需要将(E,N)的字母改为土耳其对应部分(D,K)。上述函数和调用有效。

为什么不能只处理东向为正、西向为负的情况?对于东90度,您希望轴/刻度标签在东向为正时表示什么?所有内容都应以东向为准。我附加的屏幕截图是东正片,这就是为什么增量从-180(从左到右)到+180。在西方,一切都应该是西方的。在这种情况下,增量应该从+180到-180(从左到右)。对于向东90度,我希望记号标签显示“+90 E”。该参数仅显示为允许加/减前缀或E/W前缀。format参数将函数作为参数—只需编写一个返回所需字符串的函数即可。