我在matplotlib中有2个数字,一个是标准图,另一个是我绘制lat / long的底图。我试图为两个窗口设置一个徽标,但我只能在图1中获得自定义徽标,图2仍然显示Tkinter徽标。
我按照Change icon in a Matplotlib figure window
中的一个答案from Tkinter import PhotoImage
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
thismanager = plt.get_current_fig_manager()
img = PhotoImage(file='elcc_logo.ppm')
我有2个情节:
plt.figure(num=1, figsize=(16, 12))
thismanager.window.tk.call('wm', 'iconphoto', thismanager.window._w, img)
plt.plot(date, energyplot, 'bo')
plt.figure(num=2, figsize=(10, 8))
thismanager.window.tk.call('wm', 'iconphoto', thismanager.window._w, img)
earth = Basemap(projection='mill')
earth.drawcoastlines(color='0.50', linewidth=0.25)
earth.fillcontinents(color='0.95', zorder=0)
x, y = earth(longitudes, latitudes)
earth.scatter(x, y, color='g', marker='o', linewidths=0.5)
for i, txt in enumerate(datalogger_id):
plt.annotate(txt, xy=(x[i], y[i]), xycoords='data', xytext=(8, -4), textcoords='offset points', clip_on=True)
plt.show()
我可以交换图号和num=1
获得徽标的那个,我不能同时得到它。
答案 0 :(得分:0)
我会尝试以下(遗憾的是我无法测试它,因为我没有任何图标文件可用),你可以在每个图中创建一个管理器。
import matplotlib; matplotlib.use("TkAgg")
from Tkinter import PhotoImage
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
plt.figure(num=1, figsize=(16, 12))
thismanager = plt.get_current_fig_manager()
img = PhotoImage(name="icon.ppm")
thismanager.window.tk.call('wm', 'iconphoto', thismanager.window._w, img)
plt.figure(num=2, figsize=(10, 8))
thismanager2 = plt.get_current_fig_manager()
img2 = PhotoImage(name="icon.ppm")
thismanager2.window.tk.call('wm', 'iconphoto', thismanager2.window._w, img2)
plt.show()