AI基础:数据可视化简易入门(Matplotlib和Seaborn)

embedded/2025/2/25 23:29:24/

Matplotlib是一个Python的2D绘图库,它以各种硬拷贝和跨平台的交互式环境生成出版质量级别的图形。
Seaborn是基于Python且非常受欢迎的图形可视化库,在Matplotlib的基础上进行了更高级别的封装,使作图更加方便快捷。

1 Matplotlib

1.1 通过figure()函数创建画布

绘制简单的图形

import numpy as np
import matplotlib.pyplot as plt# 生成包含100~200的数组
data = np.arange(100, 201)
# 绘制data图形
plt.plot(data)
plt.show()

运行后如图:
图1
创建新的空白画布

# 创建新的画布, 返回figure实例
# figure_obj = plt.figure()

实践

data2 = np.arange(200, 301)
# 背景变为灰色
plt.figure(facecolor='gray')
plt.plot(data2)
plt.show()

在这里插入图片描述

1.2 通过subplot()函数创建单个子图

nums = np.arange(0, 101)
# 分成2*2的矩阵区域,占用编号为1的区域,即第一行第一列的子图
plt.subplot(221)
# 在选中的子图上作图
plt.plot(nums, nums)
# 分成2*2的矩阵区域,占用编号为2的区域,即第一行第二列
plt.subplot(222)
plt.plot(nums, -nums)
# 分成2*1的矩阵区域,占用编号为2的区域,即第2行的子图
plt.subplot(212)
plt.plot(nums, nums**2)
plt.show()

在这里插入图片描述

1.3 通过subplots()函数创建多个子图

plt.subplots()函数是Matplotlib库中用于创建多个子图的便捷方法。它一次性创建并返回一个包含所有子图的Figure对象和Axes对象。

nums = np.arange(1, 101)
# 分成2*2的矩阵区域,返回子图数组axes
fig, axes = plt.subplots(2, 2)
ax1 = axes[0, 0]
ax2 = axes[0, 1]
ax3 = axes[1, 0]
ax4 = axes[1, 1]
# 在选中的子图上作图
ax1.plot(nums, nums)
ax2.plot(nums, -nums)
ax3.plot(nums, nums**2)
ax4.plot(nums, np.log(nums))
plt.show()

运行如图:
在这里插入图片描述

1.4 通过add_subplot()方法添加和选中子图

# 创建Figure的实例
fig = plt.figure()
# 添加子图
fig.add_subplot(2, 2, 1)
fig.add_subplot(2, 2, 2)
fig.add_subplot(2, 2, 4)
fig.add_subplot(2, 2, 3)
# 在子图上作图
random_arr = np.random.rand(100)
# 默认是在最后一次使用subplot的位置上作图,即编号为3的位置
plt.plot(random_arr)
plt.show()

运行结果:
在这里插入图片描述

1.5 添加各类标签

data = np.arange(0, 1.1, 0.01)
# 添加标题
plt.title("Title")
# 添加x轴的名称
plt.xlabel("x")
# 添加y轴名称
plt.ylabel("y")
# 设置x轴和y轴的刻度
plt.xticks([0, 0.5, 1])
plt.yticks([0, 0.5, 1.0])
plt.plot(data, data**2)
plt.plot(data, data**3)
plt.legend(["y=x^2", "y=x^3"])
plt.show()
xticks中参数详解
ticks: 指定 x 轴刻度值的位置,可以是一个列表或者数组。如果传入空列表,则不显示 x 轴刻度。
labels: 指定 x 轴刻度值的显示标签,可以是一个列表或者数组。只有当 ticks 参数有输入值时,该参数才能传入参数。
fontproperties: 指定 x 轴刻度值的字体属性,例如字体大小、字体颜色等。
rotation: 指定 x 轴刻度值的旋转角度。例如 rotation=90 表示将刻度值顺时针旋转 90 度。
ha: 指定 x 轴刻度值的水平对齐方式,可以是 'left'、'center' 或者 'right'。
minor: 指定是否设置次要刻度。设置为 True 则会在主要刻度之间添加次要刻度。plt.xticks([1, 2, 3, 4, 5], ['A', 'B', 'C', 'D', 'E'], rotation=30)
在这个例子中,plt.xticks 函数用于将 x 轴的刻度设置为 1 到 5,并且每个刻度对应的标签分别是 'A' 到 'E'。同时,rotation=30 参数使得标签文本旋转了 30 度。

