Python Matplotlib个性可视化学习-3绘制折线图

用途:

Matplotlib绘制折线图常用于展示数据随时间或其他连续变量的变化趋势。

3.1绘制默认折线图

3.1.1导入相关库

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

3.1.2数据准备

#准备相关数据
N = 100  #定义一个变量,值为50
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为50的数组,范围在1~10之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:基与x生成y

3.1.3绘制折线图

#绘制折线图
plt.plot(x, y)

3.1.4设置图表标识

#设置图表标题和坐标轴标签
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号
plt.title('绘制默认折线图')
plt.xlabel('X轴')
plt.ylabel('Y轴')

3.1.5显示图表

#显示图表
plt.show()

3.2设置折线图线型、分面

3.2.1导入相关库及数据准备

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
N = 100  #定义一个变量,值为100
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为100的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:

3.2.2绘制折线图(修改折线图线型、分面展示)

#绘制折线图
rows = 2 # 定义网格的行数,表示有2行
columns = 2  # 定义网格的列数,表示会有2列
grid = plt.GridSpec(rows, columns, wspace=.3, hspace=.3) # 创建一个网格布局
# GridSpec是matplotlib库中的一个类,用于创建网格布局
# wspace和hspace参数分别定义了网格列和行之间的间距,这里设置为0.3,表示列和行之间各有30%的间距
linestyles = ['-', '--', '-.', ':'] #线条样式分别为实线、破折线、点划线、虚线
plt.figure(dpi=120) #分辨率为120

for i in range(len(linestyles)): # 循环遍历linestyles列表中的所有线型
    plt.subplot(grid[i])  # 在grid指定的子图位置创建一个新的子图
    plt.plot(
        x,
        y,
        linestyle=linestyles[i], #linestyle设置线型
        label=r'y = sin^2(x) + cos(x)')
    plt.axis('equal') # 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
    plt.legend() # 显示图例,图例显示了不同线型对应的标签
    # 使用plt.annotate()函数在图表上添加注释
    plt.annotate("linestyle '" + str(linestyles[i]) + "'",# 注释的内容,显示当前的线型
                 xy=(0.5, -2.5),# 注释的位置坐标,xy参数表示注释文本左下角的位置
                 va='center', # 垂直对齐方式,'center'表示文本在指定位置的垂直中心对齐
                 ha='left') # 水平对齐方式,'left'表示文本在指定位置的左对齐
#显示图表
plt.show()

3.2.3显示图表

3.3设置折线图宽度

3.3.1导入相关库及数据准备

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
N = 100  #定义一个变量,值为100
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为100的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:基与x生成y

3.3.2设置折线图宽度

修改折线图宽度linewidth = [2, 3, 4, 5]

#绘制折线图
rows = 2 # 定义网格的行数,表示有2行
columns = 2  # 定义网格的列数,表示会有2列
grid = plt.GridSpec(rows, columns, wspace=.3, hspace=.3) # 创建一个网格布局
# GridSpec是matplotlib库中的一个类,用于创建网格布局
# wspace和hspace参数分别定义了网格列和行之间的间距,这里设置为0.3,表示列和行之间各有30%的间距

#修改折线图宽度
linewidth = [2, 3, 4, 5]
linestyles = ['-', '--', '-.', ':'] #线条样式分别为实线、破折线、点划线、虚线
plt.figure(dpi=160) #分辨率为160

for i in range(len(linestyles)): # 循环遍历linestyles列表中的所有线型
    plt.subplot(grid[i])  # 在grid指定的子图位置创建一个新的子图
    plt.plot(
        x,
        y,
        linestyle='-.', #linestyle设置线型
        lw=linewidth[i],#设置折线图宽度
        label=r'y = sin^2(x) + cos(x)')
    plt.axis('equal') # 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
    plt.legend() # 显示图例,图例显示了不同线型对应的标签
    # 使用plt.annotate()函数在图表上添加注释
    plt.annotate("linestyle '" + str(linestyles[i]) + "'",# 注释的内容,显示当前的线型
                 xy=(0.5, -2.5),# 注释的位置坐标,xy参数表示注释文本左下角的位置
                 va='center', # 垂直对齐方式,'center'表示文本在指定位置的垂直中心对齐
                 ha='left') # 水平对齐方式,'left'表示文本在指定位置的左对齐

#显示图表
plt.show()

3.3.3显示图表 

3.4设置折线图标记

