函数plot
是matplotlib.pyplot模块中的一个重要函数,用于在图形中绘制折线图。其基本用法是plot(x, y, [fmt], **kwargs)
,其中x
和y
分别代表X轴和Y轴上的数据点,通常是以列表、数组或一维序列的形式给出。通常用的参数有:
基本参数:
x, y
:数组(array-like)或可迭代对象,分别表示X轴和Y轴的数据点。
线条样式参数:
linestyle
或ls
:线条样式。可选值有-
(实线)、--
(虚线)、-.
(点划线)、:
(点线)、None
(无线条)、' '
(空白线)、''
(默认)、'solid'
、'dashed'
、'dashdot'
、'dotted'
等。linewidth
或lw
:线条宽度,以点为单位。marker
:数据点标记样式。可选值包括'o'
(圆圈)、'.'
(点)、','
(像素点)、's'
(正方形)、'd'
(菱形)、'p'
(五边形)、'*'
(星形)、'h'
(六边形1)、'H'
(六边形2)、'+'
(加号)、'x'
(x形状)、'D'
(菱形双对角线)、'd'
(窄菱形)、'|'
(垂直线)、'_'
(水平线)等。也可以是一个数字,表示自定义的标记。markersize
或ms
:标记大小,以点为单位。markerfacecolor
或mfc
:标记的填充颜色。markeredgecolor
或mec
:标记的边缘颜色。markeredgewidth
或mew
:标记边缘的宽度。
颜色参数:
color
或c
:线条或标记的颜色。可以是字符串(如'red'
、'b'
等)、RGB元组(如(0.1, 0.2, 0.5)
)、十六进制颜色代码(如'#FF5733'
)等。
其他参数:
label
:线条的标签,用于图例。alpha
:透明度,0表示完全透明,1表示完全不透明。visible
:是否可见。solid_capstyle
:线条端点的样式。dash_capstyle
:线条虚线部分的端点样式。solid_joinstyle
:线条实线部分的连接样式。dash_joinstyle
:线条虚线部分的连接样式。
返回值:
- 一个或多个线条对象,取决于调用方式。
注意:以上只是plot
函数的部分常用参数,matplotlib
库提供了更多的参数和选项,可以根据需要进行更详细的定制。为了获取完整的参数列表和更多详细信息,可以查阅matplotlib
的官方文档或使用Python的帮助功能(如 help(plt.plot)
)。
2.1绘制带有中文标题、坐标轴标签和图例的正弦、余弦图像
import matplotlib.pylab as pl
t = pl.arange(0.0, 2.0*pl.pi, 0.01) # 自变量取值范围
s = pl.sin(t) # 计算正弦函数值
z = pl.cos(t) # 计算余弦函数值
pl.plot(t, # x轴坐标
s, # y轴坐标
label='正弦', # 标签
color='red') # 颜色
pl.plot(t, z, label='余弦',
lw=3, ls='--', color='blue') # 3像素宽,虚线
pl.xlabel('x-变量', # 标签文本
fontproperties='simhei', # 字体
fontsize=18) # 字号
pl.ylabel('y-正弦余弦函数值', fontproperties='simhei', fontsize=18)
pl.title('sin-cos函数图像', # 标题文本
fontproperties='simhei', # 字体
fontsize=24) # 字号
pl.legend(prop='SimSun') # 创建、显示图例
pl.grid(alpha=0.7, ls='-.') # 半透明网格线,点画线
pl.show() # 显示绘制的结果图像
2.2在绘制结果中添加水平线和垂直线
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
# 绘制正弦曲线
plt.plot(x, y, 'r-', lw=2, label='sin')
# 在纵坐标-0.5和0.5处绘制两条水平直线,蓝色虚线
plt.axhline(-0.5, color='blue', ls='--', label='axhline')
plt.axhline(0.5, color='blue', ls='--')
# 在横坐标绘制垂直直线,绿色点划线
plt.axvline(np.pi, color='green', ls='-.', label='axvline')
# 设置y轴刻度位置和文本
plt.yticks([-1, -0.5, 0, 0.5, 1],
['-1', 'axhline', '0', 'axhline', '1'])
# 创建、显示图例
plt.legend()
plt.show()
2.3绘制陀螺线,只绘制采样点
import numpy as np
import matplotlib.pyplot as plt
# 4个圆周的角度,单位为弧度
theta = np.arange(0, 8*np.pi, 0.1)
r = np.arange(20, 20+len(theta))
# 在采样点位置处绘制红色圆圈
plt.plot(r*np.cos(theta), r*np.sin(theta), 'ro')
plt.show()
2.4同时绘制多条折线
import numpy as np
import matplotlib.pyplot as plt
x = range(10)
# 10行3列随机数,每个都介于[20,50)区间内
y = np.random.randint(20, 50, (10,3))
# 绘制3条折线图,每列数据对应一条折线图
plt.plot(x, y, label=['a','b','c'])
plt.legend()
plt.show()
2.5同时绘制多条曲线
import numpy as np
import matplotlib.pyplot as plt
x1 = np.arange(0, 2*np.pi, 0.01)
y1 = np.sin(x1)
x2 = np.arange(2*np.pi, 4*np.pi, 0.01)
y2 = np.cos(x2)
# 指定每条曲线的采样点位置和线条属性
lines = plt.plot(x1, y1, 'r-', x2, y2, 'b-.')
# 为两条曲线创建图例
plt.legend(lines, ['sin','cos'])
plt.show()
2.6绘制龟兔赛跑中兔子和乌龟的行走轨迹
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 时间轴
t = np.arange(0, 120, 0.5)
# 兔子的运行轨迹,分段函数
rabbit = np.piecewise(t,
[t<10, t>110], # 兔子跑步的两个时间段
[lambda x:15*x, # 兔子第一段时间的路程
lambda x:20*(x-110)+150, # 第二个时间段的路程
lambda x:150] # 兔子中间睡觉时的路程
)
tortoise = 3 * t # 小乌龟一直在匀速前进
plt.plot(t, tortoise, label='乌龟', lw=3)
plt.plot(t, rabbit, label='兔子')
plt.title('龟兔赛跑', fontproperties='simhei', fontsize=24)
plt.xlabel('时间(秒)', fontproperties='simhei', fontsize=18)
plt.ylabel('与起点的距离(米)', fontproperties='simhei', fontsize=18)
myfont = fm.FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',
size=12) # 设置图例中的中文字体和字号
plt.legend(prop=myfont)
plt.show()
2.7一笔绘制红色五角星
方法一:
import numpy as np
import matplotlib.pyplot as plt
# 外接圆半径
r = 6
angles = np.linspace(0, 2*np.pi, 5,
endpoint=False)
x = r * np.cos(angles)
y = r * np.sin(angles)
plt.plot([x[2],x[0],x[3],x[1],x[4],x[2]],
[y[2],y[0],y[3],y[1],y[4],y[2]],
'r')
# 设置坐标轴纵横比相等
plt.gca().set_aspect('equal')
plt.show()
方法2:
import numpy as np
import matplotlib.pyplot as plt
# 外接圆半径
r = 6
angles = np.linspace(0, 4*np.pi, 6)
x = r * np.sin(angles)
y = r * np.cos(angles)
plt.plot(x, y, 'r')
# 设置坐标轴纵横比相等
plt.gca().set_aspect('equal')
plt.show()
2.8使用三角函数绘制花瓣图案
import numpy as np
import matplotlib.pyplot as plt
r = 6
angles = np.arange(0, np.pi*2, 0.01)
# 把4改成其他数字可以得到不同图案
x = r * np.cos(4*angles) * np.cos(angles)
y = r * np.cos(4*angles) * np.sin(angles)
plt.plot(x, y, 'r')
# 设置坐标轴纵横比相等
plt.gca().set_aspect('equal')
# 显示图形
plt.show()
2.9某质点的初始速度和加速度已知,绘制该质点第5-20s的速度和位移的曲线
import numpy as np
import matplotlib.pyplot as plt
# 初始速度和加速度
v0, a = 3, 1.8
# 时间轴,第5到20秒
t = np.arange(5, 21)
# 速度
v = v0 + a*t
# 位移
x = v0*t + 0.5*a*t*t
# 创建左右两个子图
fig, (ax1, ax2) = plt.subplots(1, 2)
# 设置子图之间的水平间距,wspace单位为子图宽度的比例
plt.subplots_adjust(wspace=0.5)
# 选择左边子图为当前子图
plt.sca(ax1)
# 在当前子图中绘制折线图
plt.plot(t, v, c='red')
plt.title('时间-速度', fontproperties='simhei', fontsize=24)
plt.xlabel('时间(s)', fontproperties='simhei', fontsize=18)
plt.ylabel('速度(m/s)', fontproperties='simhei', fontsize=18)
# 设置坐标轴刻度范围
plt.xlim(5, 21)
plt.ylim(0, 40)
# 选择右边子图为当前子图
plt.sca(ax2)
# 在当前子图中绘制折线图
plt.plot(t, x, c='blue')
plt.title('时间-位移', fontproperties='simhei', fontsize=24)
plt.xlabel('时间(s)', fontproperties='simhei', fontsize=18)
plt.ylabel('位移(m)', fontproperties='simhei', fontsize=18)
plt.xlim(5, 21)
plt.ylim(0, 450)
plt.show()
3.10绘制误差线图
import numpy as np
import matplotlib.pyplot as plt
x = [1, 3, 5, 8, 9]
y = [5, 9, 3, 5, 10]
plt.errorbar(x, y, # 数据点位置
xerr=1, yerr=[1,1,1,0.5,0.5], # 两个方向的误差范围
# 设置线条和端点符号
# fmt='none'时表示不绘制数据点及连线,只绘制误差标记
fmt='-.*',
ecolor='orange', # 误差线颜色
errorevery=2, # 每2个数据点绘制一个误差线
lolims=True, # 只绘制上侧的误差线
xlolims=True, # 只绘制右侧的误差线
)
plt.show()