Python库matplotlib之二

Python库matplotlib之二

figure

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)

  • num,int 或 str 或 figure,是可选参数。是figure的唯一标识符。

    如果具有该标识符的figure已存在,则该figure被激活,并返回。整数指的是Figure.number属性,字符串指的是figure标签。

    如果没有给出带有标识符的figure或num,则会创建一个新figure,使其处于活动状态,并返回。如果 num 是 int,则它将用于Figure.number 属性,否则,将使用自动生成的整数值(从 1 开始,并针对每个新图形递增)。如果 num 是字符串,则figure标签和窗口标题将设置为此值。

  • figsize(float, float),默认值为rcParams"figure.figsize" (默认值:6.4, 4.8)

    宽度、高度(以英寸为单位)。

  • dpi,float,默认值为rcParams"figure.dpi"(默认:100.0)

    figure的分辨率,以每英寸点数为单位。

  • facecolor,颜色,默认值为rcParams"figure.facecolor"(默认:'white')

    背景颜色。

  • edgecolor,颜色,默认值为rcParams"figure.edgecolor"(默认:'white')

    边框颜色。

  • frameon,变量类型为bool,默认值为True。如果为 False,则禁止绘制figure框架。

  • FigureClass,figure的子类。可以选择使用自定义Figure 实例。

  • clear,变量类型是bool,默认值为False。如果True,并且该figure已存在,则将其清除。

  • strict_layout,变量类型是bool 或 dict,默认值:rcParams"figure.autolayout" (默认值:False)

    如果为False,则使用 subplotpars。如果为 True,则使用带有默认填充的tight_layout 调整subplot参数。当提供包含关键字w_pad、h_pad 和 rect 的字典时,默认的ight_layout 填充将被盖写。

  • constrained_layout,变量类型是bool,默认值:rcParams"figure.constrained_layout.use"(默认值:False)

    如果为 True,则使用约束布局,调整plot元素的位置。与tight_layout类似,但设计得更加灵活。

  • **kwargs可选。

matplotlib.pyplot.figure 实现以下类:

  • Figure,顶级Artist,拥有所有plot元素。许多方法都在FigureBase 中实现。
  • SubFigure,在一个figure内的逻辑figure,通常使用Figure.add_subfigure 或Figure.subfigures 方法添加到figure。
  • SubplotParams,控制subplots之间的默认间距。

是所有plot元素的顶级容器。

Figure实例通过callbacks属性支持回调,callbacks是一个CallbackRegistry 实例。可以连接的事件是"dpi_changed",并且将使用 func(fig) 调用回调,其中Fig 是Figure 实例。

下面例子使用add_axes。

复制代码
import matplotlib.pyplot as plt 

if __name__ == "__main__":
    left = 0.05
    bottom = 0.05
    width = 0.90
    height = 0.80
    rect = left, bottom, width, height
    fig = plt.figure()
    fig.add_axes(rect)
    fig.add_axes(rect, frameon=True, facecolor='g')
    fig.add_axes(rect, polar=True)
    ax = fig.add_axes(rect, projection='polar')

    plt.show()

Axes

词法:matplotlib.pyplot.axes(arg=None, **kwargs)

  • arg,None 或 4 元组

    该函数的确切行为取决于类型:

    无:使用 subplot(**kwargs) 添加新的全窗口轴。

    浮点数 4 元组 rect = left, bottom, width, height。使用当前figure上的 add_axes 添加一个新轴,其尺寸为标准化 (0, 1) 单位的矩形。

  • projection,{None, 'aitoff', 'hammer', 'lambert', 'mollweide', 'polar', 'rectilinear', str}, 是可选参数。

    轴的投影类型。 str 是自定义投影的名称。默认值None会产生"直线"投影。

  • polar,变量类型是bool,默认值为False

    如果为True,则等价于projection='polar'。

  • sharex、shareyAxes,可选

    与 sharex 和/或 sharey 共享 x 或 y 轴。该轴将具有与共享轴相同的限制、刻度和比例。

  • label,变量类型是str。返回轴的标签。