3.4.1导入相关库及数据准备

import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块
N = 100  #定义一个变量,值为100
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为100的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:基与x生成y

3.4.2折线图添加标记

折线图添加marker

#绘制折线图
plt.figure(dpi=160) #分辨率为160
plt.plot(
      x,
      y,
     'o',#标记用圆圈表示
     ls='-.',#折线图的样式
     lw=2,#设置折线图宽度
     ms=7, #marker大小
     markevery=12, #每隔12个点添加marker
     label=r'y = sin^2(x) + cos(x)')
plt.axis('equal')
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()# 添加图例,与上面的label相对应
plt.annotate("markevery: 5", xy=(0.5, -2.5), va='center', ha='left')
# "markevery: 5", 注释的内容,表示标记每个第5个点
# xy=(0.5, -2.5), 注释的位置坐标,xy参数表示注释文本左下角的位置
# va='center',垂直对齐方式,'center'表示文本在指定位置的垂直中心对齐
# ha = 'left'  # 水平对齐方式,'left'表示文本在指定位置的左对齐

#显示图表
plt.show()

3.4.3显示图表

3.5折线图多标记、标记间距设置

3.5.1代码

不同折线图添加不同marker、按照不同的间距绘制

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
N = 100  #定义一个变量,值为100
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为100的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:基与x生成y

#绘制折线图
rows = 2 # 定义网格的行数,表示有2行
columns = 2  # 定义网格的列数,表示会有2列
grid = plt.GridSpec(rows, columns, wspace=.3, hspace=.3) # 创建一个网格布局
# GridSpec是matplotlib库中的一个类,用于创建网格布局
# wspace和hspace参数分别定义了网格列和行之间的间距,这里设置为0.3,表示列和行之间各有30%的间距
mark = [5, 8, 13, 15] #标记的间隔
color = ['#00429d', '#627c94', '#f4777f', '#93003a'] #标记的颜色
plt.figure(dpi=150) #分辨率为160
linestyles = ['-', '--', '-.', ':'] #线条样式分别为实线、破折线、点划线、虚线
for i in range(len(linestyles)): # 循环遍历linestyles列表中的所有线型
    plt.subplot(grid[i])  # 在grid指定的子图位置创建一个新的子图
    plt.plot(
        x,
        y,
        'o',  # 标记用圆圈表示
        ls='-.',  # 折线图的样式
        lw=2,  # 设置折线图宽度
        ms=7,  # marker大小
        markevery=mark[i],  # 添加间隔
        color=color[i],#添加颜色
        label=r'y = sin^2(x) + cos(x)')

    plt.axis('equal') # 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
    # 使用plt.annotate()函数在图表上添加注释
    plt.annotate("markevery:" + str(mark[i]) ,# 注释的内容,显示当前的线型
            xy=(0.5, -2.5),# 注释的位置坐标,xy参数表示注释文本左下角的位置
            va='center', # 垂直对齐方式,'center'表示文本在指定位置的垂直中心对齐
            ha='left') # 水平对齐方式,'left'表示文本在指定位置的左对齐

    plt.legend() # 显示图例,图例显示了不同线型对应的标签
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
    plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号
    plt.xlabel('$x$ (x轴)')

#显示图表
plt.show()

 3.5.2显示图表

3.6设置折线图误差

3.6.1折线图添加误差线代码

使用errorbar方法添加误差线

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
N = 50  #定义一个变量,值为50
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:基与x生成y

np.random.seed(100) # 设置随机数种子为100
noise_x = np.random.random(N) * .2 + .1# 生成N个随机数,范围在0到1之间,然后乘以0.2,再加上0.1。
noise_y = np.random.random(N) * .7 + .4

plt.figure(dpi=120)#图片分辨率为120

#使用errorbar方法添加误差线
plt.errorbar(
    x,
    y,
    yerr=noise_y, #y轴方向添加误差线
    xerr=noise_x, #x轴方向添加误差线
    label=r'y = sin^2(x) + cos(x)')
plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号
plt.xlabel('x轴')

#显示图表
plt.show()

3.6.2显示图表

3.7折线图仅保留误差线

 3.7.1代码

fmt='o'【注意此代码】

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
N = 50  #定义一个变量,值为50
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:基与x生成y

np.random.seed(100) # 设置随机数种子为100
noise_x = np.random.random(N) * .2 + .1# 生成N个随机数,范围在0到1之间,然后乘以0.2,再加上0.1。
noise_y = np.random.random(N) * .7 + .4

