【Python】数据处理:Matplotlib绘图

Matplotlib是Python强大的数据可视化工具库,类似于MATLAB语言。Mat-lotlib提供了一整套与MATLAB相似的命令API,十分适合进行交互式制图,而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
Matplotlib是神经生物学家John D.Hunter于2007年创建的,其函数设计参考了MATLAB。

折线图

基础折线图

import matplotlib.pyplot as plt
# 数据
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)  # 绘制折线图
plt.show()  # 显示图表

在这里插入图片描述

折线图样式

plt.plot() 函数常见参数及其缩写

  1. x, y:
    • 折线图的 X 轴和 Y 轴数据。
  2. color (c):
    • 折线的颜色。
    • 可以是颜色名称(如 'red')、颜色缩写(如 'r')或者 RGB 十六进制值(如 '#FF5733')。
  3. linestyle (ls):
    • 折线的线型。
    • 可选值包括 '-'(实线,默认)、'--'(虚线)、':'(点线)、'-.'(点划线)。
  4. linewidth (lw):
    • 折线的宽度。
    • 数值型,表示折线的粗细,默认值是 1。
  5. marker:
    • 数据点的标记样式。
    • 可选值包括 'o'(圆圈)、'^'(三角形)、's'(正方形)、'*'(星号)等。
  6. markersize (ms):
    • 数据点的大小。
    • 数值型,表示数据点的直径大小。
  7. markerfacecolor (mfc) / markeredgecolor (mec):
    • 数据点标记的填充颜色和边缘颜色。
  8. label:
    • 折线的标签,用于图例的显示。
  9. alpha:
    • 折线的透明度。
    • 可以是 0 到 1 之间的值,0 表示完全透明,1 表示完全不透明

以下是Matplotlib中常用的颜色、线型和标记样式参数的表格展示:

颜色参数

颜色名称颜色代码
蓝色'b'
绿色'g'
红色'r'
青色'c'
洋红色'm'
黄色'y'
黑色'k'
白色'w'
颜色名称颜色代码
----------------
蓝色'blue'
绿色'green'
红色'red'
青色'cyan'
洋红色'magenta'
黄色'yellow'
黑色'black'
白色'white'
灰色'gray'
橙色'orange'
粉色'pink'
紫色'purple'
棕色'brown'

线型参数

线型说明线型代码
实线'-'
虚线'--'
点线':'
点划线'-.'

标记样式参数

