Python----数据分析(Matplotlib三:绘图二:箱图,散点图,饼图,热力图,3D图)

一、箱图

箱图(Box Plot),又称为箱形图、箱线图、盒式图、盒状图或盒须图,是一种用于展示数据分布情况的统计图表

箱图通过显示数据的中位数、上下四分位数(Q1和Q3)、异常值和数据的分布范围,提供了对数据整体特征的直观认识。

python 复制代码
boxplot(data) 

1.1组成部分和特点

箱体(Box): 箱体代表数据集的四分位距,即上四分位数(Q3)和下四分位数(Q1)之间的区域。箱体的长度表示数据的分布范围,越长表示数据的变异性越大

中位数线(Median Line): 在箱体内部通常有一条横线,表示数据的中位数,即将数据集分为两半的位置

须(Whiskers): 须是延伸自箱体的线段,用于表示数据的整体范围。通常,须的长度限制在1.5倍的四分位距之内。超过这个范围的数据点被认为是潜在的异常值

异常值(Outliers): 箱图中的异常值是须之外的数据点,它们可能是数据中的极端值。异常值可以帮助识别数据中的离群观测

1.2、用途和适用场景

  1. 展示数据分布: 箱图可以清晰地展示数据集的整体分布情况,包括中位数、上下四分位数和异常值,提供了对数据分布形状的直观认识

  2. 观察中心位置和离散度: 通过箱图,可以轻松地识别数据的中位数和四分位数,帮助观察者了解数据的中心位置和变异性

  3. 检测异常值: 箱图有助于识别数据中的异常值,这些值可能是与数据集的整体分布不同的极端值

  4. 比较不同组别的数据分布: 箱图可以用于比较不同类别或组别的数据分布情况,从而观察它们之间的差异

  5. 评估对称性和偏斜: 箱图的形状有助于观察数据的对称性或偏斜,这对于了解数据的分布特征非常有用

  6. 用于统计分析和质量控制: 箱图常用于统计学分析和质量控制中,帮助决策者识别问题、制定策略和改进流程

python 复制代码
import matplotlib.pyplot as plt
data = [randint(1,100) for i in range(100)]
data.append(-60)
plt.boxplot(data)

二、散点图

散点图是一种用于显示两个变量之间关系的图表,每个点代表数据集中的一个观测值。

python 复制代码
scatter(x,y)

主要作用和适用场景

  1. 展示变量之间的关系: 散点图适用于展示两个变量之间的关系,帮助观察者了解它们之间的趋势、相关性或模式

  2. 识别趋势: 通过观察散点图中的点的分布,可以判断是否存在线性或非线性的趋势。这有助于理解变量之间的关联性

  3. 发现异常值: 散点图可以用于识别数据集中的异常值,即与其他数据点明显不同的观测值

  4. 比较不同群体或类别的关系: 如果数据可以按照不同的群体或类别划分,散点图可以用于比较这些群体或类别之间的变量关系

  5. 显示数据的分布: 在散点图中,密集的点集中通常表示较高的数据密度,反之表示较低的密度,从而有助于观察数据的分布情况

  6. 用于回归分析: 散点图是回归分析的重要工具,可以用于评估两个变量之间是否存在趋势,并用最佳拟合线(回归线)来描述这种趋势

python 复制代码
from matplotlib import pyplot as plt


plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


