开发者

Python可视化与交互matplotlib库的详细介绍

开发者 https://www.devze.com 2025-09-03 09:22 出处:网络 作者: hAnGWS
目录matplotlib库介绍绘图基本逻辑绘制方式散点图柱状图直方图多子图绘制二维数据绘制其他用法总结matplotlib库介绍
目录
  • matplotlib库介绍
  • 绘图基本逻辑
  • 绘制方式
    • 散点图
    • 柱状图
    • 直方图
  • 多子图绘制
    • 二维数据绘制
      • 其他用法
        • 总结

          matplotlib库介绍

          matplotlib库是一个非常实用的库,与numpypandas库并称为三大顶级python库。它可以将matlab中的相当一部分绘图功能迁移到python中,同时,也可以满足一定的交互需求,非常适合可视化的需求。

          绘图基本逻辑

          先上示例:

          import matplotlib.pyplot as plt
          import numpy as np
          
          # 画图基本逻辑
          ## 准备数据
          x = np.linspace(0, 10, 100)
          y = np.sin(x)
          
          ## 创建画布和容器
          fig, ax = plt.subplots()
          
          ## 绘制图形
          ax.plot(x, y)
          
          # 自定义图形
          ax.set_title('Sine Wave')   # 设置标题
          ax.set_xlabel('x')          # 设置横坐标标签
          ax.set_ylabel('sin(x)')     # 设置纵坐标标签
          ax.grid(True)               # 显示网格
          
          # 显示图形
          plt.show()
          

          该程序运行出来的图如下:

          Python可视化与交互matplotlib库的详细介绍

          该实例中,整个绘图流程分为了准备数据、创建画布、绘制图形、图形编辑这几个部分。

          首先第一部分,准备数据。本示例中利用numpy库创建了一组正弦函数数据,在实际应用中,更多的是从文件中读取数据。

          第二部分创建画布,在matplotlib库中,通常把绘制图形分为局部整体两个部分,这是为了满足多图绘制的需求。因为在绘制数据可视化图形中,通常需要绘制譬如多行多列的图形,因此该库中将绘图整体称之为Figure,将每一个绘制的图形称之为编程Axes,不过需要指明,该单词虽然意为“坐标轴”,但是其功能更贴切于一个容器,表述每一个子图的绘制。在本示例中,由于只进行了单图的绘制,因此,后续绘制只使用了Axes的实例对象ax

          第三部分绘制图形,根据提供的数据,选择不同的绘制方式和表现方式,这也是绘制的核心区域。

          最后一部分,图形编辑,可以完善图形的相关信息,比如图名、坐标轴名、网格、图例等。

          一般处于调试需求,会将最后的图形输出并显示,即plt.show

          绘制方式

          上图中我们展示了折线图的画法,在matplotlib库中,针对不同数据和表现形式有不同的绘制方式。这里做简单列举。

          散点图

          x = np.random.rand(100)
          y = np.random.rand(100)
          
          fig, ax = plt.subplots()
          
          ax.scatter(x, y)
          
          ax.set_title("Scatter")
          ax.set_xlabel("X")
          ax.set_ylabel("Y")
          ax.grid(True)
          

          展示效果为:

          Python可视化与交互matplotlib库的详细介绍

          柱状图

          # 柱状图
          categories = ['A', 'B', 'C', 'D', 'E', 'F']
          values = [79, 68, 89, 94, 54, 77]
          
          fig, ax = plt.subplots()
          
          ax.bar(categories, values)
          
          ax.set_title("Bar")
          ax.set_xlabel("Student")
          ax.set_ylabel("Scores")
          
          plt.show()
          

          展示效果为:

          Python可视化与交互matplotlib库的详细介绍

          直方图

          # 直方图
          data = np.random.randn(1000)
          
          fig, ax = plt.subplots()
          
          ax.hist(data, bins = 100, color = "green", alpha = 0.75)
          
          ax.set_title("Histogram")
          ax.set_xlabel("Value")
          ax.set_ylabel("Frequency")
          ax.grid(True)
          
          plt.show()
          

          展示效果为:

          Python可视化与交互matplotlib库的详细介绍

          多子图绘制

          上面提及,matplotlibhttp://www.devze.com库允许多子图绘制,比如对于一种数据我们可能想要多种表达方式,而这种表达方式不适合放在单图中表示的时候,就需要这种表达。我们可以在subplot()函数中添加参数,以实现这种绘制方式。

          # 多子图绘制
          x = np.linspace(0, 10, 100)
          y1 = np.fQKQjesin(x)
          y2 = np.cos(x)
          
          fig, axs = plt.subplots(1, 2, figsize=(10, 8))
          
          axs[0].plot(x, y1)
          axs[0].set_title('sin(x)')
          axs[0].set_xlabel('x')
          axs[0].set_ylabel('sin(x)')
          axs[0].grid(True)
          
          axs[1].plot(x, y2)
          axs[1].set_title('cos(x)')
          axs[1].set_xlabel('x')
          axs[1].set_ylabel('cos(x)')
          axs[1].grid(True)
          
          fig.suptitle('sin(x) VS. cos(x)', fontsize = 18)
          
          plt.show()
          

          展示效果为:

          Python可视化与交互matplotlib库的详细介绍

          本示例中,将正弦函数和余弦函数绘制在同一区域中,可以更好地满足特定情况下的绘制需求。同时,该示例也更好的体现出了F编程客栈igureAxes的区别。

          二维数据绘制

          在一些可视化需求中,往往不是简单的数字数据绘制,而是会出现一些二维数据如.grd格式的文件可视化。这里利用GMT工具绘制的.grd文件作为原始数据,通过matplotlib库进行可视化需求,数据格式为netCDF-4。

          原图如下:

          Python可视化与交互matplotlib库的详细介绍

          代码如下:

          import matplotlib.pyplot as plt
          from netCDF4 import Dataset
          
          ## 准备数据
          file_path = "C:/Users/hang/Downloads/test.grd"
          nc = Dataset(file_path, 'r')
          lon = nc.variables['lon'][:]
          lat = nc.variables['lat'][:]
          z = nc.variables['z'][:]
          nc.close()
          
          ## 创建画布和容器
          fig, ax = plt.subplots(figsize = (10, 8))
          
          ## 图形绘制
          ## pcolormesh是一个用于绘制二维网格数据的函数,能够将数值映射为颜色
          mesh = ax.pcolormesh(lon, lat, z, cmap = 'jet', shading = 'auto')
          
          ## 图形编辑
          cbar = fig.colorbar(mesh, ax = ax)
          cbar.set_label('Height', fontsize = 14)
          ax.set_xlabel('Longitude')
          ax.set_ylabel('Latitude')
          ax.grid(True)
          
          plt.show()
          

          同样是几行数据,按照相同的逻辑,即可进行该文件的可视化:

          Python可视化与交互matplotlib库的详细介绍

          其他用法

          matplotlib库提供了相当丰富的可视化工具,同时,也提供了一些有关python互可视化的工具,这部分将于后续单独介绍。

          总结

          到此这篇关于Python可视化与交互matplotlib库的文章就介绍到这了,更多相关Python matplotlib库内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

          0

          精彩评论

          暂无评论...
          验证码 换一张
          取 消

          关注公众号