python的squarify库一些用法

安装

按住键盘上的Start+R 键,然后输入cmd
进入命令符,输入pip install squarify

作用

一种坐标系,包括原点(x和y)和宽度/高度(dx和dy)的值。
从最大值到最小值排序并规范化为总面积(即dx*dy)的正值列表。
将数据生成基于matplotlib的树状图可视化

详情

函数返回一个dict列表(即JSON对象),每个dict都是一个矩形,其坐标与给定坐标系相对应,面积与相应值成比例。

import squarify
import matplotlib.pyplot as plt

x = 0.
y = 0.
width = 700.
height = 433.
values = [500, 433, 78, 25, 25, 7]
values.sort(reverse=True)
values = squarify.normalize_sizes(values, width, height)
rects = squarify.squarify(values, x, y, width, height)
print(rects)

相应图片
还有一个称为padded_squarify的squarify版本,它返回的矩形在布局时有一点填充以显示其边界。

import squarify
import matplotlib.pyplot as plt
x = 0
y = 0
width = 700
height = 433

values = [500, 433, 78, 25, 25, 7]
obviously)
values.sort(reverse=True)
values = squarify.normalize_sizes(values, width, height)
padded_rects = squarify.padded_squarify(values, x, y, width, height)
print(padded_rects)

对应的输出结果
辅助函数normalize_size将计算规范化值

辅助函数plot将生成基于Matplotlib的数据树映射可视化,这个比较重点,也是比较常用的。

import pandas as pd
import matplotlib.pyplot as plt
import squarify
df_raw = pd.read_csv("实例.csv")

df = df_raw.groupby('class').size().reset_index(name='counts')#按照class的值分组,size统计数据,reset_index建立一个新的索引
labels = df.apply(lambda x: str(x[0]) + "\n (" + str(x[1]) + ")", axis=1)#lambda一种函数,冒号前是参数,可以有多个,冒号后为表达式;axis=0:将一列数据作为lamda的数据
colors = [plt.cm.Spectral(i/float(len(labels))) for i in range(len(labels))]
squarify.plot(sizes=(14,8,15,5,8),label=labels, color=colors, alpha=.8)#sizes的个数说明了分支数的个数,有几就是几,label显示标签,colors颜色,不同的取值有不同的颜色,alpha表示颜色的淡化程度
plt.title('Treemap of Vechile Class')
plt.axis('off')#不显示坐标轴
plt.show()

sizes里有五个数值,所以图片上有五个方块

结果

将代码更改成squarify.plot(sizes=(14,8,15),label=labels, color=colors, alpha=.2)其中方块变成了三个,alpha=0.2,所以颜色也变得更浅了

在这里插入图片描述

将代码更改成squarify.plot(sizes=(14,8,15), color=colors, alpha=1),颜色加深,同时标签也没有了,因为我去掉了labels;注意alpha的取值范围是(0~1)

显示结果
代码中的文件地址百度网盘
提取码:k8kd

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值