Python数据分析可视化——雷达图、箱型图

今天带来关于雷达图与箱型图的示例

1.雷达图

雷达图是一种显示多变量数据的图形方法。通常从同一中心点开始等角度间隔地射出三个以上的轴,每个轴代表一个定量变量,各轴上的点依次连接成线或几何图形。

雷达图可以用来在变量间进行对比,或者查看变量中有没有异常值。另外,多幅雷达图之间或者雷达图的多层数据线之间,还可以进行总体数值情况的对比。

以下展示一个最基础的雷达图

import matplotlib.pyplot as plt
from math import pi

# 数据
labels = ['专业知识', '社交能力', '领导能力', '自我管理', '学习能力']
data = [38, 29, 15, 35, 32]

# 闭合图形
data += data[:1]
angles = [n / 5 * 2 * pi for n in range(5)]
angles += angles[:1]

# 创建图
plt.figure(figsize=(5, 5))
ax = plt.subplot(111, polar=True)

# 画图
ax.plot(angles, data)
ax.fill(angles, data, alpha=0.1)

# 设置标签
ax.set_xticks(angles[:-1])
ax.set_xticklabels(labels)

# 显示
plt.show()

 

 当然了,如果你想进一步定义更加复杂(或者更加美观的)雷达图,也有很多的参数提供选择,以下展示一个经过优化的雷达图

import matplotlib.pyplot as plt
import pandas as pd
from math import pi

# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 使用内置风格,兼容性更好
plt.style.use('ggplot')

# 构造数据
df = pd.DataFrame({
    'group': ['A', 'B', 'C', 'D'],
    '专业知识': [38, 1.5, 30, 4],
    '社交能力': [29, 10, 9, 34],
    '领导能力': [15, 39, 23, 24],
    '自我管理': [35, 31, 33, 14],
    '学习能力': [32, 15, 32, 14]
})

# 类别数量
categories = list(df.columns[1:])
N = len(categories)

# 第一个人的数据
values = df.loc[0].drop('group').values.flatten().tolist()
values += values[:1]

# 每个维度的角度
angles = [n / float(N) * 2 * pi for n in range(N)]
angles += angles[:1]

# 创建图形
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))

# 画线
ax.plot(angles, values, color='#005C9F', linewidth=2, linestyle='-', marker='o')
# 填充区域
ax.fill(angles, values, color='#81C3D7', alpha=0.3)

# 设置类别标签
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories, fontsize=10, color='dimgray')

# 设置极径标签
ax.set_rlabel_position(0)
ax.set_yticks([10, 20, 30])
ax.set_yticklabels(['10', '20', '30'], color='gray', fontsize=9)
ax.set_ylim(0, 40)

# 图表标题
plt.title('能力雷达图', fontsize=14, color='#333333', pad=20)

plt.tight_layout()
plt.show()
ax.plot(angles, values, color='#005C9F', linewidth=2, linestyle='-', marker='o')
  • 作用:在雷达图上绘制数据线。

  • 参数

    • angles:每个数据点的角度。

    • values:每个数据点的值。

    • color='#005C9F':设置线条颜色为蓝色。

    • linewidth=2:设置线条宽度为 2。

    • linestyle='-':设置线条样式为实线。

    • marker='o':在数据点处添加圆形标记。

ax.fill(angles, values, color='#81C3D7', alpha=0.3)
  • 作用:填充雷达图的区域。

  • 参数

    • angles:每个数据点的角度。

    • values:每个数据点的值。

    • color='#81C3D7':填充颜色为浅蓝色。

    • alpha=0.3:设置透明度为 0.3(填充区域半透明)。

 

2.箱型图

箱形图是一种用作显示一组数据分布情况的统计图,因型状如箱子而得名。箱子的顶端和底端,分别代表上下四分位数。箱子中间的是中位数线,它将箱子一分为二。箱形图最大的优势是,它以一种简单的方式,概括出一个或多个数值变量的分布,同时又不会占据太多空间。通过箱形图,我们可以很快知道一些关键的统计值,如中位数、上下四分位数等。

接下来先绘制一个最为简单的箱型图

首先就是数据,本文用到的数据

df = pd.read_csv("trentino_temperature.csv")
# 创建一个图形和坐标轴,设置图形的大小
fig, ax = plt.subplots(figsize=(8,6))

# 创建一个箱型图,数据来自于 df['temp'],并设置自定义颜色
boxplot = ax.boxplot(df['temp'])

# 设置 x 轴和 y 轴的标签
ax.set_xlabel('列名')  # x 轴标签为 '列名'
ax.set_ylabel('值')    # y 轴标签为 '值'

# 设置图表标题
ax.set_title('箱型图')  # 图表标题为 '箱型图'

# 显示图表
plt.show()  # 显示图形

 如果看懂了,那么恭喜接下来可以试试稍微复杂一点的箱线图

# 创建一个图形和坐标轴,设置图形的大小
fig, ax = plt.subplots(figsize=(8,6))

# 创建一个箱型图,数据来自于 df['temp'],并设置箱体填充颜色
boxplot = ax.boxplot(df['temp'], patch_artist=True)

# 设置自定义颜色
box_color = 'lightblue'  # 箱体颜色为浅蓝色
whisker_color = 'blue'   # 须(箱型图的线条)颜色为蓝色
cap_color = 'gold'       # 顶部和底部线条(箱体的帽子部分)颜色为金色
flier_color = 'red'      # 异常值(箱外的点)颜色为红色
median_color = 'red'     # 中位数线颜色为红色

# 为箱型图的各部分设置相应的颜色
plt.setp(boxplot['boxes'], color=box_color)        # 设置箱体颜色
plt.setp(boxplot['whiskers'], color=whisker_color) # 设置须颜色
plt.setp(boxplot['caps'], color=cap_color)         # 设置顶部和底部线条颜色
plt.setp(boxplot['fliers'], markerfacecolor=flier_color) # 设置异常值的颜色
plt.setp(boxplot['medians'], color=median_color)   # 设置中位数线颜色

# 设置 x 轴和 y 轴的标签
ax.set_xlabel('列名')  # x 轴标签为 '列名'
ax.set_ylabel('值')    # y 轴标签为 '值'

# 设置图表标题
ax.set_title('箱型图')  # 图表标题为 '箱型图'

# 显示图表
plt.show()  # 显示图形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值