matplotlilb画图

server/2024/11/28 0:00:19/

 matplotlib 

        matplotlib 是 Python 中一个强大而灵活的绘图库,广泛用于数据可视化。它允许创建多种类型的图表,包括线图、散点图、柱状图、饼图、直方图等。matplotlib 的基础是 pyplot 模块,它为绘图提供了简单的接口。这里详细讲解一下 matplotlib 的使用方法及其核心概念:

1. 基础结构和模块

        matplotlib 的核心模块是pyplot,通常以plt缩写来使用:

import matplotlib.pyplot as plt

matplotlib 中常用的集中图表类型方法介绍:
 

2. 线图

        线图通常用于展示数据的连续变化,比如时间序列数据等。plot 函数适合绘制线图。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)# 绘制线图
plt.plot(x, y, color='b', linestyle='-', linewidth=2)
plt.title("Line Plot - Sine Wave")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()

3. 散点图

        散点图适合显示两个变量之间的关系,例如,展示变量之间是否存在关联。scatter 函数用于创建散点图。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
x = np.random.rand(50)
y = np.random.rand(50)# 绘制散点图
plt.scatter(x, y, color='r', marker='o')
plt.title("Scatter Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()

4. 柱状图

        柱状图用于比较不同类别之间的数值大小,特别适合表示分类数据。bar 函数可以创建柱状图。

import matplotlib.pyplot as plt
import numpy as np# 数据
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 5, 2]# 绘制柱状图
plt.bar(categories, values, color='g')
plt.title("Bar Chart")
plt.xlabel("Categories")
plt.ylabel("Values")
plt.show()

5. 饼图

        饼图用于显示部分与整体的比例关系。pie 函数适合创建饼图。

import matplotlib.pyplot as plt
import numpy as np# 数据
sizes = [30, 20, 25, 25]
labels = ['A', 'B', 'C', 'D']
colors = ['gold', 'lightblue', 'lightgreen', 'pink']# 绘制饼图
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)
plt.title("Pie Chart")
plt.show()

6. 直方图

        直方图展示数据分布情况,特别适合连续数据的频率分布。hist 函数用于创建直方图。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
data = np.random.randn(1000)  # 正态分布数据# 绘制直方图
plt.hist(data, bins=30, color='purple', edgecolor='black')
plt.title("Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()

除了上面的之外,还有以下类型的图表可以使用mappltlilb进行绘制:

7. 箱线图

        箱线图用于显示数据的分布情况,包括中位数、四分位数及异常值,非常适合比较不同组的数据。

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, vert=True, patch_artist=True, labels=['Group 1', 'Group 2', 'Group 3'])
plt.title("Box Plot")
plt.ylabel("Value")
plt.show()

8. 雷达图(Radar Chart)

        雷达图用于显示多变量数据,特别适合比较不同对象的特征。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
labels = np.array(['A', 'B', 'C', 'D', 'E'])
values = np.array([4, 3, 2, 5, 4])# 绘制雷达图
angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist()values = np.concatenate((values,[values[0]]))  # 闭合图形
angles += angles[:1]  # 闭合图形plt.polar(angles, values, marker='o')
plt.title("Radar Chart")
plt.xticks(angles[:-1], labels)
plt.show()

9. 条形图(Horizontal Bar Chart)

        条形图是柱状图的横向版本,适合显示较长的类别名称。

import matplotlib.pyplot as plt
import numpy as np# 数据
categories = ['Category A', 'Category B', 'Category C']
values = [10, 20, 15]# 绘制条形图
plt.barh(categories, values, color='orange')
plt.title("Horizontal Bar Chart")
plt.xlabel("Values")
plt.ylabel("Categories")
plt.show()

10. 面积图(Area Plot)

        面积图用于显示随时间变化的总量,强调数值的累积。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)# 绘制面积图
