数据可视化--局部与整体类可视化图像总结与实现


局部与整体类可视化图像总结与Python实现

引言

在数据可视化中,局部与整体关系分析是核心场景之一。本文总结5种经典图表:韦恩图、饼图、环形图、旭日图、圆堆积图,并提供Python完整实现代码。


1. 韦恩图 (Venn Diagram)

特点

  • 展示集合间交集与并集关系
  • 最多支持3个集合可视化

应用场景

  • 基因序列重叠分析
  • 用户画像重叠分析

Python实现

# 安装库:pip install matplotlib-venn
from matplotlib_venn import venn2, venn3
import matplotlib.pyplot as plt

plt.figure(figsize=(8, 5))

# 两个集合
venn2(subsets=(30, 10, 5), 
       set_labels=('Set A', 'Set B'),
       set_colors=('skyblue', 'orange'))
plt.title("2-Set Venn Diagram")
plt.savefig('venn2.png', dpi=300)
plt.show()

# 三个集合
venn3(subsets=(20, 15, 10, 5, 8, 3, 2), 
      set_labels=('Set A', 'Set B', 'Set C'),
      alpha=0.6)
plt.title("3-Set Venn Diagram")
plt.savefig('venn3.png', dpi=300)
plt.show()

图像如下所示:
在这里插入图片描述
在这里插入图片描述

2. 饼图 (Pie Chart)

特点

  • 展示单一维度占比
  • 适合类别较少(≤6类)场景

应用场景

  • 市场份额分布
  • 预算分配比例

Python实现

import matplotlib.pyplot as plt

labels = ['Electronics', 'Clothing', 'Books', 'Home']
sizes = [45, 30, 15, 10]
colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99']

plt.figure(figsize=(8, 6))
plt.pie(sizes, labels=labels, colors=colors,
        autopct='%1.1f%%', startangle=90,
        explode=(0.1, 0, 0, 0))
plt.axis('equal')
plt.title("Sales Distribution")
plt.savefig('pie_chart.png', dpi=300, bbox_inches='tight')
plt.show()

在这里插入图片描述

3. 环形图 (Doughnut Chart)

特点

  • 饼图变种,中心留白
  • 适合多组数据对比

应用场景

  • 多组数据占比对比
  • 仪表板空间优化

Python实现

import matplotlib.pyplot as plt

categories = ['A', 'B', 'C', 'D']
values = [35, 25, 20, 20]
colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4']

plt.figure(figsize=(8, 6))
wedges, texts = plt.pie(values, colors=colors, 
                       wedgeprops=dict(width=0.3))

# 添加中心圆
center_circle = plt.Circle((0,0),0.70,fc='white')
plt.gca().add_artist(center_circle)

plt.legend(wedges, categories,
          title="Categories",
          loc="center left",
          bbox_to_anchor=(1, 0, 0.5, 1))
plt.title("Doughnut Chart Example")
plt.savefig('doughnut.png', dpi=300, bbox_inches='tight')
plt.show()

在这里插入图片描述

4. 旭日图 (Sunburst Chart)

特点

  • 展示层次结构数据
  • 支持多级分类分析

应用场景

  • 文件目录结构分析
  • 组织架构可视化

Python实现

import plotly.express as px

data = dict(
    parent=["", "Root", "Root", "A", "A", "B"],
    node=["Root", "A", "B", "A1", "A2", "B1"],
    value=[0, 30, 70, 20, 10, 70])

fig = px.sunburst(
    data,
    names='node',
    parents='parent',
    values='value',
    color='node',
    color_discrete_sequence=px.colors.qualitative.Pastel
)

fig.update_layout(margin=dict(t=30, l=0, r=0, b=0))
fig.write_image("sunburst.png", scale=2)
fig.show()

图像如下所示:
在这里插入图片描述
鼠标光标移到图像上会显示详细信息
在这里插入图片描述

5. 圆堆积图 (Circle Packing)

特点

  • 展示层次结构嵌套关系
  • 面积编码数值大小

应用场景

  • 产品分类层次可视化
  • 生态系统物种分类

Python实现

import circlify
import matplotlib.pyplot as plt

data = [{'id':'Root', 'datum':100},
        {'id':'A', 'datum':60},
        {'id':'B', 'datum':40},
        {'id':'A1', 'datum':35},
        {'id':'A2', 'datum':25}]

circles = circlify.circlify(
    [d['datum'] for d in data],
    show_enclosure=False,
    target_enclosure=circlify.Circle(x=0, y=0, r=1)
)

plt.figure(figsize=(10, 10))
ax = plt.gca()

for circle, d in zip(circles, data):
    x, y, r = circle
    ax.add_patch(plt.Circle((x, y), r, alpha=0.5, linewidth=2))
    plt.annotate(d['id'], (x, y), 
                va='center', ha='center')

plt.axis('off')
plt.title("Circle Packing")
plt.savefig('circle_packing.png', dpi=300)
plt.show()

图像如下所示:
在这里插入图片描述

图表对比总结

图表类型维度支持主要优势适用场景
韦恩图2-3集合直观展示集合关系小集合对比
饼图单维度快速理解占比简单比例分析
环形图多组对比节省空间仪表板展示
旭日图层次数据多级结构展示文件/组织架构
圆堆积图层次数值面积编码数值分类数据分布

实现工具总结

  1. Matplotlib:基础可视化库,支持饼图、环形图
  2. matplotlib_venn:专业韦恩图实现
  3. Plotly:交互式旭日图最佳选择
  4. Circlify:圆形布局算法核心支持

针对不同的数据类型选择恰到好处的图表表示,是数据可视化思想在局部与整体类可视化图像的应用体现,不同的图表类型具有不同的表示能力与图像特点,只有选择合适的图表类型进行数据表示,才能获得更好的数据呈现效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值