p20_matplotlib

Matplotlib 安装

Anaconda 中自带 matplotlib 库,无需另行安装

Python标准版本,需要手动安装 matplotlib:

查看当前版本:print(matplotlib.version)

安装最新的稳定版本:pip install matplotlib

安装指定版本:pip install matplotlib==版本号

离线安装包: https://pypi.tuna.tsinghua.edu.cn/simple/matplotlib

Matplotlib 简介

Matplotlib 是 Python 常用的第三方 2D 绘图库,是 Python 中最受欢迎的数据可视化软件

包之一。

plt.plot() 绘图

plt.plot(x, y, color, linestyle, linewidth, marker, markerfacecolor, markersize, label)

x: x轴数据

y: y轴数据

color: 线的颜色

linestyle: 线条样式

linewidth: 线条宽度(用数字表示大小)

marker: 标记的样式

markerfacecolor: 标记填充颜色

颜色 十六进制颜色 颜色 十六进制颜色 颜色 十六进制颜色
'aliceblue' '#F0F8FF' 'antiquewhite' '#FAEBD7' 'aqua' '#00FFFF'
'aquamarine' '#7FFFD4' 'azure' '#F0FFFF' 'beige' '#F5F5DC'
'bisque' '#FFE4C4' 'black' '#000000' 'blanchedalmond' '#FFEBCD'
'blue' '#0000FF' 'blueviolet' '#8A2BE2' 'brown' '#A52A2A'
'burlywood' '#DEB887' 'cadetblue' '#5F9EA0' 'chartreuse' '#7FFF00'
'chocolate' '#D2691E' 'coral' '#FF7F50' 'cornflowerblue' '#6495ED'
'cornsilk' '#FFF8DC' 'crimson' '#DC143C' 'cyan' '#00FFFF'
'darkblue' '#00008B' 'darkcyan' '#008B8B' 'darkgoldenrod' '#B8860B'
'darkgray' '#A9A9A9' 'darkgreen' '#006400' 'darkkhaki' '#BDB76B'
'darkmagenta' '#8B008B' 'darkolivegreen' '#556B2F' 'darkorange' '#FF8C00'
'darkorchid' '#9932CC' 'darkred' '#8B0000' 'darksalmon' '#E9967A'
'darkseagreen' '#8FBC8F' 'darkslateblue' '#483D8B' 'darkslategray' '#2F4F4F'
'darkturquoise' '#00CED1' 'darkviolet' '#9400D3' 'deeppink' '#FF1493'
'deepskyblue' '#00BFFF' 'dimgray' '#696969' 'dodgerblue' '#1E90FF'
'firebrick' '#B22222' 'floralwhite' '#FFFAF0' 'forestgreen' '#228B22'
'fuchsia' '#FF00FF' 'gainsboro' '#DCDCDC' 'ghostwhite' '#F8F8FF'
'gold' '#FFD700' 'goldenrod' '#DAA520' 'gray' '#808080'
'green' '#008000' 'greenyellow' '#ADFF2F' 'honeydew' '#F0FFF0'
'hotpink' '#FF69B4' 'indianred' '#CD5C5C' 'indigo' '#4B0082'
'ivory' '#FFFFF0' 'khaki' '#F0E68C' 'lavender' '#E6E6FA'
'lavenderblush' '#FFF0F5' 'lawngreen' '#7CFC00' 'lemonchiffon' '#FFFACD'
'lightblue' '#ADD8E6' 'lightcoral' '#F08080' 'lightcyan' '#E0FFFF'
'lightgoldenrodyellow' '#FAFAD2' 'lightgreen' '#90EE90' 'lightgray' '#D3D3D3'
'lightpink' '#FFB6C1' 'lightsalmon' '#FFA07A' 'lightseagreen' '#20B2AA'
'lightskyblue' '#87CEFA' 'lightslategray' '#778899' 'lightsteelblue' '#B0C4DE'
'lightyellow' '#FFFFE0' 'lime' '#00FF00' 'limegreen' '#32CD32'
'linen' '#FAF0E6' 'magenta' '#FF00FF' 'maroon' '#800000'

markersize: 标记尺寸(用数字表示大小)

label: 线条的标签(后文结合 legend() 创建图例来讲)

以上就是plot()函数常用的参数,下面的表格是对应参数可供选择的值

