从头开始的可视化数据 matplotlib:初学者努力绘制数据图
从头开始学习使用 matplotlib 可视化数据,对于初学者来说,可能会有些挑战,但 matplotlib 的核心理念非常清晰:绘制图表需要了解如何设置图形、坐标轴以及如何用数据填充它们。我们可以通过一些简单的例子来逐步介绍基本步骤。

1. 安装 matplotlib
在开始之前,请确保你已经安装了 matplotlib。如果没有,可以通过以下命令安装:
pip install matplotlib
2. matplotlib 的基本构造
matplotlib 中最常见的绘图库是 pyplot 模块,它提供了类似于 MATLAB 的接口。我们通常这样引入它:
import matplotlib.pyplot as plt
3. 绘制第一个简单的图表
我们先从一个非常简单的折线图开始:
import matplotlib.pyplot as plt# 数据:x轴和y轴
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]# 创建图表
plt.plot(x, y)# 添加标题和标签
plt.title("Simple Line Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")# 显示图表
plt.show()
代码解读:
plt.plot(x, y):使用plot()函数绘制折线图,x和y是数据点的坐标。plt.title():为图表添加标题。plt.xlabel()和plt.ylabel():为x轴和y轴添加标签。plt.show():显示图表。
这段代码将会生成一个简单的线性关系的图表,x 轴是 1 到 5,y 轴是它们对应的平方值。
4. 绘制散点图
如果你想展示数据点之间的关系而不是使用折线,可以绘制散点图。
import matplotlib.pyplot as plt# 数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]# 创建散点图
plt.scatter(x, y)# 添加标题和标签
plt.title("Simple Scatter Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")# 显示图表
plt.show()
代码解读:
plt.scatter(x, y):scatter()函数用于绘制散点图,每个(x, y)对应一个点。
5. 绘制柱状图 (Bar Chart)
柱状图非常适合展示分类数据。例如,我们可以绘制一组学生考试成绩的柱状图。
import matplotlib.pyplot as plt# 数据
categories = ['A', 'B', 'C', 'D']
scores = [85, 90, 78, 92]# 创建柱状图
plt.bar(categories, scores)# 添加标题和标签
plt.title("Student Scores")
plt.xlabel("Student")
plt.ylabel("Score")# 显示图表
plt.show()
代码解读:
plt.bar(categories, scores):bar()函数用于创建柱状图,categories是柱的分类,scores是柱的高度。
6. 绘制直方图 (Histogram)
直方图可以帮助你可视化数据的分布。例如,以下示例展示了生成的随机数据的分布。
import matplotlib.pyplot as plt
import numpy as np# 生成1000个正态分布的随机数据
data = np.random.randn(1000)# 创建直方图
plt.hist(data, bins=30)# 添加标题和标签
plt.title("Histogram of Random Data")
plt.xlabel("Value")
plt.ylabel("Frequency")# 显示图表
plt.show()
代码解读:
np.random.randn(1000):生成1000个正态分布的随机数。plt.hist(data, bins=30):hist()函数用于绘制直方图,bins参数定义了区间的数量。
7. 自定义样式
matplotlib 提供了大量自定义选项。你可以修改颜色、线型、点样式等。
示例:自定义线型和颜色
import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]# 自定义折线图的线型和颜色
plt.plot(x, y, color='green', linestyle='--', marker='o')plt.title("Customized Line Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()
代码解读:
color='green':线条的颜色设为绿色。linestyle='--':线条类型设为虚线。marker='o':数据点的标记设为圆点。
8. 添加多个数据集
你还可以在同一个图表中绘制多个数据集。
import matplotlib.pyplot as plt# 两组数据
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]# 绘制第一组数据
plt.plot(x, y1, label="y = x^2")# 绘制第二组数据
plt.plot(x, y2, label="y = x")# 添加图例
plt.legend()plt.title("Multiple Line Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")# 显示图表
plt.show()
代码解读:
label="y = x^2"和label="y = x":为每条线设置标签。plt.legend():在图表中显示图例。
9. 子图 (Subplots)
如果你想在一个窗口中展示多个图表,可以使用 subplots() 方法。
import matplotlib.pyplot as plt# 创建1行2列的子图
fig, axs = plt.subplots(1, 2)# 第一个子图
axs[0].plot([1, 2, 3], [1, 4, 9])
axs[0].set_title("Subplot 1")# 第二个子图
axs[1].plot([1, 2, 3], [1, 2, 3])
axs[1].set_title("Subplot 2")# 显示图表
plt.tight_layout()
plt.show()
代码解读:
plt.subplots(1, 2):创建一个包含1行2列的图表。axs[0]和axs[1]:分别表示两个子图。plt.tight_layout():自动调整子图之间的间距。
10. 保存图表
最后,如果你想将图表保存为图片,可以使用 savefig() 函数。
plt.plot([1, 2, 3], [1, 4, 9])
plt.title("Example Plot")# 保存为PNG格式
plt.savefig("plot.png")# 显示图表
plt.show()
总结
这只是 matplotlib 的一个入门介绍。通过这些简单的例子,你可以:
- 创建各种类型的图表(折线图、散点图、柱状图、直方图等)。
- 使用
plt.plot()、plt.scatter()、plt.bar()等函数绘制图表。 - 自定义颜色、线型、点样式等。
- 在一个图表中展示多个数据集或子图。
随着你对 matplotlib 的熟悉,你可以探索更多高级功能,比如动画、三维图表等。如果有任何问题或想要进一步了解特定功能,随时提问!
相关文章:
从头开始的可视化数据 matplotlib:初学者努力绘制数据图
从头开始学习使用 matplotlib 可视化数据,对于初学者来说,可能会有些挑战,但 matplotlib 的核心理念非常清晰:绘制图表需要了解如何设置图形、坐标轴以及如何用数据填充它们。我们可以通过一些简单的例子来逐步介绍基本步骤。 1. …...
vscode 远程linux服务器 连接git
vscode 远程linux服务器 连接git 1. git 下载2. git 配置1)github 设置2)与github建立连接linux端:创建密钥github端:创建ssh key 3. 使用1)初始化repository2)commit 输入本次提交信息,提交到本…...
不同jdk版本中的接口规范
Java Development Kit(JDK)的每个版本通常会对 Java 语言和类库进行改进,接口规范也在不断演进。Java 接口的演变是逐步从 “纯粹抽象的定义” 向 “具有行为的抽象定义” 演化的。 JDK 1.0 和 JDK 1.1JDK 1.2 到 JDK 1.6JDK 1.8(…...
人工智能图像信号处理器(AI ISP)技术介绍
随着智能设备和数码成像技术的快速发展,图像质量的提升成为用户体验的关键因素之一。人工智能图像信号处理器(AI Image Signal Processor,AI ISP) 作为传统图像信号处理器(ISP)的升级版,通过集成…...
3D Slicer 教程三 ---- 坐标系
上篇提到3D Slicer 教程二 ---- 数据集-CSDN博客 3d slicer的坐标系与大多数医学影像软件使用LPS(左、后、上)坐标系统不太一样, 今天就仔细介绍一下坐标系的区别,复盘一下在影像处理中遇到的坐标问题(集中在坐标处理相关的,图像插值,图像处理, 定位线,翻…...
Video-LLaMA论文解读和项目部署教程
Video-LLaMA: An Instruction-tuned Audio-Visual Language Model for Video Understanding 相关工作 大型语言模型: 本文的工作基于这些LLM,并提供即插即用插件,使其能够理解视频中的视觉和听觉内容。 多模态大型语言模型: 现有…...
Elasticsearch设置 X-Pack认证,设置账号和密码
前言 以下Elasticsearch版本:7.9.3 ES自带的X-Pack密码验证: X-Pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,所以我们想要开启账号密码验证…...
机器学习——量子机器学习(Quantum Machine Learning)
机器学习——量子机器学习(Quantum Machine Learning) 量子机器学习(Quantum Machine Learning)——未来的智能计算量子机器学习的核心概念使用Qiskit进行量子机器学习——代码示例代码解析量子机器学习的应用结论 量子机器学习&a…...
Android Studio 的 Gradle 任务列表只显示测试任务
问题现象如下: 问题原因: 这是因为Android Studio 设置中勾选了屏蔽其他gradle任务的选项。 解决方法: File -> Settings -> Experimental 取消勾选Only include test tasks in the Gradle task list generated during Gradle Sync&…...
Keepalived:高可用性的守护神
Keepalived:高可用性的守护神 在现代企业IT系统中,高可用性是确保业务连续性和服务质量的关键要素。系统面对硬件故障、软件错误、人为失误或自然灾害时,依然能保持正常运行,这样的能力对于企业来说至关重要。为此,业界开发了一系列高可用性解决方案,其中Keepalived以其…...
Golang笔记_day08
Go面试题(一) 1、空切片 和 nil 切片 区别 空切片: 空切片是指长度和容量都为0的切片。它不包含任何元素,但仍然具有切片的容量属性。在Go语言中,可以使用内置的make函数创建一个空切片,例如:…...
如何在 React 中更新状态对象的某个值
在 React 中,我们经常需要更新组件的状态来反映 UI 的变化。如果状态是一个复杂的对象,比如一个包含多个筛选条件的对象,我们希望只更新其中的某个键,而不是整个状态对象。今天,我将向大家展示如何在更新状态时保留已有…...
edge浏览器:你的连接不是专用连接
最近在使用edge浏览器打开github时,发现打不开了,提升你的连接不是专用连接。试了很多种方法甚至重装了浏览器,都没有用。 直到看到了这篇文章,才得到解决: 10 个修复此站点在 Windows Edge 上的连接不安全的问题htt…...
PDF 软件如何帮助您编辑、转换和保护文件
如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的…...
如何使用Java爬虫处理API接口返回的JSON数据?
处理API接口返回的JSON数据是Java爬虫开发中的一个常见任务。在Java中,有多个库可以帮助我们解析JSON数据,其中最流行的是Jackson和Gson。以下是使用这两个库处理JSON数据的基本步骤和示例代码。 使用Jackson处理JSON Jackson是一个功能强大的JSON处理…...
Ajax是什么?
Ajax是什么? Ajax是创建交互式网页应用的网页开发技术。简单来说就是网页在不加载的情况下,可以跟服务器交换数据,并更新页面的内容。 原理: 1. 创建xhr(xmlHttpRequest)对象; 2, 通过xhr对象的open()方法和…...
技术方向简介
掌握 Java基础,包括OOP思想、集合、常用的设计模式;熟悉基本的数据结构和算法; 掌握JVM虚拟机和Java多线程并发编程,熟悉线程池、线程安全机制、锁的使用; 熟悉MySQL、Oracle等关系型数据库锁、事务、索引相关知识,了解DDL原理&…...
延迟队列实现及其原理详解
1.绪论 本文主要讲解常见的几种延迟队列的实现方式,以及其原理。 2.延迟队列的使用场景 延迟队列主要用于解决每个被调度的任务开始执行的时间不一致的场景,主要包含如下场景: 1.比如订单超过15分钟后,关闭未关闭的订单。 2.比如用户可以…...
web APIs
目录 Web APIs第一天Dom获取&属性操作Web API基本认知变量声明作用和分类什么是DOMDOM树DOM对象 获取Dom对象根据CSS选择器来获取DOM元素(重点)其他获取DOM元素方法(了解) 操作元素内容对象.innerText 属性对象.innerHTML 属性…...
【Web前端概述】
HTML 是用来描述网页的一种语言,全称是 Hyper-Text Markup Language,即超文本标记语言。我们浏览网页时看到的文字、按钮、图片、视频等元素,它们都是通过 HTML 书写并通过浏览器来呈现的。 一、HTML简史 1991年10月:一个非正式…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