在这里插入图片描述

# 产生-3到3之间的50点
x = np.linspace(-3, 3, 50)
# 构造函数
y1 = 2*x+1
y2 = x**2
# 确保编号为 3 的图形被创建或激活,并设置其尺寸为 8×5 英寸
plt.figure(num=3, figsize=(8, 5))
plt.plot(x, y2)
# 红色虚线直线宽度默认1.0
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
# 设置x轴范围
plt.xlim((-1, 2))
# 设置y轴范围
plt.ylim((-2, 3))
# 设置坐标轴含义,注:英文直接写,中文需要后边加上fontproperties属性
# u代表unicode编码
# SimHei 黑体
# fontsize=16 设置标签文本的字体大小为 16 磅
plt.xlabel(u'价格', fontproperties='SimHei', fontsize=16)
plt.ylabel(u'利润', fontproperties='SimHei', fontsize=16)
# 设置x轴刻度
# -1到2区间,5个点,4个区间,平均分:[-1., -0.25, 0.5, 1.25, 2.]
new_ticks = np.linspace(-1, 2, 5)
print(new_ticks)
plt.xticks(new_ticks)# 设置y轴刻度
'''
设置对应坐标用汉字或英文表示,后边的属性fontproperties表示中文可见,不乱吗,
内部英文$$表示将英文括起来,r表示正则匹配,通过这个方式将其变为好看的字体
如果要显示特殊字符,比如阿尔法,则用转义符\alpha,前面的\ 表示转义
'''
plt.yticks([-2, -1.8, -1, 1.22, 3.],['非常糟糕', '糟糕', r'$good\ \alpha$', r'$really\ good$', '超级好'],fontproperties='SimHei',fontsize=12)
plt.show()

输出:
在这里插入图片描述

1.6 绘制常见类型图表

# 创建随机数组
# 生成一个包含 100个服从标准正态分布(均值为 0,标准差为 1)的随机数的一维数组
arr = np.random.randn(100)
# 绘制直方图
# 将数据划分为8个区块,直方图颜色是绿色,透明度为0.7
plt.hist(arr, bins=8, color='g', alpha=0.7)
plt.show()

在这里插入图片描述

# 创建包含整数0~51的数组,用于表示x的数据
x = np.arange(51)
# 创建另一数组,用于表示y轴的数据
y = np.random.rand(51)*10
# 绘制数据散点图
plt.scatter(x, y)
plt.show()

在这里插入图片描述

# 创建包含0~4的一维数组
x = np.arange(5)
# 从上下限范围内随机选取整数,创建两个2行5列的数组
y1, y2 = np.random.randint(1, 31, size=(2, 5))
# 条形宽度
width = 0.25
# 创建一个子图
ax = plt.subplot(1, 1, 1)
# 绘制红色的柱形图
ax.bar(x, y1, width, color='r')
# 绘制另一个绿色的柱形图
ax.bar(x+width, y2, width, color='g')
# 设置x轴的刻度
ax.set_xticks(x+width)
# 设置x轴的刻度标签
ax.set_xticklabels(['January', 'February', 'March', 'April', 'May'])
plt.show()

在这里插入图片描述

data = np.arange(1, 3, 0.3)
# 绘制直线,颜色为青色,标记为"x", 线型为长虚线
plt.plot(data, color='c', marker="x", linestyle="--")
# 绘制直线,颜色为品红,标记为实心圆圈,线型为短虚线
plt.plot(data+1, color='m', marker="o", linestyle=":")
# 绘制直线,颜色为黑色,标记为五边形,线性为短点相间线
plt.plot(data+2, color='k', marker='p', linestyle="-.")
# 或者简写为下面这种
# plt.plot(data, 'cx--', data+1, 'mo:', data+2, 'kp-.')
plt.show()

在这里插入图片描述

2 seaborn-绘制统计图形

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

2.1 可视化数据的分布

# 显式调用set()获取默认绘图
sns.set()
# 确定随机数生成器的种子
np.random.seed(0)
# 生成随机数组
arr = np.random.randn(100)
# 生成10个块
ax = sns.distplot(arr, bins=10)
plt.show()

