【发布时间】:2013-12-21 12:50:18
【问题描述】:
我想在 Python (2.7) Tkinter GUI 应用程序(在 Windows 7 PC 上)中嵌入 Cartopy 模块映射,但我需要帮助弄清楚如何做。
据我了解,Cartopy 模块只是使 matplotlib 能够将其“绘图”或绘图视为坐标,并将其投影到现实世界的地理投影中。现在我已经看到了有关如何将 matplotlib 嵌入 Tkinter 的问题和指南,但这些总是涉及创建一个 matplotlib Figure(),然后在该图上使用 show() 方法和 FigureCanvasTkAgg(),而创建 cartopy 地图的说明通常是简单地使用 pyplot 的 axes() 方法,同时提供 cartopy 投影对象,然后将 show() 与 pyplot 模块(而不是 Figure 对象)一起使用。我尝试了一些不同的方法,但我无法理解如何协调这两种方法(创建一个 cartopy matplotlib 并将 matplotlib 嵌入 Tkinter)。我有制图、Python 和 Tkinter 方面的经验,但我是 matplotlib 和 cartopy 的新手,所以我可能对这些模块还不够了解。
如果有人能建议一个具体的代码示例以及他们的答案,那将是最有帮助的。也很高兴看到我如何在新的嵌入式 cartopy 地图中绘制线或点的示例,例如我在哪个对象上使用 .plot() 方法?
从长远来看,希望能够通过 Tkinter GUI 应用程序与 cartopy 地图进行交互。顺便说一句,以前有没有人做过这样的 cartopy Tkinter 嵌入?
---> 回答:感谢@Pelson 的回答,并提供代码示例。对于其他有同样问题的人,据我所知,关键步骤是 1)创建一个 matplot 图,2)通过包含投影参数向图中添加轴(从而使其成为 Cartopy 轴),以及 3)转换图通过在 Tkinter 小部件上使用 FigureCanvasTkAgg 函数,然后使用其 show() 和 get_tk_widget() 方法将小部件打包或放置在 Tkinter 窗口中。
【问题讨论】:
-
pyplot是一个模块而不是一个对象。下面的方法是相同的,只是在它上面有更多的便利包装器。
标签: python matplotlib tkinter embed cartopy