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 的基本使用方法和各种常用图表的绘制技巧。

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

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

相关文章

深入探讨SEO分析技巧助力网站流量提升

内容概要 在当前的数字化时代,SEO分析的重要性不言而喻。它是提升网站流量的关键工具,帮助站长有效地优化网站内容和结构。通过系统的SEO分析,站长可以掌握用户搜索行为和需求,从而制定出更具针对性的内容策略。例如,…

配置QINQ

1. 配置公司A和公司B的私有网络&#xff0c;创建对应的VLAN&#xff0c;并且接口的链路类型 S3的配置: 系统视图进入&#xff1a; <Huawei>system-view 设置设备名称为s3&#xff1a; [huawei]sysname s3 创建VLAN 10和20&#xff1a; [s3]vlan batch 10 20 配置Gigabit…

react 中配置@寻找文件

安装插件craco npm i -D craco/craco 创建 craco.config.js文件放在根目录和package.json同级 const path require(path)module.exports {webpack: {alias: {"": path.resolve(__dirname, "src")}} }创建 jsconfig.config.js文件放在根目录和package.js…

基于Qt的独立线程创建与多线程执行实验Demo

一、多线程与线程池的应用目的[1][4] &#xff08;一&#xff09;多线程 一个进程内多个线程并发执行的情况就叫多线程&#xff0c;每一个线程是一个独立的执行流。多线程是一种编程模型&#xff0c;它与处理器无关&#xff0c;与设计机制有关。 需要多线程的原因包括&#xf…

电能质量治理产品在分布式光伏电站的应用

1.概述 随着全球对可再生能源需求的不断增长&#xff0c;分布式光伏电站的建设与扩张正迅速发展。然而&#xff0c;在其运行过程中&#xff0c;分布式光伏电站遭遇了一系列挑战&#xff0c;包括企业关口计量点功率因数降低和谐波污染等问题。这些问题不仅影响了光伏电站的运行…

如何解决导入aioredis报错TypeError: duplicate base class TimeoutError的问题(轻松解决,亲测有效)

下面是根据你的要求撰写的文章: 文章目录 📖 介绍 📖🏡 演示环境 🏡📒 aioredis导包报错 📒📝 解决方案📝 小贴士⚓️ 相关链接 ⚓️📖 介绍 📖 最近在使用Python异步redis模块aioredis的时候遇到了一个错误,导包报错提示 TypeError: duplicate base cla…

@Excel若依导出异常/解决BusinessBaseEntity里面的字段不支持导出

今天发现所有实体类继承BusinessBaseEntity里面的这些通用字段不支持导出&#xff0c;debug时发现是这样&#xff1a; 导出效果 这里我把能查到的方法都汇总了&#xff0c;如果你也遇到这个异常&#xff0c;可以去逐步排查 1.先看库里有没有数据 2.看字段名是否对齐 3.所需要…

vue组件在项目中的常用业务逻辑(2)

完成一个项目的模块总体分为四步&#xff1a; 一、先静态页面 静态组件拆分出来 二、发请求(API) 三、vuex三连环 1.导入api里的search模块请求 2.捞那个请求的数据 先用async和await 再传值给result&#xff0c;添加空对象&#xff0c;派发actions&#xff1a; 3.在mutatio…

气膜球幕展览馆:引领展示新风潮,震撼视界—轻空间

随着展览行业的不断发展&#xff0c;越来越多的创意场地应运而生&#xff0c;而气膜球幕展览馆凭借其独特的球形外观和创新的结构设计&#xff0c;迅速成为展览和活动行业中的新宠。无论是艺术展览、品牌展示&#xff0c;还是各种大型活动&#xff0c;气膜球幕展览馆都以其极具…

stm32 如何生成.bin文件-keil fromelf.exe使用

文章目录 一、fromelf.exe简介二、生成.bin文件设置工程&#xff1a;编译工程&#xff1a;配置fromelf.exe&#xff1a;重新编译&#xff1a; 三、fromelf.exe的其他功能四、使用注意事项五、总结 keil fromelf.exe使用 在Keil的开发流程中&#xff0c;fromelf.exe工具扮演了至…

【数据分析】如何构建指标体系?

有哪些指标体系搭建模型&#xff1f;五个步骤教你从0开始搭建指标体系 一、企业指标体系搭建存在什么问题 许多企业在搭建数据指标体系时遇到了诸多难题&#xff0c;如问题定位不准确、数据采集不完整、目标不一致、报表无序、指标覆盖不全面以及报表价值未充分利用等。 1、…

通过 ssh config 快速免密连接服务器

通过 ssh config 快速免密连接服务器 目录 通过 ssh config 快速免密连接服务器1. 创建ssh的私钥和公钥的话 &#xff08;如果已经做过可忽略&#xff09;2. 创建config文件&#xff0c;填写服务器配置3. 允许在远程服务器的授权密钥上安装 SSH 密钥 1. 创建ssh的私钥和公钥的话…

客户关系管理(CRM)是什么?CRM定义最全解读!

有企业就有业务&#xff0c;有业务就有客户&#xff0c;所以客户关系管理&#xff08;CRM&#xff09;系统是企业管理中不可或缺的一部分&#xff0c;它帮助企业有效管理与客户之间的关系&#xff0c;提升客户满意度和忠诚度。本文将重点探讨CRM的概念和不同的定义&#xff0c;…

lc 142 环形链表II

先判断存在环形链表&#xff0c;然后根据 x z&#xff0c;得到入口 /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val x; * next null; * } * } */ public class Sol…

骑行,每天骑行多少最好?

热爱骑行的人都知道&#xff0c;每一次转动踏板都像是与风的对话&#xff0c;与大地的亲吻。我们校长骑行群的伙伴们&#xff0c;如同追逐自由的飞鸟&#xff0c;在骑行的道路上享受着速度与激情、宁静与思考。然而&#xff0c;一个看似简单却至关重要的问题常常萦绕在我们心头…

智能驾驶系列报告之一:高精度定位,智能驾驶的可靠辅助

城市导航辅助驾驶迅速落地&#xff0c;高精度定位迎来发展契机&#xff1a;首先&#xff0c;以城市 NOA为代表的 L3 级别功能正快速落地&#xff0c;智能驾驶已成各车企竞争的核心领域&#xff0c;搭载城市 NOA 功能的车型数量及渗透率快速提升。伴随电动化和智能化的提升&…

LeetCode136只出现一次的数字I

题目描述&#xff1a;给你一个非空整数数组nums&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 看到这个题第一想法应该是使用map记录数字及数字出现的次数&#xff0c;如果原数组长度为n&#xff0c;则map的记录条…

React 前端使用 Input 输入框的样式上传一个 Excel 文件并读取内容对象数组

本文讲解了关于如何在 React 前端使用 Input 输入框上传一个 Excel 文件&#xff0c;并读取文件内容转成 json 数据格式&#xff08;对象数组&#xff09;。 文章目录 1、Excel 文件展示2、完整代码3、数据结果展示4、前端样式展示5、使用 button 按钮的前端样式 1、Excel 文件…

Kubernetes:(五)Pod 基础概念

文章目录 一、Pod基础概念pod的状态容器&#xff08;Container&#xff09;生命周期pod创建容器的过程&#xff1a; 二、底层容器Pause三、初始化容器&#xff08;initcontainers&#xff09;四、Pod容器的分类五、镜像拉取策略&#xff08;image PullPolicy&#xff09;六、重…