如何在matplotlib的底图工具包中使你的经络向西正面?

时间:2017-07-17 22:56:48

标签: python matplotlib matplotlib-basemap

我正在使用matplotlib的底图工具包,我遇到了使我的经络向西正向而不是向东正向的问题。这是否可以使用底图?

除此之外,我在使用底图API(https://matplotlib.org/basemap/api/basemap_api.html)中提供的字符串格式化说明时遇到了问题。我下面的代码片段使我的经线东向正,但我不确定如何遵循字符串格式化指令,以便在每个刻度增量后有一个“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.

以下是使用此代码段的经线外观的屏幕截图:
screenshot

谢谢!我很感激帮助。

2 个答案:

答案 0 :(得分:2)

我找到了字符串格式问题的答案。附加" E"到每个滴答增量结束时,我只是这样做:

Gson().fromJson(string, JsonArray::class.java)

答案 1 :(得分:0)

正如@wwii所述,格式参数(fmt)可以使用您可以编写自己的格式设置功能。<​​/ p>

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)。以上功能和调用均有效。