plt.figure(dpi=150)#图片分辨率为150

#使用errorbar方法添加误差线
plt.errorbar(
    x,
    y,
    yerr=noise_y, #y轴方向添加误差线
    xerr=noise_x, #x轴方向添加误差线
    label=r'y = sin^2(x) + cos(x)',
    color='r', #marker颜色
    fmt='o', #marker形状,表示只用圆形标记数据点而不用线条连接它们
    ecolor='blue') #误差线颜色

plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号
plt.xlabel('x轴')

#显示图表
plt.show()

3.7.2显示图表 

3.8设置折线图填充

3.8.1折线图填充代码

使用fill_between方法,该函数用于填充两条水平曲线之间的区域。

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
N = 50  #定义一个变量,值为50
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:基与x生成y

np.random.seed(100) # 设置随机数种子为100
noise = np.random.random(N) * .7 + .4

plt.figure(dpi=150)#图片分辨率为150
plt.plot(x, y, ls='-', label=r'y = sin^2(x) + cos(x)') #绘制折线图

#使用fill_between方法
plt.fill_between(
      x,
      y + noise, #y轴上方区域
      y - noise, #y轴下方区域
      alpha=.3)# 填充区域的透明度,0表示完全透明,1表示完全不透明

plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变
plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号
plt.xlabel('x轴')

#显示图表
plt.show()

3.8.2显示图表

3.9在折线图中添加垂直线 

 3.9.1在折线中添加垂直线代码

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
N = 50  #定义一个变量,值为50
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:基与x生成y

np.random.seed(100) # 设置随机数种子为100
noise = np.random.random(N) * .7 + .4

plt.figure(dpi=150)#图片分辨率为150
plt.plot(x, y, ls='-', label=r'y = sin^2(x) + cos(x)') #绘制折线图

#使用fill_between方法
plt.fill_between(x,y + noise, y - noise, color='darkgreen',alpha=.3)
plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变

#hlines绘制水品线
plt.hlines(
    1, #y轴位置
       xmin=0, #x轴起始位置
       xmax=15, #x轴终止位置
       ls='--', #线型
       color='red', #线颜色
       label='水平线') #图例

#hlines绘制垂直线
plt.vlines(5, #x轴位置
           ymin=-6, #y轴起始位置
           ymax=6,#y轴终止位置
           ls='--', #线型
           color='blue',  #线颜色
           label='绘制垂直线')#图例

plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号
plt.xlabel('x轴')

#显示图表
plt.show()

3.9.2显示图表

3.10在折线图中添加垂直面

3.10.1添加y轴方向垂直平面代码

#导入相关库
import numpy as np   #导入numpy库
import matplotlib.pyplot as plt    #导入matplotlib的绘图模块

#准备相关数据
N = 50  #定义一个变量,值为50
x = np.linspace(0., 15., N)   #x变量数据:使用numpy生成长度为50的数组,范围在1~15之间
y = np.sin(x)**2 + np.cos(x)   #y变量数据:基与x生成y

np.random.seed(100) # 设置随机数种子为100
noise = np.random.random(N) * .7 + .4

plt.figure(dpi=150)#图片分辨率为150
plt.plot(x, y, ls='-', label=r'y = sin^2(x) + cos(x)') #绘制折线图
#使用fill_between方法
plt.fill_between(x,y + noise, y - noise, color='darkgreen',alpha=.3)
plt.axis('equal')# 设置坐标轴的比例相等,这样在绘制图形时可以保持形状不变

plt.fill_between((2, 4), -3.2, 3.2, facecolor='blue', alpha=0.3)#填充区域在此修改
#表示填充区域的 x 坐标范围,即从2到4
#表示填充区域的 y 坐标上下限,即填充的区域是在 y = -3.2 到 y = 3.2 的范围内
plt.xlim(0, 10)#表示 x 轴的显示范围从0到10
plt.ylim(-3, 3)#表示 y 轴的显示范围从-3到3



plt.legend()# 显示图例,图例显示了不同线型对应的标签
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体
plt.rcParams['axes.unicode_minus'] = False  # 用于正常显示负号
plt.xlabel('x轴')

#显示图表
plt.show()

3.10.2显示图表


 以上是绘制折线图的代码分享,在学习过程中,大家有什么疑惑可以相互交流哦。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pythoner研习社

整理不易,感谢金主!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值