标记说明标记代码
'.'
圆圈'o'
叉号'x'
加号'+'
星号'*'
方块's'
三角形'^'
倒三角形'v'
左三角形'<'
右三角形'>'
六边形1'h'
六边形2'H'
五角形'p'
垂直线`’
水平线'_'

添加标题和标签

可以为图表添加标题、X轴和Y轴的标签。

plt.plot(x, y)
plt.title('Simple Line Plot')  # 标题
plt.xlabel('X Axis Label')     # X轴标签
plt.ylabel('Y Axis Label')     # Y轴标签
plt.show()

在这里插入图片描述

添加网格线

可以添加网格线以便于读取数据。

plt.plot(x, y)
plt.grid(True)  # 添加网格线
plt.show()

plt.grid()常用参数:

  • which:指定网格线类型,可以是 'major'(主要刻度)或者 'minor'(次要刻度)
  • axis:指定在哪个轴上添加网格线,可以是 'both'(默认,同时添加X和Y轴的网格线)、'x'(只在X轴上添加)、'y'(只在Y轴上添加)。

在这里插入图片描述

设置坐标轴范围

可以设置X轴和Y轴的显示范围。

plt.plot(x, y)
plt.xlim(0, 5)  # X轴范围
plt.ylim(0, 20) # Y轴范围
plt.show()

在这里插入图片描述

设置刻度和刻度标签

可以设置刻度的值和标签。

plt.plot(x, y)
plt.xticks([1, 2, 3, 4], ['one', 'two', 'three', 'four'])  # 设置X轴刻度标签
plt.yticks([1, 4, 9, 16], ['one', 'four', 'nine', 'sixteen'])  # 设置Y轴刻度标签
plt.show()

在这里插入图片描述

保存图表

可以将图表保存为图像文件。

plt.plot(x, y)
plt.savefig('line_plot.png')  # 保存为PNG文件

多子图绘制

可以在同一个图中绘制多个子图。

# 创建一个2x1的子图
plt.subplot(2, 1, 1)
plt.plot(x, y)
plt.title('First Subplot')

plt.subplot(2, 1, 2)
plt.plot(x, y)
plt.title('Second Subplot')

plt.tight_layout()  # 自动调整子图之间的间距
plt.show()

在这里插入图片描述

散点图

基础散点图

import matplotlib.pyplot as plt  
# 数据
x = [1, 2, 3, 4, 5]  
y = [2, 3, 5, 7, 11]  
plt.scatter(x, y)  # 绘制散点图  
plt.show()

在这里插入图片描述

散点图样式

  1. x, y:
    • 必需的参数,分别是散点图的 X 轴和 Y 轴数据。
  2. s:
    • 散点的大小。
    • 可以是单个数值表示所有散点的大小,也可以是一个数组,指定每个散点的大小。
    • 示例: plt.scatter(x, y, s=100)plt.scatter(x, y, s=sizes),其中 sizes 是一个与数据长度相同的数组。
  3. c:
    • 散点的颜色。
    • 可以是颜色名称(如 'red')、颜色缩写(如 'r')或者 RGB 十六进制值(如 '#FF5733')。
    • 示例: plt.scatter(x, y, c='blue')
  4. marker:
    • 散点的标记样式。
    • 可选值包括 'o'(圆圈,默认)、'^'(三角形)、's'(正方形)、'*'(星号)等。
    • 示例: plt.scatter(x, y, marker='o')
  5. alpha:
    • 散点的透明度。
    • 可以是 0 到 1 之间的值,0 表示完全透明,1 表示完全不透明。
    • 示例: plt.scatter(x, y, alpha=0.5)
  6. linewidths (lw) 和 edgecolors (ec):
    • 控制散点边缘的线宽和颜色。
    • linewidths 可以设置边缘的线宽,edgecolors 可以设置边缘的颜色。
    • 示例: plt.scatter(x, y, lw=2, ec='black')
  7. label:
    • 散点图的标签,用于图例的显示。
# 生成随机数据
np.random.seed(0)
x = np.random.rand(50)
y = np.random.rand(50)
sizes = np.random.rand(50) * 100  # 随机生成散点的大小
colors = np.random.rand(50)  # 随机生成散点的颜色

plt.scatter(x, y, s=sizes, c=colors, alpha=0.7, marker='o', label='Random Data')  # 绘制散点图

# 添加标题和标签
plt.title('Scatter Plot Example')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.legend()  # 添加图例
plt.show()  # 显示图形

在这里插入图片描述

三维折线图

import matplotlib.pyplot as plt
import numpy as np

# 创建一个 Figure 对象和 3D Axes 对象
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')

# 生成曲线上的数据
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)

# 绘制曲线
ax.plot(x, y, z, label='3D Spiral Curve')

# 添加标题和标签
ax.set_title('3D Spiral Curve Plot')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z Axis')


ax.legend()  # 添加图例
plt.show()  # 显示图形

在这里插入图片描述

三维曲面图

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

# 创建一个 Figure 对象和 3D Axes 对象
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')

# 绘制三维曲面图
ax.plot_surface(x, y, z, cmap='viridis')

# 添加标题和标签
ax.set_title('3D Surface Plot')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z Axis')

# 显示图形
plt.show()

在这里插入图片描述

柱状图

import matplotlib.pyplot as plt
import numpy as np

# 数据
categories = ['A', 'B', 'C', 'D']
values = [7, 13, 5, 17]

# 创建柱状图
plt.figure(figsize=(8, 6))
plt.bar(categories, values, color='skyblue')

# 添加标题和标签
plt.title('Simple Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

在这里插入图片描述

直方图

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据(正态分布)
data = np.random.randn(1000)

# 创建直方图
plt.figure(figsize=(8, 6))
plt.hist(data, bins=30, edgecolor='black')

# 添加标题和标签
plt.title('Histogram of Random Data')
plt.xlabel('Value')
plt.ylabel('Frequency')

# 显示图形
plt.show()

在这里插入图片描述

饼图

import matplotlib.pyplot as plt

# 数据
sizes = [25, 30, 20, 15, 10]  # 每一部分的大小
labels = ['A', 'B', 'C', 'D', 'E']  # 每一部分的标签

# 创建饼图
plt.figure(figsize=(8, 6))
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)

# 添加标题
plt.title('Simple Pie Chart')

# 显示图形
plt.show()

在这里插入图片描述

等高线图

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(-3.0, 3.0, 100)
y = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

# 创建填充等高线图
plt.figure(figsize=(8, 6))
plt.contourf(X, Y, Z, levels=20, cmap='RdGy')

# 添加颜色栏
plt.colorbar(label='Value')

# 添加标题和标签
plt.title('Filled Contour Plot')
plt.xlabel('X axis')
plt.ylabel('Y axis')

# 显示图形
plt.show()

在这里插入图片描述

箱线图

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = [np.random.normal(0, std, 100) for std in range(1, 4)]

# 创建箱线图
plt.figure(figsize=(8, 6))
plt.boxplot(data)

# 添加标题和标签
plt.title('Box Plot')
plt.xticks([1, 2, 3], ['Data 1', 'Data 2', 'Data 3'])
plt.ylabel('Value')

# 显示图形
plt.show()

在这里插入图片描述

热图

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
data = np.random.rand(10, 12)

# 创建热图
plt.figure(figsize=(8, 6))
plt.imshow(data, cmap='hot', interpolation='nearest')

# 添加颜色栏
plt.colorbar()

# 添加标题和标签
plt.title('Heatmap')
plt.xlabel('X axis')
plt.ylabel('Y axis')

# 显示图形
plt.show()

在这里插入图片描述

误差图

import matplotlib.pyplot as plt
import numpy as np

# 数据
x = np.linspace(0, 10, 10)
y = np.sin(x)
yerr = 0.2  # 统一的误差范围

# 创建误差图
plt.figure(figsize=(8, 6))
plt.errorbar(x, y, yerr=yerr, fmt='o', label='Data with Error Bars')

# 添加标题和标签
plt.title('Error Bar Plot')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.legend()

# 显示图形
plt.show()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

轻松拿捏C语言——【关机代码】

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f389;创作不易&#xff0c;请多多支持&#x1f389; &#x1f308;感谢大家的阅读、点赞、收藏和关注&#x1f495; &#x1f339;如有问题&#xff0c;欢迎指正 我们可以通过写…

c++编程(16)——STL(4)deque

欢迎来到博主的专栏&#xff1a;c编程 博主ID&#xff1a;代码小豪 文章目录 dequedeque的优劣势deque的操作constructor元素访问 deque deque的全称是double ended queue&#xff0c;译为双端队列&#xff0c;如何理解这个双端呢&#xff1f;我们以vector为例&#xff0c;vec…

深入剖析人才管理的关键要素:“选、用、育、留”四大核心要素

在当今这个日新月异的商业时代&#xff0c;企业的成功不再仅仅取决于资金、技术或市场策略&#xff0c;而更多地依赖于企业所拥有的人才资源。有效的人才管理策略&#xff0c;尤其是“选、用、育、留”四大核心要素&#xff0c;已成为推动企业持续发展的关键。 一、选&#xff…

Canvas绘制老友记时钟

Canvas绘制老友记时钟 前言 一直做3D/2D可视化&#xff0c;Canvas API和三角函数&#xff0c;空间几何是基础。在官网上看了一遍Canvas API之后&#xff0c;决定绘制一个老友记时钟来巩固知识点&#xff0c;本文用实际代码讲解绘制过程。 代码 HTML <canvas id"myC…

electron模板【lectron-react-boilerplate】多窗口配置【HtmlWebpackPlugin】多页面配置

如果您正在使用electron-react-boilerplate进行快速的Electron应用程序开发,您可能会遇到想要在桌面应用程序中拥有多个原生窗口的情况。 MacOS窗口图像由OpenClipart-Vectors提供,来源Pixabay。 开始之前需要提及的事情! Electron有一个主进程和渲染进程的模式。可以有多个…

【MySQL】聊聊数据库是如何保证数据不丢的

对于一个存储系统来说&#xff0c;其中比较关键的核心组件包含&#xff0c;网络、存储模型、持久化、数据结构等。而数据如何保证不丢失&#xff0c;对于不同的存储系统来说&#xff0c;比如Redis采用AOF和RDB的方式进行混合使用&#xff0c;而MySQL采用日志进行保证。也就是re…

【C++11】第一部分(一万六千多字)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 C11简介 统一的列表初始化 &#xff5b;&#xff5d;初始化 std::initializer_list 声明 auto decltype 右值引用和移动语义 左值引用和右值引用 左值引…

车票信息的请求与显示

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 1 发送与分析车票信息的查询请求 得到了获取车票信息的网络请求地址&#xff0c;然后又分析出请求地址的必要参数以及车站名称转换的文件&#xff…

利用鱼骨图进行项目问题复盘与改进

一、引言 在项目管理中&#xff0c;问题复盘是一个至关重要的环节。它不仅能帮助我们识别项目执行过程中出现的问题&#xff0c;还能促使我们深入探究问题的根本原因&#xff0c;从而采取有效的改进措施。在这个过程中&#xff0c;鱼骨图作为一种强大的工具&#xff0c;为我们…

GiantPandaCV | 提升分类模型acc(三):优化调参

本文来源公众号“GiantPandaCV”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;提升分类模型acc(三)&#xff1a;优化调参 一、前言 这是本系列的第三篇文章&#xff0c;前两篇GiantPandaCV | 提升分类模型acc(一)&#xff1a;B…

一文讲通:前后端分离的四种开发模式,及其优缺点。

前后端分离已经成为了开发的主流模式&#xff0c;很多老铁认为前后端分离就是各干各的&#xff0c;其实不然。 前后端分离有多种模式&#xff0c;贝格前端工场为大家一一详解。 1. 前后端完全分离 在这种模式下&#xff0c;前端和后端是完全独立的两个系统。前端使用一种框架…

Python学习笔记9:入门知识(九)

缩进 什么是缩进&#xff1f; 缩进&#xff0c;简单的理解为本行的首字符相比上一行的首字符位置相对靠后。目前笔者接触的编程语言缩进一般是4字符&#xff0c;直接可以按tab键就行。 为什么突然讲缩进&#xff1f; Python这门语言&#xff0c;是依靠缩进来判断当前行与上…

十五边形有多少条对角线?(解答某位网友的困惑)

想要做出这种题目&#xff0c;必须得先列举一些多边形的例子。 三角形&#xff1a;000 四边形&#xff1a;112 五边形&#xff1a; 六边形&#xff1a; 此时即可发现规律&#xff1a; 三角形的对角线为(3-3)(3-3)0 四边形为&#xff1a;(4-3)(4-3)2 五边形为&#xff1a;…

增强的依赖性

增强的依赖性 原文参见 https://universaldependencies.org/u/overview/syntax.html 受控/提升主语 受控主语&#xff1a;表示主语由控制动词决定。提升主语&#xff1a;表示主语通过提升动词从嵌套句提升到主句。 基本树缺少受控动词与其控制者之间的主语依存关系&#xf…

民生银行信用卡中心金融科技24届春招面经

本文介绍2024届春招中&#xff0c;中国民生银行下属信用卡中心的金融科技&#xff08;系统研发方向&#xff09; 岗位2场面试的基本情况、提问问题等。 2024年04月投递了中国民生银行下属信用卡中心的金融科技&#xff08;系统研发方向&#xff09; 岗位&#xff0c;暂时不清楚…

8个宝藏APP,个个都牛逼哈拉!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 目前win7已经逐渐淡出人们的视野&#xff0c;大部分人都开始使用win10&#xff0c;在日常工作和使用中&#xff0c;创客们下载神奇的软件能大幅提…

最新下载:Folx【软件附加安装教程】

​Folx Pro是一款适合Mac的专业下载工具也是一款BT下载器&#xff0c;Folx中文版有一个支持Retina显示的现代界面&#xff0c;提供独特的系统排序、存储下载内容与预览下载文件&#xff0c;Folx中文官网提供Folx教程、激活码、下载。 Folx友好兼容浏览器&#xff1a;如果你在网…

Ubuntu 18.04下普通用户的一次提权过程

Ubuntu 18.04下普通用户的一次提权过程 一.背景介绍:二.主要调试过程:三.相关命令:1.设置BMC密码,获取BMC IP2.找一台ubuntu搭建TFTP服务,用来替换grub.cfg文件3.从调试服务器的/boot/grub/grub.cfg中提取出recovery mode的配置,简化并生成新的配置文件grub.cfg,放在tftp服务的…

Python教程:超详细1小时学会Python,太简单了!

1.Hello world 安装完Python之后&#xff0c;打开IDLE(Python GUI) &#xff0c;该程序是Python语言解释器,你写的语句能够立即运行。 我们写下一句著名的程序语句&#xff1a; 并按回车&#xff0c;你就能看到这句被K&R引入到程序世界的名言。 在解释器中选择"File…

永磁同步直线电机(PMLSM)控制与仿真2-永磁同步直线电机数学模型搭建

文章目录 1、公式总结2、电压方程模型3、运动方程4、推力方程5、转化关系 写在前面&#xff1a;原本为一篇文章写完了永磁同步直线电机数学模型介绍&#xff0c;永磁同步直线电机数学模型搭建&#xff0c;以及永磁同步直线电机三环参数整定及三环仿真模型搭建&#xff0c;但因为…