在pylab中更改图形窗口标题

119
如何在pylab/python中设置图形窗口的标题?
fig = figure(9) # 9 is now the title of the window
fig.set_title("Test") #doesn't work
fig.title = "Test" #doesn't work

6
plt.suptitle('figure title'):将图形的总标题设置为“figure title”。plt.gcf().canvas.set_window_title('window title'):将窗口标题设置为“window title”。plt.figure('window title'):创建一个窗口,并将其标题设置为“window title”。 - Trevor Boyd Smith
请注意,plt.figure() 的行为似乎与 canvas.manager.set_window_title(fig_name) 不同。Canvas 不会修改 plt.get_figlabels() 返回的标签。您也无法通过执行 plt.figure(fig_name) 后来访问该图。 - Adrien Mau
8个回答

169

如果你想实际改变窗口,你可以这样做:

fig = pylab.gcf()
fig.canvas.set_window_title('Test')

更新于2021年5月15日:

上述解决方案已经过时,请参见这里。请改用新的解决方案。

fig = pylab.gcf()
fig.canvas.manager.set_window_title('Test')

无法工作。我有多个图形将被显示。此外,我通过 from pylab import * 导入了 pylab,并且 pylab.title("test")title("test") 都不起作用。 - Omar
我使用这段代码:https://matplotlib.org/3.1.0/gallery/user_interfaces/embedding_in_wx5_sgskip.html,想知道如何在这里重命名一个 matplotlib 图形?有什么想法吗? - sqp_125

61

创建图形时,您还可以设置窗口标题:

fig = plt.figure("YourWindowName")

2
从文档中可以看到:“如果num是一个字符串,窗口标题将被设置为该数字的num。”我发现大多数人都传递一个数字,所以直接传递标题会更好。谢谢! - varagrawal

39

根据安德鲁(Andrew)的回答,如果您使用pyplot而不是pylab,则:

fig = pyplot.gcf()
fig.canvas.set_window_title('My title')

4
警告:set_window_title 函数已在 Matplotlib 3.4 中被弃用,并将在两个小版本后被移除。请改用 manager.set_window_title 或特定于 GUI 的方法。 - Greenonline

20

我使用了pyplot.figure()来获得fig,并使用fig.canvas.set_window_title('The title'),这也很好用:

import matplotlib.pyplot as plt
...
fig = plt.figure(0)
fig.canvas.set_window_title('Window 3D')

输入图像描述

(似乎.gcf().figure()在这里的作用类似。)


3
看起来.figure()创建了一个新的figure,而.gcf()代表获取当前图形,这实际上就是它所做的。 - Ibrahim.H
1
Ibrahim的评论应该被编辑到答案中。另外:警告:set_window_title函数在Matplotlib 3.4中已被弃用,并将在两个次要版本后被删除。请改用manager.set_window_title或特定于GUI的方法。 - Greenonline
plt.figure('1') 似乎与 canvas.manager.set_window_title(fig_name) 的行为不同。Canvas 不会修改 plt.get_figlabels() 返回的标签。您也无法通过 plt.figure(fig_name) 在以后访问该图。 - Adrien Mau

7

对于pyplot,我发现这正是我所需要的:

import matplotlib.pyplot as plt
....
plt.get_current_fig_manager().canvas.set_window_title('My Figure Name')

1
当使用基于状态的plt.subplot()时,它不会返回一个fig对象,这时候就可以使用此方法。 - joshua

6
我发现使用canvas对象非常有用,就像这两个例子中所示:
fig.canvas.set_window_title('My title')

根据其他答案的建议(12),和。
plt.get_current_fig_manager().canvas.set_window_title('My Figure Name')

benjo's answer中可以看到,两者都给出了这个警告:
The set_window_title function was deprecated in Matplotlib 3.4 and will be removed two minor releases later. Use manager.set_window_title or GUI-specific methods instead.

解决方案似乎是采用Benjo的答案并使用:
plt.get_current_fig_manager().set_window_title('My Figure Name')

那就是说不再使用canvas。这样就可以消除警告了。

3

现在可用的代码(09.04.23,matplotlib 3.7.1):

import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [2,4,6,8,10]
plt.plot(x,y)
plt.get_current_fig_manager().set_window_title('My Figure Name')
plt.show()

0
自Matplotlib 3.4版本起,函数set_window_title已被弃用。
您可以使用matplotlib.pyplot.suptitle(),其行为类似于set_window_title
请参阅:matplotlib.pyplot.suptitle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接