Python Matplotlib数据可视化 绘制箱形图、散点图和直方图

深渊向深渊呼唤

Python中可以通过matplotlib模块的pyplot子库来完成绘图。Matplotlib可用于创建高质量的图表和图形,也可以用于绘制和可视化结果。matplotlib是Python优秀的数据可视化第三方库,matplotlib.pyplot是绘制种类可视化图形的命令子库,相当于快捷方式 import matplotlib.pyplot as plt.
本文用python对一批运动员数据进行操作,读取数据、数据预处理、matplotlib数据可视化,熟悉用python进行数据分析和可视化的基本方法,并绘制箱形图、散点图和直方图。

数据集部分截图如下:
在这里插入图片描述

1. 绘制箱形图

箱线图,又称箱形图 (boxplot) 或盒式图,不同于一般的折线图、柱状图或饼图等传统图表,只是数据大小、占比、趋势等等的呈现,其包含一些统计学的均值、分位数、极值等等统计量,因此,该图信息量较大,不仅能够分析不同类别数据平均水平差异(需在箱线图中加入均值点),还能揭示数据间离散程度、异常值、分布差异等等。

使用箱形图展示出不同技术等级 (Skill_Moves) 的运动员的评分 (Rating) 分布情况,即横轴为运动员的技术等级,纵轴为评分。
在这里插入图片描述
在这里插入图片描述

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

df = pd.read_csv('soccer.csv', encoding='gbk')
labels = [f'等级{i}' for i in ['一', '二', '三', '四', '五']]

data1 = df[df['Skill_Moves'] == 1]['Rating']
data2 = df[df['Skill_Moves'] == 2]['Rating']
data3 = df[df['Skill_Moves'] == 3]['Rating']
data4 = df[df['Skill_Moves'] == 4]['Rating']
data5 = df[df['Skill_Moves'] == 5]['Rating']

# 设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
# 设置图形显示风格
plt.style.use('ggplot')
fig, ax = plt.subplots()
box_plot = ax.boxplot((data1, data2, data3, data4, data5), labels=labels,
            boxprops={'color': 'black'}, showmeans=True, patch_artist=True,
            )

colors = ['pink', 'blue', 'green', 'yellow', 'red']

# 填充箱子颜色
for patch, color in zip(box_plot['boxes'], colors):
    patch.set(facecolor=color)

# 设置箱子两端线的属性
for whisker in box_plot['whiskers']:
    whisker.set(color='purple', linewidth=2)
# 设置顶端和末端线条的属性
for cap in box_plot['caps']:
    cap.set(color='g', linewidth=3)
# 设置中位数的属性
for median in box_plot['medians']:
    median.set(color='black', linewidth=3)

plt.xlabel('技术等级')
plt.ylabel('评分')
plt.title('不同技术等级的运动员评分分布箱形图')

plt.show()

在这里插入图片描述

2. 绘制散点图

绘制年龄 (Age) 与评分 (Rating) 构成的散点图

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

df= pd.read_csv('soccer.csv', encoding='gbk')
age, rating = list(df['Age']), list(df['Rating'])

# 设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
# 设置图形显示风格
plt.style.use('ggplot')
# 设置大小  像素
plt.figure(figsize=(9, 6), dpi=100)

# 绘制散点图
plt.scatter(age, rating)

# 添加描述信息
plt.title('运动员年龄与评分散点图')
plt.xlabel('年龄')
plt.ylabel('评分')
plt.show()

在这里插入图片描述

3. 绘制直方图

利用直方图查看运动员的年龄(Age)分布

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

ages = list(pd.read_csv('soccer.csv', encoding='gbk')['Age'])
ages.sort()

# 设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
# 设置图形显示风格
plt.style.use('ggplot')
plt.figure(figsize=(9, 6), dpi=100)

bin_width = 1  # 设置组距   整除
num_bin = (max(ages) - min(ages)) // bin_width    # 组数

# 绘制直方图  x:指定要绘制直方图的数据
# bins:指定直方图条形的个数  color:设置直方图的填充色    edgecolor:指定直方图的边界色
plt.hist(x=ages, bins=num_bin, color='blue', edgecolor='k', label='直方图')   # 为直方图呈现标签
plt.xticks(range(20, 50, 5))     # 设置x轴刻度

# 添加描述信息
plt.xlabel('年龄区间')
plt.ylabel('频数')
plt.title('年龄频数分布直方图')

plt.legend()
plt.show()

在这里插入图片描述

栏目