精华内容
下载资源
问答
  • 在`matplotlib`中常用的标题主要三种:窗口标题、图像标题和子图标题。设置窗口标题可以用两种方法:一种是调用`figure.canvas`对象的`set_window_title`方法,一种是`figure.canvas.manager.window`对象的`set...

    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)
    
    展开全文
  • Matplotlib挑战 Matplotlib
  • Matplotlib-源码

    2021-03-16 17:03:07
    Matplotlib
  • matplotlib-源码

    2021-02-22 01:06:18
    matplotlib
  • Matplotlib Matplotlib作业Patrick Patten的Matplot lib作业
  • python-matplotlib-源码

    2021-03-20 16:11:08
    python-matplotlib
  • 执行摘要 本文件显示了关于其他疗法的药物鳞球蛋白作为鳞状细胞癌(SCC)的治疗的不良作用。 为此,对249位经鉴定为该SCC肿瘤生长的实验小鼠进行了研究。 在45天内,在这些小鼠中进行并测量了肿瘤生长。...
  • matplotlib-挑战 matplotlib挑战
  • matplotlib:UCSD Matplotlib分配
  • Homework5_Matplotlib-源码

    2021-03-05 05:57:23
    作业5_Matplotlib
  • matplotlib挑战-源码

    2021-02-27 07:56:23
    matplotlib挑战
  • matplotlib样式-源码

    2021-02-17 07:29:36
    matplotlib样式
  • 数据可视化matplotlib 什么是matplotlibMatplotlib是一个功能强大的库,能够生成复杂的出版物质量的图形,并具有二维或三维的精细布局控制。 虽然它是一个较旧的库,但是在它的顶部构建了许多库,并使用了它的...
  • Numpy-i-matplotlib-源码

    2021-04-08 20:29:36
    Numpy-i-matplotlib 该项目是在Visual Studio中完成的。 .py文件位于Numpy-i-matplotlib / FEM1 / FEM1 /中。
  • Matplotlib挑战-源码

    2021-02-15 08:00:48
    Matplotlib家庭作业-情节的力量 背景 没有好的故事情节可以说明数据有什么好处? 因此,让我们来了解一下关于Python Matplotlib的知识,并将其应用于实际情况和数据集: 当您的数据同伴赶紧去从事金融和政府工作时...
  • PyBer_Analysis 模块05 Matplotlib
  • Matplotlib No 132 python示例
  • Matplotlib没有264 python示例
  • matplotlib-挑战 matplotlib家庭作业

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,363
精华内容 945
关键字:

matplotlib源码