Matplotlib基本操作

news2024/11/27 0:48:55

在这里插入图片描述

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 itertools

import matplotlib.pyplot as plt
import numpy as np

import matplotlib.animation as animation


def data_gen():
    for cnt in itertools.count():
        t = cnt / 10
        yield 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 data
    t, y = data
    xdata.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图表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[JavaScript版本五子棋小游戏]

目录 全部运行代码:五子棋游戏的基本步骤:代码剖析:1. 初始化游戏界面2. 管理游戏状态3. 玩家交互4. 电脑AI5. 胜负判定6. 游戏控制 本文通过实现一个基本的五子棋游戏,展示了如何使用HTML、CSS和JavaScript来构建一个简单的交互式…

ATGM332D-F8N低功耗、小尺寸单北斗多频定位导航模块规格书

ATGM332D-F8N主要 特征 &#xff1a; 1、多频点单北斗接收机 支持B1C独立定位通道数目&#xff1a;176通道支持北斗二号、北斗三号支持B1I、B1C、B2I、B3I、B2a、B2b 定位精度 单点定位精度&#xff1a;<1.0mCEP50推算定位误差&#xff1a;<3&#xff05;&#xff08;定位…

伦敦银行情的软件有什么选择?

普通投资者做伦敦银交易&#xff0c;多以技术分析为主、基本分析为辅的方法作为自己的交易策略&#xff0c;既然提到技术分析&#xff0c;那么伦敦银行情的软件就至关重要&#xff0c;因为我们需要通过这些软件才能看到行情并进行分析&#xff0c;那看伦敦银行情的软件有什么好…

2024.8.21

130124202408211006 DATE #:20240821 ITEM #:DOC WEEK #:WEDNESDAY DAIL #:捌月拾捌 TAGS < BGM "琴师--要不要买菜" > < theme oi-contest > < [NULL] > < [空] > < [空] > 此情可待成追忆&#xff0c;只是当时已惘然 -- 《锦瑟》…

「OC」视图控制器的懒加载策略

「OC」视图控制器的懒加载策略 文章目录 「OC」视图控制器的懒加载策略懒加载懒加载的优点常见的懒加载实现方法使用懒加载的注意事项 控制器的懒加载参考资料 懒加载 懒加载&#xff08;Lazy Loading&#xff09;是一种设计模式&#xff0c;其核心思想是在需要时才进行对象的…

Verilog刷题笔记55

题目&#xff1a; Exams/ece241 2014 q5a You are to design a one-input one-output serial 2’s complementer Moore state machine. The input (x) is a series of bits (one per clock cycle) beginning with the least-significant bit of the number, and the output (Z)…

更快更强,SLS 推出高性能 SPL 日志查询模式

作者&#xff1a;无哲 引言 随着数字化进程的持续深化&#xff0c;可观测性一直是近年来非常火热的话题&#xff0c;在可观测的三大支柱 Log/Trace/Metric 中&#xff0c;日志&#xff08;Log&#xff09;数据一般是最为常见的&#xff0c;企业迈向可观测性的第一步&#xff…

《黑神话:悟空》总销量已破 450 万份,总销售额超过15亿元,对于单机游戏来说,这一成绩意味着什么?

《黑神话&#xff1a;悟空》总销量突破450万份&#xff0c;总销售额超过15亿元&#xff0c;意味着几个关键点&#xff1a; 市场认可度高&#xff1a;这样的销量和销售额表明游戏受到了广泛的玩家欢迎&#xff0c;市场认可度极高。对于单机游戏而言&#xff0c;这代表了其在游戏…

深入浅出:你需要了解的用户数据报协议(UDP)

文章目录 **UDP概述****1. 无连接性****2. 尽最大努力交付****3. 面向报文****4. 多种交互通信支持****5. 较少的首部开销** **UDP报文的首部格式****详细解释每个字段** **UDP的多路分用模型****多路分用的实际应用** **检验和的计算方法****伪首部的详细内容****检验和计算步…

算法4:前缀和(下)

文章目录 和为K的子数组和可被k整除的子数组连续数组矩阵区域和 一定要看懂算法原理之后写代码&#xff0c;博主大概率因注意力不够&#xff0c;看了好多遍&#xff0c;才看懂原理细节。 切记&#xff0c;不彻底懂原理&#xff0c;千万别看代码 和为K的子数组 class Solution …

