绘制板块层级图

实验目的:
1、掌握数据文件读取
2、掌握数据处理的方法
3、实现板块层级图的绘制
实验原理:
板块层级图(treemap)是一种基于面积的可视化方式,通过每一个板块(通常是矩形)的尺寸大小进行度量,外部矩形代表父亲类别。而内部矩形代表子类别,我们也可以通过板块层级图简单的呈现比例关系,不过它更善于呈现树状结构的数据。
读取绘图所用的数据,并对数据进行数据处理将数据处理成我们可以使用的形式,绘制板块层级图,设置标签和标题。
实验环境:

实验步骤:
一、安装pandas、matplotlib、seaborn、squarify
1、输入命令:pip install pandas
在这里插入图片描述
2、输入命令:pip install matplotlib
在这里插入图片描述

3、输入命令:pip install seaborn
在这里插入图片描述

4、输入命令:pip install squarify
在这里插入图片描述

二、读取数据
在这里我们使用pandas库中的read_csv函数来读取这3个数据文件。
在这里插入图片描述

三、数据处理
我们需要根据源表对目标表进行配套查询,使用merge函数进行操作。
在这里插入图片描述
进行匹配后的数据如下:
在这里插入图片描述

四、绘制板块层级图
绘制初始的板块层级图,代码如下:

cmap = matplotlib.colormaps.get_cmap('viridis')
mini, maxi = temp2.products_department.min(), temp2.products_department.max()
norm = matplotlib.colors.Normalize(vmin=mini,vmax=maxi)
colors = [cmap(norm(value)) for value in temp2.products_department]
colors[0] = "#4F5B93" # 使用有效的颜色代码
labels = [
"%s\n%d aisle num\n%d products num" % (label, aisle_num, product_num)
for label, aisle_num, product_num in zip(temp2.index, temp2.aisle_department, temp2.products_department)
]
fig = plt.figure(figsize=(12, 10))
ax = fig.add_subplot(111, aspect="equal")
squarify.plot(
temp2.aisle_department,
color=colors,
label=labels,
ax=ax,
alpha=0.7
)

结果图下:
在这里插入图片描述

初始结果:

设置x、y轴的属性:

ax.set_xticks([])
ax.set_yticks([])
img = plt.imshow([temp2.products_department], cmap=cmap)
img.set_visible(False)
fig.colorbar(img, orientation="vertical", shrink=.96)
fig.text(.76, .9, "numbers of products", fontsize=14)
plt.show()

结果展示如下:
在这里插入图片描述
五、实验总结
每个“板块”的面积直接对应其数值大小或比例。板块越大,表示对应的数据值越大。这种方式直观地展示了不同类别之间的相对大小关系,使观众能够快速识别出数据中的主要组成部分和次要部分。板块层级图能够清晰地展示数据的层级关系。例如,可以展示“集团 > 子公司 > 产品线”这样的多层级结构。通过嵌套的矩形块,观众可以直观地理解数据的层次结构,识别出不同层级之间的从属关系。相比于其他图表类型(如饼图),板块层级图在有限的空间内能够展示大量的数据节点。其紧凑的布局方式使得它非常适合展示复杂结构的数据,尤其适用于需要在一个视图中展示多个类别和子类别的情况。我们使用pandas进行数据读取和预处理,通过merge函数将多个数据表进行匹配查询,生成用于绘制图表的最终数据集,利用matplotlib的颜色映射功能,根据数据值生成相应的颜色,使图表更具视觉吸引力,为每个板块添加详细的标签信息,包括类别名称、子类别数量和产品数量,帮助观众更好地理解图表内容,通过调整图表的布局、颜色、标签位置等元素,提升图表的美观性和可读性。例如,去除坐标轴刻度、添加颜色条等,虽然本次实验主要使用静态图表,但在实际应用中,可以结合数字化工具(如Power BI、Tableau)实现更丰富的交互功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值