color 颜色

颜色 十六进制颜色 颜色 十六进制颜色 颜色 十六进制颜色
'mediumaquamarine' '#66CDAA' 'mediumblue' '#0000CD' 'mediumorchid' '#BA55D3'
'mediumpurple' '#9370DB' 'mediumseagreen' '#3CB371' 'mediumslateblue' '#7B68EE'
'mediumspringgreen' '#00FA9A' 'mediumturquoise' '#48D1CC' 'mediumvioletred' '#C71585'
'midnightblue' '#191970' 'mintcream' '#F5FFFA' 'mistyrose' '#FFE4E1'
'moccasin' '#FFE4B5' 'navajowhite' '#FFDEAD' 'navy' '#000080'
'oldlace' '#FDF5E6' 'olive' '#808000' 'olivedrab' '#6B8E23'
'orange' '#FFA500' 'orangered' '#FF4500' 'orchid' '#DA70D6'
'palegoldenrod' '#EEE8AA' 'palegreen' '#98FB98' 'paleturquoise' '#AFEEEE'
'palevioletred' '#DB7093' 'papayawhip' '#FFEFD5' 'peachpuff' '#FFDAB9'
'peru' '#CD853F' 'pink' '#FFC0CB' 'plum' '#DDA0DD'
'powderblue' '#B0E0E6' 'purple' '#800080' 'red' '#FF0000'
'rosybrown' '#BC8F8F' 'royalblue' '#4169E1' 'saddlebrown' '#8B4513'
'salmon' '#FA8072' 'sandybrown' '#FAA460' 'seagreen' '#2E8B57'
'seashell' '#FFF5EE' 'sienna' '#A0522D'' silver' '#C0C0C0'
'skyblue' '#87CEEB' 'slateblue' '#6A5ACD' 'slategray' '#708090'
'snow' '#FFFAFA' 'springgreen' '#00FF7F' 'steelblue' '#4682B4'
'tan' '#D2B48C' 'teal' '#008080' 'thistle' '#D8BFD8'
'tomato' '#FF6347' 'turquoise' '#40E0D0' 'violet' '#EE82EE'
'wheat' '#F5DEB3' 'white' '#FFFFFF' 'whitesmoke' '#F5F5F5'
'yellow' '#FFFF00' 'yellowgreen' '#9ACD32'

样式一 样式二 说明

‘-’ ‘solid’ 实线

‘–’ ‘dashed’ 虚线

‘-.’ ‘dashdot’ 点画线

‘:’ ‘dotted’ 点线

’ ’ ‘None’ 不显示线条了

样式 说明 样式 说明

‘.’ 点标记 ‘1’ 下花三角标记

linestyle 线条样式

marker 标记样式

样式 说明 样式 说明

‘,’ 像素标记(极小点) ‘2’ 上花三角标记

‘o’ 实心圆标记 ‘3’ 左花三角标记

‘v’ 倒三角标记 ‘4’ 右花三角标记

‘^’ 上三角标记 ‘s’ 实心方形标记

‘>’ 右三角标记 ‘p’ 实心五角标记

‘<’ 左三角标记 ‘*’ 星形标记

‘h’ 竖六边形标记 ‘d’ 瘦菱形标记

‘H’ 横六边形标记 ‘D’ 菱形标记

‘+’ 十字标记 ‘|’ 垂直线标记

‘x’ x标记 ‘_’ 水平线标记

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)
plt.plot(x, y, color='skyblue', linestyle='-.', linewidth= 2 ,
marker='h', markerfacecolor='gold', markersize= 8 )
plt.show()

plt.figure() 创建画布

想要绘图,必须先要创建一个 figure(画布),还要有 axes(坐标系)

隐式创建 figure

当第一次执行 plt.xxx() 画图代码时,会自动判断是否已经存在画布

如果没有,则自动创建一个画布,并且在该画布上自动创建一个坐标系

如果不设置画布,一个画布上只有一个坐标系

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(- 3 , 3 , 50 )
y1 = 2 x + 2
y2 = x
* 2
y3 = np.sin(x)

plt.plot(x, y1, color=‘gold’)
plt.plot(x, y2, color=‘red’)
plt.plot(x, y3, color=‘green’)
plt.show()

显式创建 figure

利用 plt.figure() 手动创建画布,可以创建多个画布