在这里插入图片描述

data = np.random.randint(0, 100, 500)
# 绘制核密度估计曲线,kde指定类型为核密度曲线
sns.displot(data, kind='kde', rug=True)
# 书上是下面这个,但我电脑报错,Rectangle.set() got an unexpected keyword argument 'hist',有大佬知道为啥吗?
# sns.displot(data, hist=False, rug=True)
plt.show()

在这里插入图片描述

dataframe = pd.DataFrame({"x": np.random.randn(500), "y": np.random.randn(500)})
# 绘制散布图
sns.jointplot(x="x", y="y", data=dataframe)
plt.show()

在这里插入图片描述

dataframe = pd.DataFrame({"x": np.random.randn(500), "y": np.random.randn(500)})
# 绘制二维直方图
sns.jointplot(x="x", y="y", data=dataframe, kind="hex")
plt.show()

在这里插入图片描述

# 核密度估计
sns.jointplot(x="x", y="y", data=dataframe, kind="kde")

在这里插入图片描述
后边的内容因为书上是从网上加载下载的资料,笔者电脑好像下不了,就先写道这吧


http://www.ppmy.cn/embedded/167143.html

相关文章

解锁健康密码,拥抱养生生活

在快节奏的现代生活中,人们愈发重视健康养生,追求身心的和谐与平衡。养生并非高深莫测的学问,而是融入日常生活的点滴智慧,从饮食、运动到心态,每一个选择都在为健康加分。 饮食是养生的基石。遵循 “五谷为养&#xf…

机器学习数学基础:37.偏相关分析

偏相关分析教程 一、偏相关分析是什么 在很多复杂的系统中,比如地理系统,会有多个要素相互影响。偏相关分析就是在这样多要素构成的系统里,不考虑其他要素的干扰,专门去研究两个要素之间关系紧密程度的一种方法。用来衡量这种紧…

使用django调用deepseek api,搭建ai网站

一、deepseek简介 DeepSeek是一家人工智能公司,专注于开发先进的人工智能模型和技术。以下是关于DeepSeek的一些详细介绍: 1.公司背景 DeepSeek由杭州深度求索人工智能基础技术研究有限公司开发,致力于通过创新的技术和算法,推…

使用 Docker 部署 Flask 应用

使用 Docker 部署 Flask 应用 一、引言 在现代软件开发中,应用的部署和环境管理是至关重要的环节。传统的部署方式常常会遇到 “在我机器上能运行,在你机器上不行” 的问题,而 Docker 的出现很好地解决了这个痛点。Docker 是一个用于开发、部署和运行应用程序的开放平台,…

在windows下安装windows+Ubuntu16.04双系统(上)

这篇文章的内容主要来源于这篇文章,给文章很详细的介绍了如何从windows下安装windowsubuntu16.04双系统。我刚开始装双系统都是参照这个方法,该作者前后更新了两个版本,在这里对其稍微进行整理一下。 一、准备:(这里推…

PyTorch 源码学习:Dispatch Autograd Operators

对于 PyTorch 的动态计算图 (Dynamic Computation Graph) 模式来说,算子 (Operators) 注册、分发 (Dispatch) 机制和自动微分 (Autograd) 机制是至关重要的,了解这部分内容有助于更好地理解 PyTorch 动态计算图的运行机制。本文分享自己在学习 PyTorch 源…

【深度学习】Pytorch的深入理解和研究

一、Pytorch核心理解 PyTorch 是一个灵活且强大的深度学习框架,广泛应用于研究和工业领域。要深入理解和研究 PyTorch,需要从其核心概念、底层机制以及高级功能入手。以下是对 PyTorch 的深入理解与研究的详细说明。 1. 概念 动态计算图(D…

算法日常刷题笔记(1)

为保持刷题的习惯 计划一天刷3-5题 然后一周总计汇总一下 这是第一篇笔记 笔记时间为2月10日到2月17日 第一天 袋子里最少数目的球 袋子里最少数目的球https://leetcode.cn/problems/minimum-limit-of-balls-in-a-bag/ 给你一个整数数组 nums ,其中 nums[i] 表示…