求助:绘制含百分比与标题的方形比例权重图(附DF数据)
绘制方形比例图展示行业权重的实现方案
可以用Python的squarify库(专门用于生成树状方块图)快速实现需求,以下是完整代码示例:
步骤1:安装依赖库
如果未安装squarify和pandas,先执行安装命令:
pip install squarify pandas matplotlib
步骤2:完整实现代码
import squarify import pandas as pd import matplotlib.pyplot as plt # 加载数据 data = pd.DataFrame({ 'BUSD': [11.70257], 'USDC': [37.16381], 'DAI': [4.529632], 'GEMINI': [0.1128532], 'HUSD': [0.1778291], 'PAX': [0.6171099], 'STASIS': [0.02256854], 'UST': [0.3773179], 'USDT': [44.49382], 'TRU': [0.8024782] }) # 提取标签和权重数值 labels = data.columns.tolist() sizes = data.iloc[0].tolist() # 格式化标签:显示名称+百分比(保留2位小数) formatted_labels = [f"{label}\n{size:.2f}%" for label, size in zip(labels, sizes)] # 设置绘图风格 plt.figure(figsize=(12, 8)) squarify.plot(sizes=sizes, label=formatted_labels, alpha=0.8) # 隐藏坐标轴 plt.axis('off') plt.title('行业权重方形比例图') plt.show()
代码说明
squarify.plot()会自动根据数值比例生成对应大小的方块formatted_labels把每个变量的名称和百分比拼接起来,实现方块内显示双内容- 通过
alpha参数调整方块透明度,figsize控制画布大小
替代方案(纯matplotlib实现)
如果不想额外安装库,也可以用matplotlib的patches.Rectangle手动绘制,但需要自行计算每个方块的坐标和尺寸,代码复杂度更高,推荐优先使用squarify方案。
内容的提问来源于stack exchange,提问作者user17401508
相关产品推荐
相关产品推荐