在 plt.figure() 下面的 plt.xxx() 画图代码都会画在对应的画布上面

plt.figure(num=None, figsize=None, dpi=None, facecolor=None)

num: 画布编号或名称(数字为编号,字符串为名称),不指定则按照数字顺序

figsize: 指定 figure 的宽和高(英寸),默认为(6.4, 4.8)

dpi: 指定画布显示的分辨率(用数字表示大小,默认为 100 )

facecolor: 背景的颜色

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- 3 , 3 , 50 )
y1 = 2 *x + 2
y2 = x** 2
y3 = np.sin(x)
plt.figure()  # 下面两个画图操作都属于这个画布
plt.plot(x, y1, color='gold')
plt.plot(x, y2, color='red')
plt.figure()  # 下面一个画图操作属于这个画布
plt.plot(x, y3, color='green')
plt.show()

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)

plt.figure(num= 3 , figsize=( 7 , 3 ), dpi= 72 , facecolor=“red”)
plt.plot(x, y)

plt.figure(num=“画布二”, figsize=( 7 , 3 ), dpi= 72 , facecolor=“green”)
plt.plot(x, y)
plt.show()

中文/负号显示问题

matplotlib 在使用过程中,可能会遇到中文或者负号显示乱码的问题,把下面代码

粘贴到matplotlib 使用的最前面即可

设置坐标轴

限制显示区域

可以用 plt.xlim() 和 plt.ylim() 来限制图像横纵坐标轴的显示区域,既可以限制轴

的最小值或最大值,又可以同时限制最小值和最大值

import matplotlib.pyplot as plt
# 通过rc参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过rc参数修改字符显示,就可以正常显示负号
plt.rcParams['axes.unicode_minus'] = False
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)
plt.figure()  # 创建画布 1
plt.plot(x, y)
plt.xlim(xmin=- 2 )  # 限制横坐标显示最小值为 -
plt.ylim(ymax=0.8)  # 限制纵坐标显示最大值为 0.

plt.figure()  # 创建画布 2
plt.plot(x, y)
plt.xlim((- 2 , 4 ))  # 限制横坐标显示范围[-2, 4]
plt.ylim(ymin=-0.5, ymax=0.8)  # 限制纵坐标显示范围[-0.5, 0.8]
plt.show()

设置坐标轴标签

可以用 plt.xlabel() 和 plt.ylabel() 来指定图像横纵坐标轴的标签

import matplotlib.pyplot as plt
import numpy as np
# 规避中文或者负号可能显示乱码的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)
plt.figure()
plt.plot(x, y)
plt.xlim((- 2 , 4 ))
plt.ylim((-0.5, 0.8))

设置坐标轴刻度

plt.xticks(ticks=None, labels=None) / plt.yticks(ticks=None, labels=None)

ticks: 刻度点的位置组成的列表(可以指定为空列表,则去掉刻度,但轴还在)

labels: 刻度点的位置上的标签组成的列表(labels不指定,则标签显示ticks值)

当不指定参数时,返回对应轴当前刻度点的位置和标签

指定参数时,则为设置对应轴的刻度点的位置和标签

# 指定横轴标签
plt.xlabel("我是横轴标签")
# 指定纵轴标签,并设置字体大小为 14
plt.ylabel("我是纵轴标签", fontsize= 14 )
plt.show()
import matplotlib.pyplot as plt

import numpy as np

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]
plt.rcParams[‘axes.unicode_minus’] = False

x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)

plt.figure()
plt.plot(x, y)
plt.xlim(- 2 , 4 )
plt.ylim((-0.4, 0.8))
plt.xlabel(“我是横轴标签”, fontsize= 14 )
plt.ylabel(“我是纵轴标签”, fontsize= 14 )

当不指定参数时,返回对应轴当前刻度点的位置和标签

print(plt.xticks())
print(plt.yticks())
plt.show()

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)

plt.figure()  # 画布 1
plt.plot(x, y)

ticks的值作为刻度点的位置, labels的值作为刻度点的位置上的标签

plt.yticks(ticks=[- 1 , -0.8, -0.5, -0.1, 1 ], labels=[“a”, “b”, “c”,
“d”, “e”])

plt.figure()  # 画布 2
plt.plot(x, y)

