在matplotlib
中常用的标题主要三种:窗口标题、图像标题和子图标题。
先通过三个案例简要说明这三类标题的实现。
窗口标题、图像标题,子图标题(仅1个子图)
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = 'SimHei' fig = plt.figure() plt.plot([1, 2]) # 设置图像标题 plt.suptitle("这是图像标题") # 设置子图标题 plt.title("这是子图标题") # 获取默认窗口标题 current_title = fig.canvas.manager.window.windowTitle() print("默认窗口:",current_title) # 设置窗口标题方式一 fig.canvas.set_window_title("这是窗口标题") # 设置窗口标题方式二 fig.canvas.manager.window.setWindowTitle("这是窗口标题") plt.show()
窗口标题、图像标题、子图标题(多子图)
使用subplot
函数实现子图
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = 'SimHei' fig = plt.figure() plt.subplot(1, 2, 1) plt.plot([1,2,3,4], [1,4,9,16], "go") # 设置子图1标题 plt.title("子图1标题") plt.subplot(122) plt.plot([1,2,3,4], [1,4,9,16], "r^") # r^ 表示 红色(red)三角 # 设置子图2标题 plt.title("子图2标题") # 设置图像标题 plt.suptitle("图像标题") # 设置窗口标题 #fig.canvas.set_window_title("这是窗口标题") fig.canvas.manager.window.setWindowTitle("这是窗口标题") plt.show()
使用subplots函数subplots实现子图
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = 'SimHei' fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(6,6)) ax[0].plot([1,2,3,4], [1,4,9,16], "go") # 设置子图1标题 ax[0].set_title("子图1标题") ax[1].plot([1,2,3,4], [1,4,9,16], "r^") # 设置子图2标题 ax[1].set_title("子图2标题") # 设置图像标题 plt.suptitle("图像标题") # 设置窗口标题 fig.canvas.manager.window.setWindowTitle("这是窗口标题") plt.show()
原理分析
通过前面三个案例可知:
窗口标题
设置窗口标题可以用两种方法:
一种是调用figure.canvas
对象的set_window_title
方法,一种是figure.canvas.manager.window
对象的setWindowTitle
方法。通过下面源码可知,这两种方法其实是等价的。
因此在日常实现过程中,关键是获取当前图像对象(figure
),即案例中的fig
。该方法只有一个参数,类型为字符串。
可以通过
通过figure.canvas.manager.window
对象的windowTitle
方法可以获取窗口标题。
class FigureManagerQT(FigureManagerBase): def set_window_title(self, title): self.window.setWindowTitle(title)
图像标题
调用plt.suptitle
函数即可。根据源码可知,plt.suptitle
函数其实是调用了当前figure
对象的suptitle
方法。
suptitle
函数参数
def suptitle(self, t, **kwargs): """ Add a centered title to the figure. Parameters ---------- t : str The title text. x : float, default 0.5 The x location of the text in figure coordinates. y : float, default 0.98 The y location of the text in figure coordinates. horizontalalignment, ha : {'center', 'left', right'}, default: 'center' The horizontal alignment of the text relative to (*x*, *y*). verticalalignment, va : {'top', 'center', 'bottom', 'baseline'}, default: 'top' The vertical alignment of the text relative to (*x*, *y*). fontsize, size : default: :rc:`figure.titlesize` The font size of the text. See `.Text.set_size` for possible values. fontweight, weight : default: :rc:`figure.titleweight` The font weight of the text. See `.Text.set_weight` for possible values. Returns ------- text The `.Text` instance of the title. Other Parameters ---------------- fontproperties : None or dict, optional A dict of font properties. If *fontproperties* is given the default values for font size and weight are taken from the `.FontProperties` defaults. :rc:`figure.titlesize` and :rc:`figure.titleweight` are ignored in this case. **kwargs Additional kwargs are `matplotlib.text.Text` properties. Examples -------- > fig.suptitle('This is the figure title', fontsize=12) """
子图标题
- 使用
subplot
函数:在所在子图中,使用plt.title
函数。 - 使用
subplots
函数:使用子图对象调用set_title
方法。 plt.title
函数和axes.set_title
方法的参数相同。
注意,在使用subplots
函数创建子图时,为什么不能使用plt.title
函数设置子图标题呢?
根据title
函数的源码可知,title
函数其实是通过gca()
函数获取子图,然后再调用set_title
方法设置标题的。根据实验,在使用subplots
函数函数创建多个子图时,plt.gca()
只能得到最后一个子图的标题,因此,在某些情况下使用plt.title
函数可设置最后一个子图的标题。
plt.title
函数和axes.set_title
方法源码
def title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs): return gca().set_title( label, fontdict=fontdict, loc=loc, pad=pad, y=y, **kwargs)
Axes.set_title(self, label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs): """ Set a title for the axes. Set one of the three available axes titles. The available titles are positioned above the axes in the center, flush with the left edge, and flush with the right edge. Parameters ---------- label : str Text to use for the title fontdict : dict A dictionary controlling the appearance of the title text, the default *fontdict* is:: {'fontsize': rcParams['axes.titlesize'], 'fontweight': rcParams['axes.titleweight'], 'color': rcParams['axes.titlecolor'], 'verticalalignment': 'baseline', 'horizontalalignment': loc} loc : {'center', 'left', 'right'}, default: :rc:`axes.titlelocation` Which title to set. y : float, default: :rc:`axes.titley` Vertical axes loation for the title (1.0 is the top). If None (the default), y is determined automatically to avoid decorators on the axes. pad : float, default: :rc:`axes.titlepad` The offset of the title from the top of the axes, in points. Returns ------- `.Text` The matplotlib text instance representing the title Other Parameters ---------------- **kwargs : `.Text` properties Other keyword arguments are text properties, see `.Text` for a list of valid text properties. """
plt.gca()
实验
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = 'SimHei' fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(6,6)) ax[0].plot([1,2,3,4], [1,4,9,16], "go") ax[1].plot([1,2,3,4], [1,4,9,16], "r^") print(plt.gca()) print(ax[0],ax[1])
结果为
AxesSubplot(0.547727,0.11;0.352273x0.77)
AxesSubplot(0.125,0.11;0.352273x0.77) AxesSubplot(0.547727,0.11;0.352273x0.77)
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】