如何使 Squarify 标签的字体大小与正方形的大小成正比?
How do you make the font size of Squarify label proportionate to the size of the square?
我正在尝试用一些方块比其他方块大得多的方块来制作树状图。
title
counts
labels
A
100
A - 100
B
30
B - 30
C
25
C - 25
D
2
D - 2
E
2
E - 2
F
2
F - 2
G
2
G - 2
fig, ax = plt.subplots(1, figsize = (12,12))
ax = squarify.plot(sizes=df['counts'],
label=df['labels'],
alpha=0.5)
plt.axis('off')
plt.show()
有没有办法让A的字号和正方形一样大,B的字号比A的小,C的字号比B的小一点,其他的都很小?
我找到了一个参数:
text_kwargs={'fontsize':10}
但它不允许我插入尺寸列表。
也许here可以给你一些提示来解决你的问题。
最近我创建了一个 matplotlib-extra 项目,其中包括一些对 matplotlib 的额外功能。目前它有一个 treemap
和一个 AutoFitText
class。 treemap
支持分层树状图。
对于你的情况,这很简单:
import mpl_extra.treemap as tr
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'title':list('ABCDEFG'),
'counts':[100, 30, 25, 2, 2, 2, 2]})
df['labels'] = [f'{a} - {b}' for a,b in zip(df['title'], df['counts'])]
fig, ax = plt.subplots(figsize=(7,7), dpi=100, subplot_kw=dict(aspect=1.156))
tr.treemap(ax, df, area='counts', labels='labels',
cmap='Set2', fill='title',
rectprops=dict(ec='w'),
textprops=dict(c='w'))
ax.axis('off')
它给出了以下树状图:
我正在尝试用一些方块比其他方块大得多的方块来制作树状图。
title | counts | labels |
---|---|---|
A | 100 | A - 100 |
B | 30 | B - 30 |
C | 25 | C - 25 |
D | 2 | D - 2 |
E | 2 | E - 2 |
F | 2 | F - 2 |
G | 2 | G - 2 |
fig, ax = plt.subplots(1, figsize = (12,12))
ax = squarify.plot(sizes=df['counts'],
label=df['labels'],
alpha=0.5)
plt.axis('off')
plt.show()
有没有办法让A的字号和正方形一样大,B的字号比A的小,C的字号比B的小一点,其他的都很小?
我找到了一个参数:
text_kwargs={'fontsize':10}
但它不允许我插入尺寸列表。
也许here可以给你一些提示来解决你的问题。
最近我创建了一个 matplotlib-extra 项目,其中包括一些对 matplotlib 的额外功能。目前它有一个 treemap
和一个 AutoFitText
class。 treemap
支持分层树状图。
对于你的情况,这很简单:
import mpl_extra.treemap as tr
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'title':list('ABCDEFG'),
'counts':[100, 30, 25, 2, 2, 2, 2]})
df['labels'] = [f'{a} - {b}' for a,b in zip(df['title'], df['counts'])]
fig, ax = plt.subplots(figsize=(7,7), dpi=100, subplot_kw=dict(aspect=1.156))
tr.treemap(ax, df, area='counts', labels='labels',
cmap='Set2', fill='title',
rectprops=dict(ec='w'),
textprops=dict(c='w'))
ax.axis('off')
它给出了以下树状图: