当前位置: 首页 > news >正文

Matplotlib基本操作

在这里插入图片描述

1.什么是Matplotlib

  matplotlib 是一个广泛使用的 Python 图形库,用于生成静态、动态和交互式的可视化图表。它最初由 John D. Hunter 创建,并首次发布于2003年。matplotlib 提供了一个面向对象的 API,允许用户创建多种类型的图表,包括线图、散点图、直方图、功率谱、条形图、误差图、饼图等。

  matplotlib 的核心特性包括:

  灵活性:用户可以控制线条样式、字体属性、布局调整等细节。
  输出格式:支持多种图形输出格式,如 PNG、PDF、SVG、EPS 和 PGF。 3 交互性:可以嵌入到 GUI 应用程序中,如 Tkinter、wxPython、Qt 等。
  兼容性:可以在多种操作系统上运行,包括 Windows、Mac OS 和 Linux。
  扩展性:可以通过各种插件和第三方库进行扩展,以实现更高级的功能。

  matplotlib 的主要组成部分包括:
  pyplot:这是一个类似于 MATLAB 的模块,提供了许多用于快速生成图表的函数。
  Artist API:这是一种更强大的面向对象接口,允许用户精确控制图表的每个细节。

Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python. Matplotlib makes easy things easy and hard things possible. --官方描述
https://matplotlib.org/stable/ --官网

2.Matplotlib安装

pip install matplotlib

3.作图

3.1.曲线图

import matplotlib.pyplot as plt
import numpy as np# 创建数据
x = np.linspace(0, 10, 100)  # 生成从0到10的100个点
y = np.sin(x)  # 计算每个点的正弦值# 绘制曲线图
plt.plot(x, y, label='sin(x)')# 添加标题和轴标签
plt.title('Sine Wave')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')# 添加图例
plt.legend()# 显示网格
plt.grid(True)# 显示图表
plt.show()

在这里插入图片描述

3.2.折线图

import matplotlib.pyplot as plt# 数据
months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
sales = [1200, 1500, 1600, 1400, 1700, 1800, 2000, 2200, 2100, 1900, 2300, 2400]# 创建折线图
plt.figure(figsize=(10, 5))
plt.plot(months, sales, marker='o', linestyle='-', color='b')# 设置图表标题和坐标轴标签
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales')# 设置 x 轴刻度标签
plt.xticks(months)# 显示网格
plt.grid(True)# 显示图表
plt.show()

在这里插入图片描述

3.3.柱状图

import matplotlib.pyplot as plt# 数据
months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
sales = [1200, 1500, 1600, 1400, 1700, 1800, 2000, 2200, 2100, 1900, 2300, 2400]# 创建柱状图
plt.figure(figsize=(10, 5))
plt.bar(months, sales, color='blue')# 设置图表标题和坐标轴标签
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales')# 设置 x 轴刻度标签
plt.xticks(months)# 显示网格
plt.grid(axis='y')# 显示图表
plt.show()

在这里插入图片描述

3.4.热力图

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt# 设置随机种子以确保每次运行的结果相同
np.random.seed(0)# 创建一个5x5的随机矩阵
data = np.random.rand(5, 5)# 使用seaborn库绘制热力图
plt.figure(figsize=(8, 6))
sns.heatmap(data, annot=True, fmt=".2f", cmap='coolwarm', cbar=True)
plt.title('Heatmap of Random Data')
plt.show()

在这里插入图片描述

3.5.箱线图

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 设置随机种子以确保每次运行的结果相同
np.random.seed(0)# 创建两组随机数据
data_group1 = np.random.normal(loc=0.0, scale=1.0, size=100)
data_group2 = np.random.normal(loc=1.0, scale=1.0, size=100)# 将数据合并到一个字典中,方便绘图
data_dict = {'Group 1': data_group1, 'Group 2': data_group2}# 使用seaborn库绘制箱线图
plt.figure(figsize=(8, 6))
sns.boxplot(data=data_dict)
plt.title('Box Plot of Two Data Groups')
plt.ylabel('Value')
plt.xlabel('Groups')
plt.show()

在这里插入图片描述

3.6.3d图表

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# 创建一个3D图形
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')# 生成数据
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
u, v = np.meshgrid(u, v)
x = 10 * np.cos(u) * np.sin(v)
y = 10 * np.sin(u) * np.sin(v)
z = 10 * np.cos(v)# 绘制3D表面图
surf = ax.plot_surface(x, y, z, cmap='viridis')# 添加颜色条
fig.colorbar(surf, shrink=0.5, aspect=5)# 设置坐标轴标签
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')# 显示图形
plt.show()

在这里插入图片描述

3.7.动态图

import itertoolsimport matplotlib.pyplot as plt
import numpy as npimport matplotlib.animation as animationdef data_gen():for cnt in itertools.count():t = cnt / 10yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)def init():ax.set_ylim(-1.1, 1.1)ax.set_xlim(0, 1)del xdata[:]del ydata[:]line.set_data(xdata, ydata)return line,fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.grid()
xdata, ydata = [], []def run(data):# update the datat, y = dataxdata.append(t)ydata.append(y)xmin, xmax = ax.get_xlim()if t >= xmax:ax.set_xlim(xmin, 2*xmax)ax.figure.canvas.draw()line.set_data(xdata, ydata)return line,# Only save last 100 frames, but run forever
ani = animation.FuncAnimation(fig, run, data_gen, interval=100, init_func=init,save_count=100)
plt.show()

在这里插入图片描述

4.保存图片

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-axis')
ax.set_ylabel('Y-axis')# 保存图像
plt.savefig('sine_wave_plot.png')# 显示图形
plt.show()

在这里插入图片描述

5.结语

  matplotlib是一个可视化python库,可以方便快捷的做出相对应的数据图表,不过可能风格偏科研,如果追求图表的炫酷美观,可以尝试Echarts等web图表。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • kubernetes的pod基础
  • MySQL 数据库管理
  • 微信小程序——弹出隐私指引教程(含代码)
  • C:每日一练:单身狗(2.0版本)
  • 【JAVA CORE_API】Day18 网络编程、线程、在线聊天室v1.0
  • 单片机存储芯片 W25QXX、AT24C02
  • Python数据库的使用
  • F1 F4 Fn lock 指示灯不亮 联想笔记本 thinkpad
  • Android T(13) The app is granted permissions by default
  • 记录git push时的报错以及解决方案
  • spring中常用注解(一)
  • 成为Python砖家(1): 在本地查询Python HTML文档
  • 【前端】onclick使用HTML页面外的的JS函数时报错:onclick _function_ is not defined.
  • 【数据结构】PTA 求链表的倒数第m个元素 C语言
  • C++的拷贝构造,拷贝复制和析构
  • [nginx文档翻译系列] 控制nginx
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android 架构优化~MVP 架构改造
  • CSS盒模型深入
  • ECMAScript入门(七)--Module语法
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Python_网络编程
  • Spark RDD学习: aggregate函数
  • Spring Cloud中负载均衡器概览
  • vue 个人积累(使用工具,组件)
  • vue数据传递--我有特殊的实现技巧
  • 浮动相关
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 说说动画卡顿的解决方案
  • 学习笔记TF060:图像语音结合,看图说话
  • 一个完整Java Web项目背后的密码
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 我们雇佣了一只大猴子...
  • ​520就是要宠粉,你的心头书我买单
  • #QT(QCharts绘制曲线)
  • #Z2294. 打印树的直径
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (13)DroneCAN 适配器节点(一)
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (9)STL算法之逆转旋转
  • (C++哈希表01)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (二)windows配置JDK环境
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (算法)Travel Information Center
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • **python多态
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .FileZilla的使用和主动模式被动模式介绍
  • .gitignore文件设置了忽略但不生效
  • .net 7和core版 SignalR
  • .NET CF命令行调试器MDbg入门(三) 进程控制