x = [161.2, 167.5, 159.5, 157.0, 155.8, 170.0, 159.1, 166.0, 176.2, 160.2, 172.5, 170.9, 172.9, 153.4, 160.0, 147.2, 168.2, 175.0, 157.0, 167.6, 159.5, 175.0, 166.8, 176.5, 170.2, 174.0, 173.0, 179.9, 170.5, 160.0, 154.4, 162.0, 176.5, 160.0, 152.0, 162.1, 170.0, 160.2, 161.3, 166.4, 168.9, 163.8, 167.6, 160.0, 161.3, 167.6, 165.1, 160.0, 170.0, 157.5, 167.6, 160.7, 163.2, 152.4, 157.5, 168.3, 180.3, 165.5, 165.0, 164.5, 156.0, 160.0, 163.0, 165.7, 161.0, 162.0, 166.0, 174.0, 172.7, 167.6, 151.1, 164.5, 163.5, 152.0, 169.0, 164.0, 161.2, 155.0, 170.0, 176.2, 170.0, 162.5, 170.3, 164.1, 169.5, 163.2, 154.5, 159.8, 173.2, 170.0, 161.4, 169.0, 166.2, 159.4, 162.5, 159.0, 162.8, 159.0, 179.8, 162.9, 161.0, 151.1, 168.2, 168.9, 173.2, 171.8, 178.0, 164.3, 163.0, 168.5, 166.8, 172.7, 163.5, 169.4, 167.8, 159.5, 167.6, 161.2, 160.0, 163.2, 162.2, 161.3, 149.5, 157.5, 163.2, 172.7, 155.0, 156.5, 164.0, 160.9, 162.8, 167.0, 160.0, 160.0, 168.9, 158.2, 156.0, 160.0, 167.1, 158.0, 167.6, 156.0, 162.1, 173.4, 159.8, 170.5, 159.2, 157.5, 161.3, 162.6, 160.0, 168.9, 165.1, 162.6, 165.1, 166.4, 160.0, 152.4, 170.2, 162.6, 170.2, 158.8, 172.7, 167.6, 162.6, 167.6, 156.2, 175.2, 172.1, 162.6, 160.0, 165.1, 182.9, 166.4, 165.1, 177.8, 165.1, 175.3, 154.9, 158.8, 172.7, 168.9, 161.3, 167.6, 165.1, 175.3, 157.5, 163.8, 167.6, 165.1, 165.1, 168.9, 162.6, 164.5, 176.5, 168.9, 175.3, 159.4, 160.0, 170.2, 162.6, 167.6, 162.6, 160.7, 160.0, 157.5, 162.6, 152.4, 170.2, 165.1, 172.7, 165.1, 170.2, 170.2, 170.2, 161.3, 167.6, 167.6, 165.1, 162.6, 152.4, 168.9, 170.2, 175.2, 175.2, 160.0, 165.1, 174.0, 170.2, 160.0, 167.6, 167.6, 167.6, 154.9, 162.6, 175.3, 171.4, 157.5, 165.1, 160.0, 174.0, 162.6, 174.0, 162.6, 161.3, 156.2, 149.9, 169.5, 160.0, 175.3, 169.5, 160.0, 172.7, 162.6, 157.5, 176.5, 164.4, 160.7, 174.0, 163.8]
y = [51.6, 59.0, 49.2, 63.0, 53.6, 59.0, 47.6, 69.8, 66.8, 75.2, 55.2, 54.2, 62.5, 42.0, 50.0, 49.8, 49.2, 73.2, 47.8, 68.8, 50.6, 82.5, 57.2, 87.8, 72.8, 54.5, 59.8, 67.3, 67.8, 47.0, 46.2, 55.0, 83.0, 54.4, 45.8, 53.6, 73.2, 52.1, 67.9, 56.6, 62.3, 58.5, 54.5, 50.2, 60.3, 58.3, 56.2, 50.2, 72.9, 59.8, 61.0, 69.1, 55.9, 46.5, 54.3, 54.8, 60.7, 60.0, 62.0, 60.3, 52.7, 74.3, 62.0, 73.1, 80.0, 54.7, 53.2, 75.7, 61.1, 55.7, 48.7, 52.3, 50.0, 59.3, 62.5, 55.7, 54.8, 45.9, 70.6, 67.2, 69.4, 58.2, 64.8, 71.6, 52.8, 59.8, 49.0, 50.0, 69.2, 55.9, 63.4, 58.2, 58.6, 45.7, 52.2, 48.6, 57.8, 55.6, 66.8, 59.4, 53.6, 73.2, 53.4, 69.0, 58.4, 56.2, 70.6, 59.8, 72.0, 65.2, 56.6, 105.2, 51.8, 63.4, 59.0, 47.6, 63.0, 55.2, 45.0, 54.0, 50.2, 60.2, 44.8, 58.8, 56.4, 62.0, 49.2, 67.2, 53.8, 54.4, 58.0, 59.8, 54.8, 43.2, 60.5, 46.4, 64.4, 48.8, 62.2, 55.5, 57.8, 54.6, 59.2, 52.7, 53.2, 64.5, 51.8, 56.0, 63.6, 63.2, 59.5, 56.8, 64.1, 50.0, 72.3, 55.0, 55.9, 60.4, 69.1, 84.5, 55.9, 55.5, 69.5, 76.4, 61.4, 65.9, 58.6, 66.8, 56.6, 58.6, 55.9, 59.1, 81.8, 70.7, 56.8, 60.0, 58.2, 72.7, 54.1, 49.1, 75.9, 55.0, 57.3, 55.0, 65.5, 65.5, 48.6, 58.6, 63.6, 55.2, 62.7, 56.6, 53.9, 63.2, 73.6, 62.0, 63.6, 53.2, 53.4, 55.0, 70.5, 54.5, 54.5, 55.9, 59.0, 63.6, 54.5, 47.3, 67.7, 80.9, 70.5, 60.9, 63.6, 54.5, 59.1, 70.5, 52.7, 62.7, 86.3, 66.4, 67.3, 63.0, 73.6, 62.3, 57.7, 55.4, 104.1, 55.5, 77.3, 80.5, 64.5, 72.3, 61.4, 58.2, 81.8, 63.6, 53.4, 54.5, 53.6, 60.0, 73.6, 61.4, 55.5, 63.6, 60.9, 60.0, 46.8, 57.3, 64.1, 63.6, 67.3, 75.5, 68.2, 61.4, 76.8, 71.8, 55.5, 48.6, 66.4, 67.3]
plt.scatter(x, y,color='tab:blue',alpha=0.5)

