• 二十七、Basemap 自定义

    二十七、Basemap 自定义

    在这篇 Matplotlib 教程中,我们继续使用Basemap地理绘图扩展。 我们将展示一些我们可用的自定义选项。

    首先,从上一个教程中获取我们的起始代码:

    1. from mpl_toolkits.basemap import Basemap
    2. import matplotlib.pyplot as plt
    3. m = Basemap(projection='mill')
    4. m.drawcoastlines()
    5. plt.show()

    我们可以从放大到特定区域来开始:

    1. from mpl_toolkits.basemap import Basemap
    2. import matplotlib.pyplot as plt
    3. m = Basemap(projection='mill',
    4. llcrnrlat = -40,
    5. llcrnrlon = -40,
    6. urcrnrlat = 50,
    7. urcrnrlon = 75)
    8. m.drawcoastlines()
    9. plt.show()

    这里的参数是:

    • llcrnrlat - 左下角的纬度
    • llcrnrlon - 左下角的经度
    • urcrnrlat - 右上角的纬度
    • urcrnrlon - 右上角的经度

    此外,坐标需要转换,其中西经和南纬坐标是负值,北纬和东经坐标是正值。

    使用这些坐标,Basemap会选择它们之间的区域。

    二十七、Basemap 自定义 - 图1

    下面,我们要使用一些东西,类似:

    1. m.drawcountries(linewidth=2)

    这会画出国家,并使用线宽为 2 的线条生成分界线。

    另一个选项是:

    1. m.drawstates(color='b')

    这会用蓝色线条画出州。

    你也可以执行:

    1. m.drawcounties(color='darkred')

    这会画出国家。

    所以,我们的代码是:

    1. from mpl_toolkits.basemap import Basemap
    2. import matplotlib.pyplot as plt
    3. m = Basemap(projection='mill',
    4. llcrnrlat = -90,
    5. llcrnrlon = -180,
    6. urcrnrlat = 90,
    7. urcrnrlon = 180)
    8. m.drawcoastlines()
    9. m.drawcountries(linewidth=2)
    10. m.drawstates(color='b')
    11. m.drawcounties(color='darkred')
    12. plt.title('Basemap Tutorial')
    13. plt.show()

    二十七、Basemap 自定义 - 图2

    很难说,但我们定义了美国的区县的线条。 我们可以使用放大镜放大Basemap图形,就像其他图形那样,会生成:

    二十七、Basemap 自定义 - 图3

    另一个有用的选项是Basemap调用中的『分辨率』选项。

    1. m = Basemap(projection='mill',
    2. llcrnrlat = -90,
    3. llcrnrlon = -180,
    4. urcrnrlat = 90,
    5. urcrnrlon = 180,
    6. resolution='l')

    分辨率的选项为:

    • c - 粗糙
    • l - 低
    • h - 高
    • f - 完整

    对于更高的分辨率,你应该放大到很大,否则这可能只是浪费。

    另一个选项是使用etopo()绘制地形,如:

    1. m.etopo()

    使用drawcountries方法绘制此图形会生成:

    二十七、Basemap 自定义 - 图4

    最后,有一个蓝色的大理石版本,你可以调用:

    1. m.bluemarble()

    会生成:

    二十七、Basemap 自定义 - 图5

    目前为止的代码:

    1. from mpl_toolkits.basemap import Basemap
    2. import matplotlib.pyplot as plt
    3. m = Basemap(projection='mill',
    4. llcrnrlat = -90,
    5. llcrnrlon = -180,
    6. urcrnrlat = 90,
    7. urcrnrlon = 180,
    8. resolution='l')
    9. m.drawcoastlines()
    10. m.drawcountries(linewidth=2)
    11. ##m.drawstates(color='b')
    12. ##m.drawcounties(color='darkred')
    13. #m.fillcontinents()
    14. #m.etopo()
    15. m.bluemarble()
    16. plt.title('Basemap Tutorial')
    17. plt.show()
    18. `