pyplot

  以下内容来自官方手册以及汉化手册

导入包

from matplotlib import pyplot as plt

创建画布

plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
参数含义
num图像编号或名称,数字为编号 ,字符串为名称
figsize指定figure的宽和高,单位为英寸
dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80
facecolor背景颜色
edgecolor边框颜色
frameon是否显示边框
fig = plt.figure()

创建子图

方法一:

plt.subplot(*args)

  参数一共有三个,每个参数是 1 1 1 9 9 9 的整数。参数之间可以用逗号隔开写,也可合再一起写。三个参数依次为:子图有几行、子图有几列、选择哪个子图作为当前要绘制的图(从左到右从上到下对子图编号)。

from matplotlib import pyplot as plt

ax1 = plt.subplot(2, 2, 1)  # 创建两行两列的子图,并选择 1 号图(左上图)作为当前要绘制的图
ax3 = plt.subplot(223)      # 选择 3 号图(左下图)作为当前要绘制的图
plt.show()

subplot

方法二:

plt.axes(arg=None)

  参数为一个四元素列表,每个元素是 0 0 0 1 1 1 的小数,用来表示百分数。四个元素依次为:子图左下角在整张画布中的横坐标(画布以左下角为原点)、子图左下角在整张画布中的纵坐标、子图的宽度在整张画布中的占比、子图的高度在整张画布中的占比。

from matplotlib import pyplot as plt

ax1 = plt.axes()                        # 创建默认子图,并将其作为当前要绘制的图
ax2 = plt.axes([0.2, 0.6, 0.2, 0.2])    # 按要求创建子图,并将其作为当前要绘制的图
plt.show()

plt.axes

绘制折线图

plt.plot([x], y, [fmt], data=None, **kwargs)
参数含义
x各点的横坐标,缺省时为range(len(y))
y各点的纵坐标
fmt折线的格式,详细见下文
data笔者还未搞懂用法
**kwargs可选标签参数

  fmt总共由三类符号组成,分别为:标记点样式符号(marker)、折线样式符号(line)、颜色符号(color)。格式为 fmt='[marker][line][color]'fmt缺省时程序默认不添加标记点、折线样式为实线、自动为不同的折线匹配不同的颜色。

  • 标记点样式符号
符号含义
.点标记
,像素标记
o圆点标记
v下三角标记
^三角标记
<左三角标记
>右三角标记
1下三星标记
2上三星标记
3左三星标记
4右三星标记
s方形标记
p五边形标记
*五角星标记
h六边形标记
H六角星2标记
+加号标记
x叉号标记
D菱形标记
d长菱形标记
|竖杠标记
_横杠标记器
  • 折线样式符号
符号含义
-实线
--线段式虚线
-.点划线
:点式虚线
  • 颜色符号
符号含义
b蓝色
g绿色
r红色
c青色
m洋红
y黄的
k黑色
w白色
plt.plot(x, y)	# 此为隐式调用最近一个子图进行绘制,但不推荐,因为有些方法不支持隐式调用
ax.plot(x, y)	# 此为显式调用 ax 实例的绘图方法

三维绘图基础及绘制三维折线图

  • 通过标签参数projection='3d'来为图像建立三维坐标系。
  • 建立三维坐标系后,plot将允许输入三个坐标参数,并以这三个参数绘制折线。
from matplotlib import pyplot as plt
import numpy as np

r = np.linspace(0, 10*np.pi, 3600)
x = np.cos(r)
y = np.sin(r)
z = r

ax = plt.axes(projection='3d')              # 建立三维坐标系
# ax = plt.gca(projection='3d')             # 与上句等价,gca 即 get current axes
# ax = plt.subplot(111, projection='3d')    # 与上句等价,通过 subplot 可以在一张画布上同时绘制二维和三维图像
ax.plot(x, y, z)				            # 输入点坐标进行绘制
plt.show()

螺旋上升曲线

绘制三维表面图

from matplotlib import pyplot as plt
import numpy as np

x, y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
z = x*x - y*y

ax = plt.axes(projection='3d')  	# 建立三维坐标系
ax.plot_surface(x, y, z)		    # 输入点坐标进行绘制
plt.show()

三维网格面
  设置颜色映射

from matplotlib import pyplot as plt
import numpy as np

x, y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
z = x*x - y*y

ax = plt.axes(projection='3d')  	        # 建立三维坐标系
ax.plot_surface(x, y, z, cmap='rainbow')    # 输入点坐标进行绘制

plt.show()