plt.fill_between(x, y1, color='skyblue', alpha=0.5, label='Sine')
plt.fill_between(x, y2, color='lightgreen', alpha=0.5, label='Cosine')
plt.title("Area Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.legend()
plt.show()

11. 曲线图(Step Plot)

        曲线图显示数据的阶梯变化,适合显示离散变化或不连续数据。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
x = np.arange(10)
y = np.random.rand(10)# 绘制曲线图
plt.step(x, y, where='mid', label='Step Plot', color='orange')
plt.title("Step Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.legend()
plt.show()

14. 概率分布图(Probability Distribution Function, PDF)

        用于展示概率分布的形状,通常与正态分布等一起使用。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
data = np.random.randn(1000)# 绘制概率分布图
plt.hist(data, bins=30, density=True, alpha=0.5, color='g', label='Histogram')
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = (1 / (np.sqrt(2 * np.pi))) * np.exp(-0.5 * (x**2))  # 正态分布函数
plt.plot(x, p, 'k', linewidth=2, label='PDF')
plt.title("Probability Distribution")
plt.xlabel("Value")
plt.ylabel("Probability")
plt.legend()
plt.show()

15. 极坐标图(Polar Plot)

        极坐标图用于展示数据在极坐标系中的分布。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
theta = np.linspace(0, 2 * np.pi, 100)
r = np.abs(np.sin(2 * theta))  # 半径# 绘制极坐标图
plt.polar(theta, r, color='purple')
plt.title("Polar Plot")
plt.show()

16. 瀑布图(Waterfall Chart)

        瀑布图用于展示数据的逐步累加,常用于财务数据的可视化。

import matplotlib.pyplot as plt# 数据
categories = ['Start', 'Increase', 'Decrease', 'Increase', 'End']
values = [100, 30, -20, 50, 0]# 计算累计值
cumulative = [sum(values[:i+1]) for i in range(len(values))]# 绘制瀑布图
plt.bar(categories, cumulative, color=['blue', 'green', 'red', 'green', 'blue'])
plt.title("Waterfall Chart")
plt.ylabel("Values")
plt.show()

17. 轨迹图(Trajectory Plot)

轨迹图展示对象在空间中的运动轨迹,常用于物理和工程领域。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
t = np.linspace(0, 10, 100)
x = np.sin(t)
y = np.cos(t)# 绘制轨迹图
plt.plot(x, y, label='Trajectory', color='orange')
plt.title("Trajectory Plot")
plt.xlabel("X Coordinate")
plt.ylabel("Y Coordinate")
plt.axis('equal')  # 保持比例
plt.legend()
plt.show()

18. 网格图(Grid Plot)

        网格图展示多个变量的散点图或其他图表的组合,通常用于展示高维数据。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)# 绘制网格图
fig, axs = plt.subplots(1, 3, figsize=(15, 5))axs[0].scatter(x, y)
axs[0].set_title('Scatter Plot')
axs[1].hist(x, bins=10)
axs[1].set_title('Histogram')
axs[2].bar(range(10), z[:10])
axs[2].set_title('Bar Chart')plt.show()

19. 频率多边形图(Frequency Polygon)

        频率多边形图展示数据的分布,类似于直方图但用线连接各个顶点。

import matplotlib.pyplot as plt
import numpy as np# 生成数据
data = np.random.randn(1000)# 绘制频率多边形图
plt.hist(data, bins=30, density=True, alpha=0.5, color='g', edgecolor='black')
plt.plot(np.sort(data), np.arange(1, len(data)+1) / len(data), color='red', linewidth=2, label='Frequency Polygon')
plt.title("Frequency Polygon")
plt.xlabel("Value")
plt.ylabel("Density")
plt.legend()
plt.show()

20. 堆叠图(Stacked Plot)

        堆叠图用于展示各部分对整体的贡献,适合展示多个数据系列的堆叠效果。

import matplotlib.pyplot as plt
import numpy as np# 数据
categories = ['A', 'B', 'C']
values1 = [3, 2, 5]
values2 = [2, 3, 1]# 绘制堆叠图
plt.bar(categories, values1, color='blue', label='Series 1')
plt.bar(categories, values2, bottom=values1, color='orange', label='Series 2')
plt.title("Stacked Bar Chart")
plt.ylabel("Values")
plt.legend()
plt.show()

21. 条形折线图(Bar Line Plot)

        条形折线图同时展示条形图和折线图,适合展示不同数据的对比。

import matplotlib.pyplot as plt
import numpy as np# 数据
categories = ['A', 'B', 'C']
values1 = [3, 5, 2]
values2 = [4, 2, 5]# 绘制条形折线图
plt.bar(categories, values1, color='blue', label='Bar Values')
plt.plot(categories, values2, color='red', marker='o', label='Line Values')
plt.title("Bar and Line Plot")
plt.ylabel("Values")
plt.legend()
plt.show()


http://www.ppmy.cn/server/137679.html

相关文章

npm入门教程13:npm workspace功能

一、npm Workspace概述 npm Workspace允许开发者在单个顶级根包下管理多个npm包,这些包可以相互依赖且共享相同的node_modules目录。这一功能极大地简化了多包管理的复杂性,提高了开发效率。 二、npm Workspace的配置 要启用npm Workspace功能&#x…

大数据-202 数据挖掘 机器学习理论 - 决策树 sklearn 绘制决策树 防止过拟合

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

Python 自动化运维:CI/CD与DevOps实践的深度探讨

Python 自动化运维:CI/CD与DevOps实践的深度探讨 目录 🚀 持续集成与持续部署基础🔧 使用GitHub Actions或Jenkins实现自动化构建与部署📦 Docker基础与容器化应用的实现☸️ Kubernetes的基本概念与集群管理 1. 🚀 …

STM32学习-keil的编译过程

首先我们简单了解下MDK的编译过程,它与其它编译器的工作过程是类似的 这是一个大致的流程 我们可以在工程中找到批处理文件看到更加详细的流程 批处理文件如下,前面几行是一些固定的信息,包括cpu类型,时钟,路径地址等信…

基于SSM+小程序的购物管理系统1

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的购物管理系统1,可以实现首页、个人中心、商品分类管理、商品信息管理、特价商品管理、用户管理、留言板管理、系统管理、订单管理等功能。方便用户对首页、商品…

Vue 权限管理

vue 中,比较常见的需要进行权限管控的权限控制实现思路有四条:、 菜单的控制 在登录请求中,会得到权限数据,当然,这个需要后端返回数据的支持,前端根据权限数据,展示对应的菜单,单…

大数据-201 数据挖掘 机器学习理论 - 决策树 局部最优 剪枝 分裂 二叉分裂

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

如何用fastapi集成pdf.js 的viewer.html ,并支持 mjs

fastapi 框架 集成pdf.js 的 viewer.html?file=***,支持跨域,支持.mjs .wasm .pdf 给出完整示例代码 要在 FastAPI 框架中集成 pdf.js 的 viewer.html,并支持跨域访问以及 .mjs、.wasm、.pdf 文件的正确加载,可以按照以下步骤进行。下面提供一个完整的示例,包括项目结构…