前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python Matplotlib数据可视化 绘制箱形图、散点图和直方图

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

作者头像
叶庭云
修改2021-01-23 14:14:44
4.2K0
修改2021-01-23 14:14:44
举报
文章被收录于专栏:Python进阶之路Python进阶之路

文章目录

Python中可以通过matplotlib模块的pyplot子库来完成绘图。Matplotlib可用于创建高质量的图表和图形,也可以用于绘制和可视化结果。matplotlib是Python优秀的数据可视化第三方库,matplotlib.pyplot是绘制种类可视化图形的命令子库,相当于快捷方式 import matplotlib.pyplot as plt.

本文用python对一批运动员数据进行操作,读取数据、数据预处理、matplotlib数据可视化,熟悉用python进行数据分析和可视化的基本方法,并绘制箱形图、散点图和直方图。

数据集部分截图如下:

1. 绘制箱形图

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

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

代码语言:txt
复制
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) 构成的散点图

代码语言:txt
复制
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)分布

代码语言:txt
复制
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()

作者:叶庭云 微信公众号:修炼Python CSDN:https://yetingyun.blog.csdn.net/ 本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。 觉得文章对你有帮助、让你有所收获的话,期待你的点赞呀,不足之处,也可以在评论区多多指正。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 绘制箱形图
  • 2. 绘制散点图
  • 3. 绘制直方图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档