我想在一个Python (2.7) Tkinter GUI应用程序(在Windows 7 PC上)中嵌入Cartopy模块地图,但我需要帮助弄清楚如何操作。
据我所知,Cartopy模块简单地使matplotlib将其“图形”或绘画处理为坐标,并将这些坐标投射到真实世界的地理投影中。现在我看到了一些有关如何将matplotlib嵌入Tkinter的问题和指南,但这些都涉及创建一个matplotlib Figure(),然后使用show()方法和FigureCanvasTkAgg()在该图中,而创建cartopy地图的说明通常只需使用pyplot的axes()方法,同时提供cartopy投影对象,然后使用pyplot模块(而不是Figure对象)的show()。我尝试了一些不同的方法,但我只是无法理解如何协调这两种方法(创建cartopy matplotlib和将matplotlib嵌入Tkinter)。我有制图,Python和Tkinter方面的经验,但我是新手matplotlib和cartopy,所以可能是因为我还不了解这些模块。
如果有人能提出具体的代码示例进行回答,那将非常有帮助。还可以看到如何在新嵌入的cartopy地图中绘制线条或点的示例,例如我要在哪个对象上使用.plot()方法?
长远来看,希望能够通过Tkinter GUI应用程序与cartopy地图进行交互。顺便说一下,有人以前做过这样的cartopy Tkinter嵌入吗?
--->回答:感谢@Pelson提供答案和代码示例。根据我理解,关键步骤是1)创建一个matplot图,2)通过包括投影参数来添加一个轴到图中(从而使其成为Cartopy轴),并3)使用FigureCanvasTkAgg函数将图转换为Tkinter小部件,然后使用它的show()和get_tk_widget()方法在Tkinter窗口中打包或放置小部件。
据我所知,Cartopy模块简单地使matplotlib将其“图形”或绘画处理为坐标,并将这些坐标投射到真实世界的地理投影中。现在我看到了一些有关如何将matplotlib嵌入Tkinter的问题和指南,但这些都涉及创建一个matplotlib Figure(),然后使用show()方法和FigureCanvasTkAgg()在该图中,而创建cartopy地图的说明通常只需使用pyplot的axes()方法,同时提供cartopy投影对象,然后使用pyplot模块(而不是Figure对象)的show()。我尝试了一些不同的方法,但我只是无法理解如何协调这两种方法(创建cartopy matplotlib和将matplotlib嵌入Tkinter)。我有制图,Python和Tkinter方面的经验,但我是新手matplotlib和cartopy,所以可能是因为我还不了解这些模块。
如果有人能提出具体的代码示例进行回答,那将非常有帮助。还可以看到如何在新嵌入的cartopy地图中绘制线条或点的示例,例如我要在哪个对象上使用.plot()方法?
长远来看,希望能够通过Tkinter GUI应用程序与cartopy地图进行交互。顺便说一下,有人以前做过这样的cartopy Tkinter嵌入吗?
--->回答:感谢@Pelson提供答案和代码示例。根据我理解,关键步骤是1)创建一个matplot图,2)通过包括投影参数来添加一个轴到图中(从而使其成为Cartopy轴),并3)使用FigureCanvasTkAgg函数将图转换为Tkinter小部件,然后使用它的show()和get_tk_widget()方法在Tkinter窗口中打包或放置小部件。
pyplot
是一个模块而不是对象。方法在底层都是相同的,只是其中一个有更多的便利包装器。 - tacaswell