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显示图表


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

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 可以使用Python读取txt文件中的数据,并使用Matplotlib绘制折线图。具体步骤如下: 1. 使用python内置函数open()打开txt文件,并读取数据; 2. 将读取的数据存储到列表或数组中; 3. 使用Matplotlib库中的plot()函数生成折线图; 4. 使用show()函数显示折线图。 示例代码如下: ```python import matplotlib.pyplot as plt # 读取txt文件 with open('data.txt', 'r') as f: data = f.readlines() # 将读取的数据存储到列表中 x = [] y = [] for line in data: line = line.strip().split() # 去除空白符并分割数据 x.append(float(line[0])) y.append(float(line[1])) # 绘制折线图 plt.plot(x, y) # 显示折线图 plt.show() ``` 备注:需要根据实际情况修改读取txt文件的方式和数据格式。 ### 回答2: 在Python编程中,读取txt文件并将数据绘制折线图是很常见的任务。以下是步骤: 1. 从txt文件读取数据:使用Python的文件读取方法,“open()”和“read()”,打开并读取数据文件。例如,使用以下代码读取“data.txt”文件中的数据: ``` with open('data.txt') as f: lines = f.readlines() #按行读取数据,将每行数据存储在一个列表中 ``` 2. 将数据转换为Python列表:使用Python内置的“split()”函数将每行数据拆分成单个数据。然后使用“for”循环将拆分后的数据存储在Python列表中。以下是代码: ``` x = [] y = [] for line in lines: line = line.strip().split() x.append(float(line[0])) y.append(float(line[1])) #将x和y值存储在两个不同的列表中,可以在绘图时使用 ``` 3. 绘制折线图:在Python中,使用matplotlib库可以绘制各种图表。导入pyplot模块,使用plot函数绘制折线图。以下是代码: ``` import matplotlib.pyplot as plt plt.plot(x, y) plt.title("data") plt.xlabel("x-axis") plt.ylabel("y-axis") plt.show() ``` 以上是将txt文件中读取数据并绘制折线图的基本步骤。但在实际操作过程中可能有其他相关需求,例如数据的处理、添加标签和刻度线等操作,可以根据具体需求进行更改和优化。 ### 回答3: Python是一种强大的编程语言,它能够读取文本文件、绘制图表等多种任务。在Python中使用matplotlib库可以轻松地绘制折线图,并且可以用pandas库读取并处理文本文件。 1. 在Python中安装matplotlib和pandas库: 在命令行输入以下代码: ``` pip install matplotlib pip install pandas ``` 通过这些代码,可以快速安装matplotlib和pandas库,这两个库都是Python数据可视化的重要工具。 2. 用pandas库加载txt文件: ```python import pandas as pd df = pd.read_csv('文件路径', delimiter='分隔符') ``` 这个代码块使用pandas库中的read_csv函数来读取txt文件。文件路径是已经存在的txt文件的路径,分隔符是文件中分隔各列数据的标识符。读取完txt文件后,可以通过代码 df.head()查看读取的前几行数据,确保数据加载正确。 3. 绘制折线图: ```python import matplotlib.pyplot as plt plt.plot(df['X轴数据'], df['Y轴数据'], label='数据标签') plt.xlabel('X轴标签') plt.ylabel('Y轴标签') plt.title('图表标题') plt.legend() plt.show() ``` 此代码块使用matplotlib库中的plot函数来绘制折线图。其中,X轴数据和Y轴数据是通过df对象获取的。这里的数据标签用于区分多条折线,X轴标签和Y轴标签用于说明坐标轴的含义。图表标题用于说明图表的主题,图例用于标记每条线的含义。最后一行代码块用于显示绘制的图表。 通过这些简单的代码块,就可以完成读取txt文件和绘制折线图的任务。这种处理数据并可视化的技能对于数据分析和数据科学来说是极为重要的,因为它能够帮助我们更好地理解和展示数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Py小趴

整理不易,感谢金主!

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

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

打赏作者

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

抵扣说明:

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

余额充值