ticks指定为空列表, 去掉刻度, 但轴还在

plt.xticks(ticks=[])

plt.figure()  # 画布 3
plt.plot(x, y)

设置坐标边框颜色

1. 用 plt.gca() 获取到坐标体系(矩形坐标框)

2. 调用坐标体系的 spines 属性,通过 ‘top’、‘bottom’、‘left’、‘right’ 参数获得指定的

边框

3. 结合 set_color() 方法来指定颜色(当颜色指定为 ‘None’ 时,表示不显示该边框)

plt.axis("off")  # 把轴去掉,刻度一起没了
plt.figure()  # 画布 4
plt.plot(x, y)
new_xticks = np.linspace(- 4 , 4 , 9 )
# 因为没有指定labels参数,所以ticks的值既作为刻度点的位置又作为刻度的标签
plt.xticks(ticks=new_xticks)
plt.yticks(ticks=[- 1 , -0.8, -0.5, -0.1, 1 ])
plt.show()

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)

plt.figure()
plt.plot(x, y)
plt.yticks(ticks=[- 1 , -0.8, -0.5, -0.1, 1 ], labels=[“a”, “b”, “c”,
“d”, “e”])

ax = plt.gca()
ax.spines[‘right’].set_color(‘None’)
ax.spines[‘top’].set_color(‘None’)
ax.spines[‘left’].set_color(‘red’)
ax.spines[‘bottom’].set_color(‘green’)
plt.show()

指定边框为坐标轴

1. 用 plt.gca() 获取到坐标体系(矩形坐标框)

2. 坐标体系指定轴来调用 set_ticks_position() 方法,通过

‘top’、‘bottom’、‘left’、‘right’ 参数指定边框为坐标轴

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)
plt.figure()
plt.plot(x, y)
plt.yticks(ticks=[- 1 , -0.8, -0.5, -0.1, 1 ], labels=['a', 'b', 'c',
'd', 'e'])
ax = plt.gca()
ax.spines['right'].set_color('skyblue')
ax.spines['top'].set_color('blue')
ax.spines['left'].set_color('red')
ax.spines['bottom'].set_color('green')
# 把坐标体系的上边框作为x轴
ax.xaxis.set_ticks_position('top')
# 把坐标体系的右边框作为y轴
ax.yaxis.set_ticks_position('right')
plt.show()

移动坐标边框

1. 用 plt.gca() 获取到坐标体系(矩形坐标框)

2. 调用坐标体系的 spines 属性,通过 ‘top’、‘bottom’、‘left’、‘right’ 参数获得指定的

边框

3. 结合 set_position() 方法来指定边框位置

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)
plt.figure()
plt.plot(x, y)

plt.yticks(ticks=[- 1 , -0.8, -0.5, -0.1, 1 ], labels=[‘a’, ‘b’, ‘c’,
‘d’, ‘e’])

ax = plt.gca()
ax.spines[‘right’].set_color(‘None’)
ax.spines[‘top’].set_color(‘None’)
ax.spines[‘left’].set_color(‘red’)
ax.spines[‘bottom’].set_color(‘green’)

选择坐标体系的左边框, 设置位置到数据为 0 的地方(即x轴原点)

ax.spines[‘left’].set_position((‘data’, 0 ))

选择坐标体系的底边框, 设置位置到数据为-0.1的地方(即y轴的’d’点)

ax.spines[‘bottom’].set_position((‘data’, -0.1))
plt.show()

plt.legend() 创建图例

plt.legend(handles, labels, loc, fontsize, edgecolor, facecolor)

handles: 控制柄,默认是一个画布中所有线对象组成的列表

labels: 图例标签,默认是绘图函数中 label 参数值组成的列表

loc: 图例创建的位置(默认是loc=“best”,代表自动找最好的位置)

fontsize: 图例字体大小(用数字大小表示)

edgecolor: 图例边框颜色

facecolor: 图例背景颜色

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(- 3 , 3 , 50 )
y1 = 2 *x + 1
y2 = np.sin(x)
plt.figure()
plt.plot(x, y1, color='blue', label='直线')
plt.plot(x, y2, color='green', label='曲线')
plt.legend(loc='lower right', fontsize= 14 , frameon=True,
edgecolor='red', facecolor='yellow')
plt.figure()
plt.plot(x, y1, color='blue')
plt.plot(x, y2, color='green')
# 指定labels
plt.legend(labels=['直线', '曲线'])
plt.figure()
# plot返回Line2D对象, 装在列表里, 所以解包
line1, = plt.plot(x, y1, color='blue', label='直线')
line2, = plt.plot(x, y2, color='green', label='曲线')
print(line1)
print(line2)
# 指定第一条线创建图例, 且图例标签改为'线条1'

