如何在Squarify绘制的树状图数值后添加百分号%符号
Squarify树状图数值添加百分号后缀解决方案
核心思路
Squarify的value参数支持直接传入字符串类型的文本,不需要仅传入数值,你可以提前将数值按需求格式化后传入即可实现自定义显示效果。
注意事项
你原代码中tamaños2 = [61,755, 32,992]的写法会被Python识别为包含4个整数元素的列表,需要修改为用小数点区分整数、小数位的写法:tamaños2 = [61.755, 32.992]
完整可运行代码
import numpy as np import squarify as sq import matplotlib.pyplot as plt ListaCryptos = ['BTC', 'ETH'] # 修正数值格式 tamaños2 = [61.755, 32.992] # 可自定义你需要的配色 colores = ['#F7931A', '#627EEA'] # 格式化数值为「逗号做小数点+百分号」格式 formatted_values = [] for val in tamaños2: # 保留两位小数 rounded_val = np.round(val, 2) # 替换小数点为逗号,添加百分号后缀 formatted_str = f"{rounded_val:.2f}".replace('.', ',') + '%' formatted_values.append(formatted_str) sq.plot( sizes=np.around(tamaños2, decimals=2), label=ListaCryptos, value=formatted_values, color=colores, pad=True, alpha=0.9, bar_kwargs=dict(linewidth=2, edgecolor="white"), text_kwargs={'fontsize': 32} ) plt.title("Rentabilidad", fontsize=32, fontweight="bold") plt.axis('off') plt.show()
格式适配说明
如果不需要使用逗号作为小数分隔符,仅需保留百分号后缀,可将格式化逻辑简化为:formatted_values = [f"{np.round(val, 2):.2f}%" for val in tamaños2]
内容的提问来源于stack exchange,提问作者pacha_bauer
相关产品推荐
相关产品推荐

