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

Python Matplotlib:基本图表绘制指南

Python Matplotlib:基本图表绘制指南

Matplotlib 是 Python 中一个非常流行的绘图库,它以简单易用和功能丰富而闻名,适合各种场景的数据可视化需求。在数据分析和数据科学领域,Matplotlib 是我们展示数据的有力工具。本文将详细讲解如何使用 Matplotlib 绘制常见图表,包括折线图、散点图、柱状图、饼图和直方图等。

在这里插入图片描述

1. Matplotlib 简介和安装

Matplotlib 是一个 Python 库,可以轻松绘制静态、动态和交互式图表。它提供了灵活的绘图功能,尤其在数据科学和数据分析领域应用广泛。

安装 Matplotlib

在安装 Python 环境后,可以使用 pip 安装 Matplotlib:

pip install matplotlib

安装完成后,可以通过以下方式导入 Matplotlib:

import matplotlib.pyplot as plt

2. 绘制基础图表

2.1 折线图(Line Plot)

折线图通常用于展示数据随时间的变化,或观察变量之间的关系。绘制折线图的基本语法如下:

import matplotlib.pyplot as plt# 定义数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 绘制折线图
plt.plot(x, y, marker='o', color='b', linestyle='-', linewidth=2, markersize=6)
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.title('折线图示例')
plt.grid(True)  # 添加网格
plt.show()
  • plt.plot:定义折线图的线条颜色、线型等。
  • marker:指定点的样式,例如 'o' 为圆形,'*' 为星形。
  • color:线条颜色,如 b 表示蓝色。
  • linestyle:线条样式,'-' 为实线。
  • grid(True):显示网格。
2.2 散点图(Scatter Plot)

散点图适合表示数据的离散分布情况,可用于发现变量之间的关系。绘制散点图的代码如下:

import matplotlib.pyplot as plt# 定义数据
x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 4, 6, 7, 8]# 绘制散点图
plt.scatter(x, y, color='r', marker='x')
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.title('散点图示例')
plt.show()
  • plt.scatter:创建散点图,允许使用不同的点样式和颜色。
  • marker='x':指定点的样式为“x”形。
2.3 柱状图(Bar Chart)

柱状图用于比较不同类别的数据,可以是水平或垂直的。

import matplotlib.pyplot as plt# 定义数据
categories = ['A', 'B', 'C', 'D']
values = [10, 15, 7, 20]# 绘制柱状图
plt.bar(categories, values, color='skyblue')
plt.xlabel('类别')
plt.ylabel('值')
plt.title('柱状图示例')
plt.show()
  • plt.bar:创建柱状图,指定颜色、宽度等。
  • color:柱子的颜色,可以使用名称如 skyblue 或色号。
2.4 水平柱状图

水平柱状图与柱状图类似,但条形是横向的。

import matplotlib.pyplot as plt# 定义数据
categories = ['A', 'B', 'C', 'D']
values = [10, 15, 7, 20]# 绘制水平柱状图
plt.barh(categories, values, color='coral')
plt.xlabel('值')
plt.ylabel('类别')
plt.title('水平柱状图示例')
plt.show()
  • plt.barh:创建水平柱状图,与 bar 类似,但在 X 和 Y 轴的定义上有区别。
2.5 饼图(Pie Chart)

饼图主要用于展示各个部分占整体的比例。它在展示市场份额、人口分布等场景中常用。

import matplotlib.pyplot as plt# 定义数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
explode = (0, 0.1, 0, 0)  # 突出显示第二块# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)
plt.title('饼图示例')
plt.show()
  • explode:设置高亮的分离程度。
  • autopct='%1.1f%%':显示每个扇形的百分比。
  • shadow:添加阴影效果。

3. 高级图表

3.1 直方图(Histogram)

直方图通常用于展示数据的分布情况,比如查看数据在各个区间上的频率。

import matplotlib.pyplot as plt
import numpy as np# 生成随机数据
data = np.random.randn(1000)# 绘制直方图
plt.hist(data, bins=30, color='purple', edgecolor='black')
plt.xlabel('值')
plt.ylabel('频率')
plt.title('直方图示例')
plt.show()
  • plt.hist:绘制直方图。
  • bins=30:将数据分为 30 个区间。
  • edgecolor='black':设置条形边框颜色为黑色。
3.2 箱线图(Box Plot)

箱线图用于显示数据的离散分布和异常值情况,特别适合于对比不同组的分布。

