Plotly绘制树状热力图(treemap)
一、入门
1、准备数据
plotly自带很多测试数据
import plotly.express as px
df = px.data.tips()
df.head()
数据大致就是星期几什么餐不同性别的人支付的金额和小费数等
根据星期几,时间,性别绘制一个简单的treemap
2、画图
fig = px.treemap(df, path=['day', 'time', 'sex'], values='total_bill')
fig.show()
二、美化
1、color_continuous_scale色卡
#色卡有那些
import plotly
# 大家不要急,一个个来,我这里预览只截取了diverging的部分
plotly.express.colors.cyclical.swatches()
plotly.express.colors.sequential.swatches()
plotly.express.colors.diverging.swatches()
色卡太多够你用的了哈哈哈
2、选择其中一个色卡美化
fig = px.treemap(df, path=['day', 'time', 'sex'], values='total_bill',color='total_bill',#颜色数字的变化
range_color = [15, 30], # 色彩范围最大最小值
hover_data= {'total_bill':'%d',
'tip':':.2f'}, # 鼠标悬浮显示数据的格式
color_continuous_scale='Geyser',#色卡
color_continuous_midpoint=0 # 颜色变化中间值设置为增长率=0)
)
fig.update_traces(textinfo='label+value',textfont = dict(size = 12)) # 显示sex和total_bill,字体24
fig.show()
是不是好看了许多了呢
3定义色块颜色及面积
# 绘制2007年各大洲各国家人口和人均寿命树状热力图
import plotly.express as px
import numpy as np
df= px.data.gapminder().query("year == 2007")
df["world"] = "world" # in order to have a single root node
df.head()
fig = px.treemap(df, path=['world', 'continent', 'country'], values='pop',
color='lifeExp', hover_data=['iso_alpha'],#鼠标浮点标签值
color_continuous_scale='RdBu',#色卡
color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop']))# 色块面积由人口决定,色块颜色由人均寿命决定
fig.show()
三、参数
参数好多慢慢参透
# px.treemap?
# Signature:
px.treemap(
data_frame=None, # 就是你要用到的数据,
names=None, # 暂时不用
values=None, # 就是你色块大小
parents=None, # 暂时也不用,和names组合出现吧
ids=None, # 暂时不用,后续暂时不用的字段我就不写啦
path=None, # 层级,依次排开
color=None, # 颜色,比如根据 涨跌幅字段来设置颜色
color_continuous_scale=None, # 自带的颜色尺卡,后面会介绍
range_color=None, # 颜色范围区间,超过就是两端值
color_continuous_midpoint=None, # 颜色尺卡最中间 的值,比如涨跌幅中间设置为 0 最合适
color_discrete_sequence=None,
color_discrete_map=None,
hover_name=None,
hover_data=None, # 就是悬停时 显示字段及其格式
custom_data=None, # 额外的想显示的数据
labels=None,
title=None, # 标题咯
template=None,
width=None, # 图高
height=None, # 图长
branchvalues=None,
maxdepth=None,
)
以上参考网址:https://mp.weixin.qq.com/s/–i7MQlndah7ixoyX4OFdA