三、饼图

饼图(Pie Chart)是一种常见的数据可视化图表,主要用于展示数据的相对比例。饼图通过将整体分割成扇形,每个扇形的角度大小表示相应类别的数据占总体的比例。

python 复制代码
pie(data)

主要作用和适用场景

  1. 显示相对比例: 饼图最主要的作用是显示不同类别或部分的数据在整体中所占的相对比例,通过扇形的大小直观地表达这些比例关系

  2. 强调部分与整体的关系: 饼图适用于突出各部分数据在整体中的比重,使观察者更容易理解每个类别对总体的贡献程度

  3. 用于少量类别的数据: 饼图通常适用于展示少量(2-7个)类别的数据,因为过多的扇形会使图表复杂难以解读

  4. 比较各类别的重要性: 饼图允许观察者直观比较各类别的相对重要性,即使这些类别的数值较小也能清晰呈现

3.1、常规饼图

python 复制代码
labels = ['鱼', '猫', '狗', '鹦鹉']
sizes = [15, 30, 45, 10]
plt.pie(sizes,labels=labels,autopct='%1.1f%%',colors=['tab:red','tab:blue','tab:green','tab:orange'])
plt.legend()

3.2、设置字体

python 复制代码
labels = '鱼', '猫', '狗', '鹦鹉'
sizes = [15, 30, 45, 10]
plt.pie(sizes,labels=labels,autopct='%1.1f%%',
    textprops={'fontsize':20,'color':'tab:blue'})
plt.legend()

3.3、互换内容位置

python 复制代码
labels = '鱼', '猫', '狗', '鹦鹉'
sizes = [15, 30, 45, 10]
plt.pie(sizes,labels=labels,
    pctdistance=1.2,  # 设置值距离圆心的距离
    labeldistance=0.6, # 设置标签距离圆心的距离
    autopct='%1.1f%%',colors=['tab:red','tab:blue','tab:green','tab:orange'])
plt.legend()

3.4、分离扇区

python 复制代码
labels = '鱼', '猫', '狗', '鹦鹉'
sizes = [15, 30, 45, 10]


explode = (0, 0.1, 0.1, 0)
plt.pie(sizes,labels=labels,
    explode=explode, # 设置扇形的偏移量
    autopct='%1.1f%%',colors=['tab:red','tab:blue','tab:green','tab:orange'])
plt.legend(loc='best')

3.5、 空心饼图

python 复制代码
labels = '鱼', '猫', '狗', '鹦鹉'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0.1, 0)
plt.pie(sizes,labels=labels,
    wedgeprops={'width':0.4},# 设置空心
    pctdistance=0.8, # 设置标签距离圆心的距离
    explode=explode, # 设置扇形的偏移量
    autopct='%1.1f%%',colors=['tab:red','tab:blue','tab:green','tab:orange'])
plt.legend(loc='best')

四、热力图

热力图(Heatmap)是一种通过颜色编码来显示数据矩阵中各元素相对值的图表,它主要用于呈现数据的相对密度、强度或关联程度。

python 复制代码
imshow(data)

主要作用和适用场景

  1. 显示数据矩阵的模式: 热力图适用于显示数据矩阵中各元素之间的相对关系,通过颜色的深浅反映元素的相对值大小

  2. 可视化关联程度: 热力图能够清晰地表达不同元素之间的关联程度,特别是在表示相关性矩阵或相似性矩阵时,颜色的变化可以直观地展示变量之间的相关性

  3. 观察趋势和模式: 热力图在时间序列分析中常用于观察数据的趋势和模式。时间和另一个维度的数据可以在热力图中以两个轴展示,颜色则表示数据的强度

  4. 聚类分析: 热力图可用于辅助聚类分析,帮助观察者识别数据集中的分组或模式,尤其是在生物学、金融和市场研究等领域

  5. 异常值检测: 通过热力图,可以识别数据中的异常值,因为异常值通常在热力图中表现为与其他元素不同颜色的点

  6. 地理信息可视化: 热力图可以用于可视化地理信息数据,如人口密度、温度分布等,通过颜色的变化呈现不同地区的相对值

  7. 可视化深度学习中的权重: 在深度学习中,热力图常被用于可视化神经网络的权重,以便更好地理解网络的学习过程

常规热力图