一个Axes对象封装在一个图中的单个plot/sub-plot的所有元素。

它包含大部分plot/sub-plot的元素:Axis、Tick、Line2D、Text、Polygon 等,并设置坐标系。

与图形中的所有可见元素一样,Axes是Artist 子类。

Axes实例通过一个回调属性支持回调,回调是一个CallbackRegistry 实例。可以连接的事件是"xlim_changed"和"ylim_changed",回调使用 func(ax) 调用回调函数,其中ax是 Axes 实例。

下面展示一些 内联代码片。

复制代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button

freqs = np.arange(0.2, 2, 0.3)

fig, ax = plt.subplots()
ax.set_ylabel('Frequency', color='#00ff00')
ax.set_xlabel('Time', color='#0000ff')
ax.set_facecolor('#eafff5')
plt.subplots_adjust(bottom=0.2)
t = np.arange(0.0, 10.0, 0.01)
s = np.sin(2*np.pi*freqs[0]*t)
l, = plt.plot(t, s, lw=2)

class Index:
    ind = 0

    def reset(self, event):
        self.ind = 0
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        l.set_color("#0000FF")
        plt.draw()

    def next(self, event):
        self.ind += 1
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        l.set_color("#00FF00")
        plt.draw()

    def prev(self, event):
        self.ind -= 1
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        l.set_color("#FF0000")
        plt.draw()

if __name__ == "__main__":
    callback = Index()
    axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
    axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
    ax_reset = plt.axes([0.59, 0.05, 0.1, 0.075])
    bnext = Button(axnext, 'Next')
    bnext.on_clicked(callback.next)
    bprev = Button(axprev, 'Previous')
    bprev.on_clicked(callback.prev)
    b_reset = Button(ax_reset, 'Reset')
    b_reset.on_clicked(callback.reset)

    plt.show()

subplot

matplotlib.pyplot.subplot(*args, **kwargs)

将一个Axes添加到当前图形,或获取现有的轴。

复制代码
import matplotlib.pyplot as plt

def plot_line():
    names = ['10-20', '21-40', '41-70']
    values = [15, 60, 25]

    plt.figure(figsize=(9, 3))

    plt.subplot(131)
    plt.bar(names, values)
    plt.subplot(132)
    plt.scatter(names, values)
    plt.subplot(133)
    plt.plot(names, values, 'g^')
    plt.suptitle('population statistics')
    plt.show()

if __name__ == "__main__":
    plot_line()
相关推荐
qq_406981031 小时前
什么是顶层 const什么是底层const
开发语言·c++
日日大王学编程1 小时前
DeepSeekHarness开源Agent底座详解
python·开源·deep learning
Eider19982 小时前
python基础语法之并发基础练习
开发语言·python
长和信泰光伏储能2 小时前
探索绿色能源:光伏发电的渠道与应用
python·能源
#麻辣小龙虾#2 小时前
网页布局css中flex+margin的组合布局技巧
开发语言·前端·javascript
郝学胜-神的一滴2 小时前
AI 编程智能体 20:技术栈选型与架构落地全攻略
人工智能·python·架构·langchain·1024程序员节·智能体
云和数据.ChenGuang2 小时前
python和java的try
java·开发语言·python
我是唐青枫2 小时前
Kotlin Inheritance(继承)详解:语法、原理、实战 Demo
开发语言·kotlin
ly76892 小时前
从 OpenAPI 到多语言 SDK 生成:Java 服务端契约漂移与生成器版本治理
java·开发语言·openapi·java 21·版本兼容·契约漂移·sdk 生成
lqbzlll2 小时前
CVE-2026-91403 排查指南:Java JSSE 信任链漏洞的根因、影响范围和修复步骤
java·开发语言·信任链