import matplotlib.pyplot as plt
import numpy as np# 生成随机数据
data = [np.random.normal(0, std, 100) for std in range(1, 4)]# 绘制箱线图
plt.boxplot(data, patch_artist=True, notch=True)
plt.xlabel('组别')
plt.ylabel('值')
plt.title('箱线图示例')
plt.show()
  • patch_artist=True:填充箱体颜色。
  • notch=True:添加凹槽以标记中位数。
3.3 热力图(Heatmap)

热力图可以显示变量之间的相关性或密度分布,非常适合分析大规模数据的关系。

import matplotlib.pyplot as plt
import numpy as np# 生成随机数据
data = np.random.rand(10, 10)# 绘制热力图
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()  # 添加颜色条
plt.title('热力图示例')
plt.show()
  • cmap='hot':颜色映射设置为“热”色调。
  • colorbar():添加颜色条。

4. 图表的自定义与优化

4.1 设置图例

图例可以帮助我们更好地理解数据的含义。通过 plt.legend() 可以轻松添加图例。

import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 8, 27, 64, 125]# 绘制多条折线图
plt.plot(x, y1, label='平方', color='blue')
plt.plot(x, y2, label='立方', color='green')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('带图例的折线图')
plt.legend()  # 添加图例
plt.show()
4.2 使用子图(Subplot)

在一个窗口中显示多个图,可以使用 plt.subplot

import matplotlib.pyplot as plt# 创建 2x2 子图
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3], [1, 4, 9])
plt.title('子图1')plt.subplot(2, 2, 2)
plt.bar([1, 2, 3], [1, 2, 3])
plt.title('子图2')plt.subplot(2, 2, 3)
plt.scatter([1, 2, 3], [1, 4, 9])
plt.title('子图3')plt.subplot(2, 2, 4)
plt.hist([1, 2, 3, 1, 2, 1])
plt.title('子图4')plt.tight_layout()  # 自动调整子图间的间距
plt.show()

5. 总结

通过本文的介绍,大家可以初步掌握 Matplotlib 的基本使用方法和各种常用图表的绘制技巧。

相关文章:

Python Matplotlib:基本图表绘制指南

Python Matplotlib:基本图表绘制指南 Matplotlib 是 Python 中一个非常流行的绘图库,它以简单易用和功能丰富而闻名,适合各种场景的数据可视化需求。在数据分析和数据科学领域,Matplotlib 是我们展示数据的有力工具。本文将详细讲…...

供应商图纸外发:如何做到既安全又高效?

供应商跟合作伙伴、客户之间会涉及到图纸外发的场景,这是一个涉及数据安全、效率及合规性的重要环节。供应商图纸发送流程一般如下: 1.申请与审批 采购人员根据需要提出发放图纸的申请并提交审批; 采购部负责人审批发放申请,确…...

探索 Move 编程语言:智能合约开发的新纪元

目录 引言 一、变量的定义 二、整型 如何在Move中表示小数和负数? 三、运算符 as运算符 布尔型 地址类型 四、什么是包? 五、什么是模块? 六、如何定义方法? 方法访问权限控制 init方法 总结 引言 Move 是一种专为区…...

vue3+vant实现视频播放(含首次禁止进度条拖拽,视频看完后恢复,保存播放视频进度,刷新及下次进入继续播放,判断视频有无全部看完等)

1、效果图 2、 <div><videocontrolsclass"video_player"ref"videoPlayer":src"videoSrc"timeupdate"handleTimeUpdate"play"onPlay"pause"onPause"ended"onVideoEnded"></video><…...

情感强度分析:精确衡量文本情感强弱的 AI 技术

情感强度分析&#xff1a;精确衡量文本情感强弱的 AI 技术 一、引言 在当今信息爆炸的时代&#xff0c;我们每天都会接触到大量的文本信息。这些文本中蕴含着各种各样的情感&#xff0c;如喜悦、悲伤、愤怒、恐惧等。如何准确地理解和分析这些文本的情感强度&#xff0c;对于…...

工厂方法模式与抽象工厂模式

工厂方法模式 (Factory Method) 定义&#xff1a; 工厂方法模式是一种创建型设计模式&#xff0c;它定义了一个用于创建对象的接口&#xff0c;但让子类决定实例化哪个类。工厂方法将类的实例化推迟到子类。 优点&#xff1a; 解耦&#xff1a;客户端代码与具体的产品类解耦…...

「Math」初等数学知识点大纲(占位待处理)

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...

百元高性价比头戴式降噪耳机选哪款?四款平价性价比品牌别错过!

随着科技的发展&#xff0c;现在的头戴式耳机真的是越来越多样了&#xff0c;很多的朋友在选购耳机的时候&#xff0c;不知道哪一款头戴式耳机的性价比较高&#xff0c;究竟百元高性价比头戴式降噪耳机选哪款&#xff1f;身为一名数码爱好者&#xff0c;这里就给大家推带来四款…...