plt.text() 文字说明

plt.text(x, y, s, size, color, ha, va)

x:文字开始写的 x 位置

y:文字开始写的 y 位置

s:需要写的内容

size:文字大小

color:文字颜色

ha:设置垂直对齐方式,可选参数:‘left’, ‘right’, ‘center’ 等

va:设置水平对齐方式 ,可选参数: ‘center’ , ‘top’ , ‘bottom’ 等

plt.legend(handles=[line1, ], labels=['线条1', ])
plt.show()

plt.scatter() 画散点图

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- 3 , 3 , 50 )
y = np.sin(x)
plt.figure()
plt.plot(x, y)
plt.text(x=1.1, y=0.6, s="y=sinx", size= 16 , color="red")
plt.show()

plt.scatter(x, y, s, c, marker, alpha, linewidths, edgecolors)

x:形状为(n,)的数组,绘图的 x 轴数据

y:形状为(n,)的数组,绘图的 y 轴数据

s:标记点的大小(用数字大小表示)

c:标记点的颜色

marker:标记的样式,默认的是 ‘o’

alpha:透明度(0-1之间)

linewidths:标记点边框线的宽度

edgecolors:标记点的边框线颜色

import matplotlib.pyplot as plt
import numpy as np
# 从正态分布中抽取 100 个随机样本
x1 = np.random.normal( 0 , 1 , 100 )
y1 = np.random.normal( 0 , 1 , 100 )
x2 = np.random.normal( 0 , 1 , 100 )
y2 = np.random.normal( 0 , 1 , 100 )
plt.scatter(x1, y1, s= 90 , c='green', marker='D', alpha=0.2,
linewidths= 2 , edgecolors='red')
plt.scatter(x2, y2, s= 90 , c='yellow', marker='D', alpha=0.8,
linewidths= 2 , edgecolors='black')
plt.xlim((-1.5, 1.5))
plt.ylim((-1.5, 1.5))
plt.show()

plt.bar() 画条形图

plt.bar(x, height, width, color, edgecolor, alpha, linewidth, bottom, align)

x: x 坐标

height:条形的高度

width:条形的宽度,默认是0.8

color:条形的颜色

edgecolor:条形边框的颜色

alpha:颜色的透明度(0~1)

linewidth:条形边框的宽度

bottom:条形底边的起始位置(即y轴的起始坐标)

align:条形的对齐方式(默认为 “center”,表示刻度和条形中心对齐,“edge” 表

示刻度和条形左边对齐)

import matplotlib.pyplot as plt
import numpy as np

x0 = np.arange( 12 )

从均匀分布中抽取 12 个随机样本

h1 = np.random.uniform(0.5, 1.0, 12 )
h2 = np.random.uniform(0.5, 1.0, 12 )

plt.figure()

用负号来画关于x轴对称的条形图, 底边各上浮0.02的距离使得分开

plt.bar(x0, +h1, color=‘yellow’, edgecolor=‘blue’, bottom=0.02)
plt.bar(x0, -h2, color=‘green’, edgecolor=‘red’, bottom=-0.02)

for i in range(len(x0)):

y值保留小数点后两位,数字上浮0.03为了好看

plt.text(x0[i], h1[i]+0.03, f"{h1[i]:.2f}“, va=‘bottom’,
ha=‘center’)
plt.text(x0[i], -h2[i]-0.03, f”{-h2[i]:.2f}", va=‘top’,
ha=‘center’)

# 限制坐标轴显示区域, 为了图显示美观

plt.xlim(- 1 , 12 )
plt.ylim(-1.2, 1.2)

去掉坐标轴刻度

plt.xticks([])
plt.yticks([])

plt.figure()

条形宽度默认是0.8, 要把两个条形放在一起, 那么每个宽度就是0.4, 再互相错位0.2就

可以刚好挨着
plt.bar(x0-0.2, h1, width=0.4, color=‘blue’, alpha=0.4)