python 复制代码
days = [
  'Saturday', 'Friday', 'Thursday',
  'Wednesday', 'Tuesday', 'Monday', 'Sunday'
]
hours = [
  '12a', '1a', '2a', '3a', '4a', '5a', '6a',
  '7a', '8a', '9a', '10a', '11a',
  '12p', '1p', '2p', '3p', '4p', '5p',
  '6p', '7p', '8p', '9p', '10p', '11p'
]
data = [
   [5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 1, 1, 3, 4, 6, 4, 4, 3, 3, 2, 5], 
   [7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 2, 6, 9, 11, 6, 7, 8, 12, 5, 5, 7, 2], 
   [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 1, 9, 8, 10, 6, 5, 5, 5, 7, 4, 2, 4],
   [7, 3, 0, 0, 0, 0, 0, 0, 1, 0, 5, 4, 7, 14, 13, 12, 9, 5, 5, 10, 6, 4, 4, 1], 
   [1, 3, 0, 0, 0, 1, 0, 0, 0, 2, 4, 4, 2, 4, 4, 14, 12, 1, 8, 5, 3, 7, 3, 0], 
   [2, 1, 0, 3, 0, 0, 0, 0, 2, 0, 4, 1, 5, 10, 5, 7, 11, 6, 0, 5, 3, 4, 2, 0], 
   [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 3, 4, 0, 0, 0, 0, 1, 2, 2, 6]
]
# 绘制热力图
plt.imshow(data)

带样式

python 复制代码
# 创建画布
plt.figure(figsize=(20,10))
# 绘制热力图
plt.imshow(data,cmap='rainbow')
# 设置x轴刻度
plt.xticks(range(24),hours)
# 设置y轴刻度
plt.yticks(range(7),days)
# 显示颜色条
plt.colorbar()
# 显示数值
for i,d in enumerate(data):
  for j,h in enumerate(d):
    plt.text(j,i,data[i][j],ha='center',va='center',color='w')

五、3D图

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = np.linspace(-20, 20, 20)
y = np.linspace(-20, 20, 20)
x, y = np.meshgrid(x, y)

z = x**2 + y**2

# 创建3D图形
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

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

# 设置标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# 显示图形
plt.show(block=True)

5.1、置画布为3D

python 复制代码
# 绘制图形
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

5.2、3D折线图

python 复制代码
# 绘制3D折线图
# 准备数据
x = [1, 2, 3, 4, 5, 6, 7]
y = [3, 5, 6, 15, 17, 18, 2]
z = [1, 2, 3, 4, 5, 6, 7]


# 绘制图形
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
plt.plot(x, y, z)

5.3、3D散点图

python 复制代码
x = [randint(1,20) for i in range(100)]
y = [randint(1,20) for i in range(100)]
z = [randint(1,20) for i in range(100)]
# 绘制图形
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
plt.scatter(x, y, z, color='tab:red', marker='*')

5.4、3D条图

python 复制代码
x = range(3)


# 绘制条图
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
colors = ['tab:red', 'tab:blue', 'tab:green']


for i in x:
  y = [randint(1,20) for i in range(6)]
  z = [randint(5,20) for i in range(6)]
  plt.bar(y, z, zs=i,zdir='x', alpha=0.8,width=1.8,color=[colors[i] for _ in range(6)])
  plt.xticks(range(0,3,1))
  ax.set_xlabel('x轴')
  ax.set_ylabel('y轴')
  ax.set_zlabel('z轴')
相关推荐
梦想是成为算法高手8 分钟前
带你从入门到精通——自然语言处理(五. Transformer中的自注意力机制和输入部分)
pytorch·python·深度学习·自然语言处理·transformer·位置编码·自注意力机制
河北小博博15 分钟前
一文掌握Python Falcon框架
开发语言·python
小爬虫程序猿32 分钟前
利用Python爬虫按图搜索1688商品(拍立淘):实战指南
爬虫·python·图搜索算法
数据小小爬虫44 分钟前
利用Python爬虫按图搜索1688商品(拍立淘)
爬虫·python·图搜索算法
小赖同学啊1 小时前
PyTorch 中实现模型训练看板实时监控训练过程中的关键指标
人工智能·pytorch·python
weixin_468466852 小时前
C++、C#、python调用OpenCV进行图像处理耗时对比
c++·图像处理·python·opencv·c#·机器视觉·opencvsharp
Y1nhl2 小时前
数据挖掘校招面经二
人工智能·python·深度学习·算法·机器学习·数据挖掘
小馒头学python2 小时前
【AIGC实战】蓝耘元生代部署通义万相2.1文生图,结尾附上提示词合集
python·学习·算法·aigc
黄金旺铺2 小时前
【基于手势识别的音量控制系统】
python·mediapipe·手势·手势控制音量
撞南墙者2 小时前
基于Qwen-VL的手机智能体开发
开发语言·python·智能手机