vue3 setup写不写到标签上的区别

在vue3种setup的写法&#xff0c;可以单独写setup()也可以写到script标签中&#xff0c;当然我们推荐后面这种 他的好处有很多&#xff0c;代码也简洁很多。1、属性和方法无需return&#xff0c;可直接使用 /*原先*/ <script> import { defineComponent } from "v…...

【论文解读】EdgeYOLO:一种边缘实时目标检测器(附论文地址)

论文地址&#xff1a;https://arxiv.org/pdf/2302.07483 这篇文章的标题是《EdgeYOLO: An Edge-Real-Time Object Detector》&#xff0c;由中国北京理工大学的Shihan Liu、Junlin Zha、Jian Sun、Zhuo Li和Gang Wang共同撰写。这篇论文提出了一个基于最新YOLO框架的高效、低复…...

xlwings,让excel飞起来!

excel已经成为必不可少的数据处理软件&#xff0c;几乎天天在用。python有很多支持操作excel的第三方库&#xff0c;xlwings是其中一个。 关于xlwings xlwings开源免费&#xff0c;能够非常方便的读写Excel文件中的数据&#xff0c;并且能够进行单元格格式的修改。 xlwings还…...

C语言学习,标准库 <stddef.h>

<stddef.h> C 标准库中头文件&#xff0c;它定义了一些常用的类型定义和宏。这些定义通常用于指针操作、数组处理和其他需要固定大小数据类型的场合。 size_t&#xff1a; 这是一个无符号整数类型&#xff0c;用于表示对象的大小&#xff08;以字节为单位&#xff09;。…...

PyQt5实战——操作台打印重定向,主界面以及stacklayout使用(四)

个人博客&#xff1a;苏三有春的博客 系类往期文章&#xff1a; PyQt5实战——多脚本集合包&#xff0c;前言与环境配置&#xff08;一&#xff09; PyQt5实战——多脚本集合包&#xff0c;UI以及工程布局&#xff08;二&#xff09; PyQt5实战——多脚本集合包&#xff0c;程序…...

React + Vite + TypeScript + React router项目搭建教程

一、创建项目 运行项目 二、目录结构 项目目录&#xff1a; ├─node_modules //第三方依赖 ├─public //静态资源&#xff08;不参与打包&#xff09; └─src├─assets //静态资源├─components //组件├─config //配置├─http //请求方法封装├─layout //页面…...

【ShuQiHere】️ 如何启用 SSH 服务

&#x1f6e0;️ 如何启用 SSH 服务 目录 基础概念 &#x1f331;检查是否已安装 SSH 服务 &#x1f50d;在不同操作系统上安装 SSH 服务 &#x1f4bb; LinuxWindows 11macOS 启动和启用 SSH 服务 &#x1f680;配置防火墙以允许 SSH 连接 &#x1f525;配置 SSH 服务&#…...

【自动化测试】APP UI 自动化(安卓)-本地环境搭建

一、软件准备及版本介绍 软件版本JAVA-SDK1.8.0_181 python 3.10.10 Android SDK Tools 下最新版本即可&#xff0c;无特殊要求 PyCharm 2023.3.5&#xff08;下最新版本即可&#xff0c;无特殊要求&#xff09; 二、安装步骤及环境变量配置 2.1 Java安装及配置 1&am…...

java毕业设计之基于Bootstrap的常州地方旅游管理系统的设计与实现(springboot)

项目简介 基于Bootstrap的常州地方旅游管理系统的设计与实现有下功能&#xff1a; 基于Bootstrap的常州地方旅游管理系统的设计与实现的主要使用者分为用户功能模块和管理员功能模块两大部分&#xff0c;用户可查看景点信息、景点资讯等&#xff0c;注册登录后可进行景点订票…...

《机甲崛起》

第一章&#xff1a;觉醒 在遥远的未来&#xff0c;地球的面貌已被人类科技彻底改变。蓝天被高耸的摩天大楼和闪烁的飞行器撕裂&#xff0c;城市的光辉仿佛能照亮整个星球。然而&#xff0c;繁华背后隐藏着深重的危机&#xff1a;生态环境的恶化、资源的匮乏&#xff0c;已成为…...

Windows10:Linux Reader

Linux Reader Access files and folders on Ext, UFS, HFS, ReiserFS, or APFS file systems from Windows DiskInternals 发布的 Linux Reader 是一款能在 Windows 系统环境下读取 Linux 分区文件的免费软件&#xff0c;提供了资源管理器式的浏览模式。它使用只读模式挂载 L…...