在这里插入图片描述
  官方提供的颜色映射表如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加标签与标题

  • 使用标签参数label可以为折线添加标签,而后使用方法legend()来显示标签。
  • 使用方法set_xlabel()set_ylabel()set_zlabel()set()可以分别为 x、y、z 轴添加标签。
  • 使用方法set_title()可以为子图添加标题。
from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(-2, 2, 100)
y1 = x*x
y2 = x*x*x

ax = plt.axes()
ax.set_title('title')                           # 设置标题
ax.set_xlabel('x')                              # 设置 x 轴标签
ax.set_ylabel('y')                              # 设置 y 轴标签
# ax.set(title='title', xlabel='x', ylabel='y')   # 等价于以上三句
ax.plot(x, y1, label='y1')                      # 使用标签参数来指定曲线的标签
ax.plot(x, y2, label='y2')                      # 使用标签参数来指定曲线的标签
ax.legend()                                     # 调用此方法来显示曲线的标签
plt.show()

在这里插入图片描述

设置图层优先级

使用标签参数zorder指定图层优先级,数值越大优先级越高

from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(-2, 2, 100)
y1 = x*x
y2 = x*x*x

ax = plt.axes()
ax.plot(x, y1, linewidth=50, zorder=2)  # 使用 linewidth 调整线宽便于观察
ax.plot(x, y2, linewidth=50, zorder=1)  # 使用 zorder 指定图层优先级,数值越大优先级越高
plt.show()

在这里插入图片描述

坐标轴、显示比例和刻度

统一进行设置

xmin, xmax, ymin, ymax = axis()
xmin, xmax, ymin, ymax = axis([xmin, xmax, ymin, ymax])
xmin, xmax, ymin, ymax = axis(option)
xmin, xmax, ymin, ymax = axis(**kwargs)
  • xmin, xmax, ymin, ymax即坐标轴的范围。
  • option的取值见下表
符号含义
'on'True显示坐标轴
'off'False不显示坐标轴
'equal'各坐标轴等比列(使圆显示成圆形,而不是被拉伸成椭圆形),这种方式是在坐标轴框不变的情况下,通过调整xmin, xmax, ymin, ymax的值实现的。下方有示例图。
'scaled'各坐标轴等比列(使圆显示成圆形,而不是被拉伸成椭圆形),这种方式是通过调整坐标轴框实现的。
'square'等价于'scaled' && xmax-xmin = ymax-ymin
import matplotlib.pyplot as plt
import numpy as np

x = np.array(np.linspace(-2 * np.pi, 2 * np.pi))
y = np.sin(x) + 1
ax1 = plt.subplot(2, 1, 1)
ax1.plot(x, y)
ax1.axis('equal')
ax1.set_title('equal')
ax2 = plt.subplot(2, 1, 2)
ax2.plot(x, y)
ax2.axis('scaled')
ax2.set_title('scaled')
plt.show()

在这里插入图片描述
分别进行设置(请读者对下方内容自行举一反三)

  • 使上侧的坐标轴不显示
ax.spines['top'].set(visible=False)
ax.spines['top'].set_visible(False)
  • 使下侧的坐标轴位于y=0
ax.spines['bottom'].set(position=('data', 0))
ax.spines['bottom'].set_position('data', 0)
  • 使左侧的坐标轴位于x=0
ax.spines['left'].set(position=('data', 0))
ax.spines['left'].set_position('data', 0)
  • 使右侧的坐标轴为红色
ax.spines['right'].set(color='red')
ax.spines['right'].set_color('r')

设置刻度值

from matplotlib import pyplot as plt
import numpy as np

x = y = np.linspace(0, 2.5, 100)
ax1 = plt.subplot(131)
ax2 = plt.subplot(132)
ax3 = plt.subplot(133)
ax1.plot(x, y)
ax2.plot(x, y)
ax3.plot(x, y)

ax2.set_xticks((0, 2))
ax2.set_yticks((0, 2))
# ax2.set(xticks=(0, 2), yticks=(0, 2))   # 本句等价于以上两句

ax3.set_xticks(())
ax3.set_yticks(())
# ax3.set(xticks=(), yticks=())           # 本句等价于以上两句

plt.show()

在这里插入图片描述

绘制矩形框

matplotlib.patches.Rectangle(xy, width, height, *, angle=0.0, rotation_point='xy', **kwargs)
:                +------------------+
:                |                  |
:              height               |
:                |                  |
:               (xy)---- width -----+
参数含义
xy:(float, float)锚点坐标
width:float水平边长
hight:float垂直边长
angle:float=0.0逆时针旋转角度
标签参数含义
fill=True内部是否填充
from matplotlib import pyplot as plt

rect = plt.Rectangle((0.1, 0.2), 0.2, 0.1, fill=False)
plt.gca().add_patch(rect)
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值