这里用了align参数, 第一个参数指定为x0+0.2也可以

plt.bar(x0, h2, width=0.4, color=‘gray’, align=‘edge’)

限制坐标轴显示区域, 为了图显示美观

plt.xlim(- 1 , 12 )
plt.ylim( 0 , 1.1)

去掉坐标轴刻度

plt.xticks([])
plt.yticks([])
plt.show()

plt.imshow() 数据转图像

传入图像的像素值数据,就可以绘制出图像,然后通过 plt.show() 来显示图像

plt.imshow(X, cmap, alpha)

X: 图像数据(可以是二维的,比如 灰度图;也可以是三维的,比如 RGB 图)

cmap: 默认是彩色的,还有其他模式,如:灰度图是 “Greys”

alpha: 透明度(0~1)

import matplotlib.pyplot as plt
import numpy as np
plt.figure()
# 自己造一个shape为(3, 3)的图像数据
data = np.array([[ 0 , 50 , 200 ], [ 200 , 100 , 0 ], [ 0 , 150 , 200 ]])
plt.imshow(data)
# plt.imshow(data, cmap="Greys")
# plt.imshow(data, cmap="Greys", alpha=0.3)
plt.show()

plt.subplot() 创建子图

plt.subplot(nrows, ncols, index)

nrows:行数

ncols:列数

index:指定第几个子图(从 1 开始)

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- 3 , 3 , 50 )
y1 = 2 *x + 1
y2 = x** 2
y3 = np.sin(x)
y4 = np.tan(x)

plt.figure()

在画布上创建 2 行 2 列的子图,并在第 1 个子图中绘画

plt.subplot( 2 , 2 , 1 )
plt.plot(x, y1)

在画布上创建 2 行 2 列的子图,在第 2 个子图中绘画

plt.subplot( 2 , 2 , 2 )
plt.plot(x, y2)

在画布上创建 2 行 2 列的子图,在第 3 个子图中绘画

plt.subplot( 2 , 2 , 3 )
plt.plot(x, y3)

在画布上创建 2 行 2 列的子图,在第 4 个子图中绘画

plt.subplot( 2 , 2 , 4 )
plt.plot(x, y4)

plt.figure()

在画布上创建 2 行 1 列的子图,并在第 1 个子图中绘画

plt.subplot( 2 , 1 , 1 )
plt.plot(x, y1)

在画布上创建 2 行 3 列的子图,并在第 4 个子图中绘画

plt.subplot( 2 , 3 , 4 )
plt.plot(x, y2)

在画布上创建 2 行 3 列的子图,并在第 5 个子图中绘画

plt.subplot( 2 , 3 , 5 )
plt.plot(x, y3)

在画布上创建 2 行 3 列的子图,并在第 6 个子图中绘画

plt.subplot( 2 , 3 , 6 )
plt.plot(x, y4)

plt.show()

plt.axes() 画图中图

plt.axes() 可以通过指定相对画布的位置和宽高在一个画布中定制多个坐标轴

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(- 3 , 3 , 50 )
y1 = 2 *x + 1
y2 = x** 2
y3 = np.sin(x)
plt.figure()
"""
对这四个数字的说明:
0.1, 0.1表示坐标框左下角的位置, x和y坐标在画布的10%的位置
0.8, 0.8表示坐标框的宽和高为画布的80%大小 """
plt.axes([0.1, 0.1, 0.8, 0.8])
plt.title('直线')  # 标题
plt.plot(x, y1)
plt.axes([0.2, 0.6, 0.25, 0.25])
plt.title('抛物线')
plt.plot(x, y2)
plt.axes([0.6, 0.2, 0.25, 0.25])
plt.plot(x, y3)
plt.title('余弦曲线')
plt.show()

plt.savefig() 保存图像

通过 plt.savefig() 保存图像到指定的路径

import matplotlib.pyplot as plt
import numpy as np

y2 = []
y1 = np.linspace(- 3 , 3 , 50 )

for i in y1** 2 :
y2.append(i)
plt.clf()  # 清除数据, 放在这个位置是为了循环的清除上一次的数据
plt.plot(y2)
plt.pause(0.1)  # 暂停0.1秒
plt.savefig(‘./img.jpg’)  # 保存图像到指定的路径

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值