一、k8s快速入门之学习Kubernetes组件基础

一、三个容器管理器平台 Apache MESOS 开源的分布式资源管理框架&#xff0c;被推特选为基础平台&#xff0c;2019年推特换位k8s&#xff0c;MESOS最新版可以在MESOS上管理k8sDOCKER SWARM docker总部发行的&#xff0c;实现docker的集群方案&#xff0c;和docker捆版一起&…...

免费批量Markdown转Word工具

免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具&#xff0c;支持将多个Markdown文件一键转换为Word文档。完全免费&#xff0c;无需安装&#xff0c;解压即用&#xff01; 官方网站 访问官方展示页面了解更多信息&#xff1a;http://mutou888.com/pro…...

CCF 开源发展委员会 “开源高校行“ 暨红山开源 + OpenAtom openKylin 高校行活动在西安四所高校成功举办

点击蓝字 关注我们 CCF Opensource Development Committee CCF开源高校行 暨红山开源 openKylin 高校行 西安站 5 月 26 日至 28 日&#xff0c;CCF 开源发展委员会 "开源高校行" 暨红山开源 OpenAtom openKylin 高校行活动在西安四所高校&#xff08;西安交通大学…...

LSTM-XGBoost多变量时序预测(Matlab完整源码和数据)

LSTM-XGBoost多变量时序预测&#xff08;Matlab完整源码和数据&#xff09; 目录 LSTM-XGBoost多变量时序预测&#xff08;Matlab完整源码和数据&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 普通的多变量时序已经用腻了&#xff0c;审稿人也看烦了&#…...

SeaweedFS S3 Spring Boot Starter

SeaweedFS S3 Spring Boot Starter 源码特性环境要求快速开始1. 添加依赖2. 配置文件3. 使用方式方式一&#xff1a;注入服务类方式二&#xff1a;使用工具类 API 文档SeaweedFsS3Service 主要方法SeaweedFsS3Util 工具类方法 配置参数运行测试构建项目注意事项集成应用更多项目…...

win11部署suna

参考链接 项目链接 沙盒链接 数据库链接 本文介绍 本文只为项目的辅助&#xff0c;手把手太麻烦 执行步骤 1.下载代码 git clone https://github.com/kortix-ai/suna.git cd suna2.配置环境&#xff08;在Anaconda Prompt上执行&#xff09; python setup.py3.运行代码 …...

SAP学习笔记 - 开发24 - 前端Fiori开发 Filtering(过滤器),Sorting and Grouping(排序和分组)

上一章讲了SAP Fiori开发的表达式绑定&#xff0c;自定义格式化等内容。 SAP学习笔记 - 开发23 - 前端Fiori开发 Expression Binding&#xff08;表达式绑定&#xff09;&#xff0c;Custom Formatters&#xff08;自定义格式化&#xff09;-CSDN博客 本章继续讲SAP Fiori开发…...

API标准的本质与演进:从 REST 架构到 AI 服务集成

在当今数字化浪潮中&#xff0c;API 已成为系统之间沟通与协作的“语言”&#xff0c;REST&#xff08;Representational State Transfer&#xff0c;表述性状态转移&#xff09;是一种基于 HTTP 协议的 Web 架构风格。它不仅改变了 Web 应用开发的方式&#xff0c;也成为构建现…...

408第一季 - 数据结构 - 栈与队列

栈 闲聊 栈是一个线性表 栈的特点是后进先出 然后是一个公式 比如123要入栈&#xff0c;一共有5种排列组合的出栈 栈的数组实现 这里有两种情况&#xff0c;&#xff0c;一个是有下标为-1的&#xff0c;一个没有 代码不用看&#xff0c;真题不会考 栈的链式存储结构 L ->…...

(三)Linux性能优化-CPU-CPU 使用率

CPU使用率 user&#xff08;通常缩写为 us&#xff09;&#xff0c;代表用户态 CPU 时间。注意&#xff0c;它不包括下面的 nice 时间&#xff0c;但包括了 guest 时间。nice&#xff08;通常缩写为 ni&#xff09;&#xff0c;代表低优先级用户态 CPU 时间&#xff0c;也就是进…...

stress 服务器压力测试的工具学习

一、stress 工具介绍 tress 是一种工具&#xff0c;可以对符合 POSIX 标准的操作系统施加可配置数量的 CPU、内存、I/O 或磁盘压力&#xff0c;并报告其检测到的任何错误。 stress 不是一个基准测试。它是由系统管理员用来评估其系统扩展性的工具&#xff0c;由内核程序员用来…...