如何解决树状图 - 更改字体
所以我有以下代码在 Matplotlib 中生成树图。想知道是否可以将第一行加粗并使用更大的字体。
所以:
胆子更大:0:
更小更没有胆量:480
import matplotlib.pyplot as plt
import squarify # pip install squarify (algorithm for treemap)
import pandas as pd
import psycopg2
distributionlist = [480,104,55,35,29,12,18,22,14,11,144]
group = ["0","1","2","3","4","5","6","7","8","9","10+"]
labels = ["%s:\n%s" % (label) for label in zip(group,distributionlist)]
percents = [8,3,4,2,8,2]
# Create a data frame with fake data
df = pd.DataFrame({'nb_people': distributionlist,'group':group })
#df = pd.DataFrame({'nb_people':[8,2],'group':["group A","group B","group C","group D"] })
# plot it
squarify.plot(sizes=df['nb_people'],label=labels,alpha=.8)
#squarify.plot(sizes=df['nb_people'],label=df['group'],alpha=.8,color=colors )
plt.axis('off')
plt.show()
解决方法
通常单个 matplotlib 文本只有一种大小和一种样式。这里标签被创建为一个带换行符的字符串。
你可以使用
ax = squarify.plot(sizes=df['nb_people'],label=labels,alpha=.8)
ax.texts[0].set_size(30)
ax.texts[0].set_weight('bold')
将文本设置为更大和更粗。
要拆分文本并只设置第一行的粗细:
ax = squarify.plot(sizes=df['nb_people'],alpha=.8)
text_parts = ax.texts[0].get_text().split("\n")
ax.texts[0].set_text(text_parts[0] + "\n")
ax.texts[0].set_size(30)
x,y = ax.texts[0].get_position()
new_text = ax.text(x,y,"\n" + text_parts[1],ha=ax.texts[0].get_ha(),va=ax.texts[0].get_va())
new_text.set_fontproperties(ax.texts[0].get_fontproperties())
ax.texts[0].set_weight('bold')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。