K8s部署安装

目录 一.K8s简介 1.Kubernetes 的关键概念 2.Kubernetes 的功能优势 3.节点&#xff08;Node&#xff09; 4.组件&#xff08;Component&#xff09; 二.Kubernetes集群架构 三.安装部署环境 1.初始化系统环境 2.安装容器引擎 3. 安装containerd 4.安装crictl工具 5…

鸿蒙(API 12 Beta3版)【DRM会话管理(C/C++)】数字版权保护开发

DRM会话管理&#xff08;MediaKeySession&#xff09;支持媒体密钥管理及媒体解密等&#xff0c;MediaKeySession实例由系统管理里的MediaKeySystem实例创建和销毁。 开发步骤 导入NDK接口&#xff0c;接口中提供了DRM相关的属性和方法&#xff0c;导入方法如下。 #include &…

YoloV8训练单通道数据方法+单通道Onnx模型转换

1. ultralytics/cfg/models/v8/yolov8-xxx.yaml 添加ch: 1 2. ultralytics/utils/checks.py 注释assert amp_allclose(YOLO("yolov8n.pt"), im) 3. ultralytics/nn/tasks.py 添加&#xff1a;batch[img] batch[img][:,:1,:,:] 4. ultralytics/nn/autobacken…

文件存储系统的总结

仪表试验报告整理技巧和反思 仪表调试报告技巧 目的&#xff1a;签字更顺利。报告依据、减少页数、正确率、工作量 表1/2 序号 目的 原因方法 降低签字页数 减少报告页数&#xff0c;增加回路测试类报告的每页信息容量 单元格高度&#xff1a;0.7cm&#xff1b;可以正…

ASP.NET Core 6.0 ServiceCollection 实现依赖注入

ASP.NET Core6 lOC容器 控制反转&#xff08;Inversion of Control, IoC&#xff09;是一种软件设计模式&#xff0c;其目的是降低代码之间的耦合度。在C#中&#xff0c;可以使用依赖注入&#xff08;Dependency Injection, DI&#xff09;来实现控制反转。 一般系统分为 UI …

将iso格式的镜像文件转化成云平台能安装的镜像格式(raw/vhd/QCOW2/VMDK )亲测--图文详解

1.首先,你将你的iso的文件按照正常的流程和需求安装到你的虚拟机中,我这里使用的是vmware,安装完成之后,关机。再次点开你安装好的那台虚拟机的窗口,如下图 选中要导出的镜像,镜像需要关机 2.点击工具栏的文件------选择 导出 整个工程到 ovf 格式—这里你可以选择你要导…

LearnOpenGL——SSAO学习笔记

LearnOpenGL——SSAO学习笔记 SSAO一、基本概念二、样本缓冲三、法向半球四、随机核心转动五、SSAO着色器六、环境遮蔽模糊七、应用SSAO遮蔽因子 SSAO 一、基本概念 环境光照是我们加入场景总体光照中的一个固定光照常量&#xff0c;它被用来模拟光的散射(Scattering)。散射应…

数字图像处理【14】特征检测——Harris角点检测

在上一篇文章已经介绍了opencv特征检测中的一些必要的概念&#xff0c;介绍了什么是特征&#xff0c;什么是角点&#xff0c;这些角点特征可以做什么。今天来看看对于我们人来说很容易就识别到角点特征&#xff0c;对于计算机来说是如何识别的&#xff0c;具体的步嘴原理是怎样…

78.内存对齐

目录 一.什么是内存对齐 二.为什么要内存对齐 三.视频教程 一.什么是内存对齐 有下面例子 #include <stdio.h>struct TEST {char a;int b; };int main(void) {struct TEST test;test.a A;test.b 1;printf("sizeof %ld\n",sizeof(test));return 0;} …

JVM指令重排序

文章目录 什么是指令重排序编译器优化JIT 编译优化处理器优化重排序数据依赖性 硬件层的内存屏障指令重排的代码验证好处减少管道阻塞提高缓存利用率利用并行执行单元性能提升更好地利用硬件资源 问题内存可见性问题编程复杂性增加调试困难 解决方案&#xff1a;Java内存模型&a…