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()
相关推荐
牧文山1 分钟前
用python给markdown文档加空行
python
神一样的老师14 分钟前
讯飞星火编排创建智能体学习(二)决策节点
python·学习·低代码·自然语言处理
Web项目开发25 分钟前
vue3 pinia状态管理重点概念理解和持久化
开发语言·javascript·ecmascript
wang.wenchao1 小时前
Rust调用tree-sitter支持自定义语言解析
开发语言·后端·rust
aimmon1 小时前
深度学习之开发环境(CUDA、Conda、Pytorch)准备(4)
人工智能·pytorch·python·深度学习·conda·cuda
周万宁.FoBJ1 小时前
vue3 实现文本内容超过N行折叠并显示“...展开”组件
开发语言·前端·javascript
stormsha1 小时前
Java中使用接口实现回调函数的详解与示例
java·开发语言·python
是小恐龙啊1 小时前
单链表的增删改查(数据结构)
c语言·开发语言·数据结构·算法
什码情况1 小时前
报数游戏 - 华为OD统一考试(E卷)
java·python·算法·游戏·华为od·笔试·华为od机试
鸽芷咕1 小时前
【C++报错已解决】std::ios_base::sync_with_stdio
开发语言·c++·ios·bug