如果你看这里:https://plotly.com/python/treemaps/#nested-layers-in-treemap ,看图:
注意第二个小块中的小文本。您几乎看不到它,因为文本是“Blackcurrant-like”,而且太大放不下。
文档中提出的当前选项均不够。
建议解决方案一:强制字体变大,放不下就隐藏
通过添加这一行:
fig.update_layout(uniformtext=dict(minsize=11, mode='hide'))
它隐藏了不适合的标签:
这不是很好。我希望能够看到文本。
建议的解决方案 2:强制字体大小变大,如果不适合则强制显示。
fig.update_layout(uniformtext=dict(minsize=11, mode='show'))
这样解决了文本隐藏的问题,但是现在画在框外,不太好。
我想要的是让文本换行。如果那不可能,那么我希望它被修剪(可能用省略号)。我想不出一种方法来处理这个库。 所以我的第一个问题是,这可能吗?
建议的解决方案 3:提前修剪文本。
如果我提前知道文本不适合,我可以修剪它。但是我怎么知道,我怎么知道我可以修剪多少呢?
我想,由于盒子的大小与我们传递给它的值间接相关,我们可以猜测哪些盒子对于我们传递的文本来说太小了。但是如何呢?我什至不知道盒子的耻辱。下面是一个高大的矩形。我无法猜测。
如果有一个事件我可以 Hook UI 在渲染文本之前给我回电话的地方,给我正方形的尺寸,允许我更改文本,我可能有机会。
有什么建议吗?
盒子里有我无法填充的所有空间,这似乎很愚蠢。我假设有一些技术原因导致文本无法换行,因为那将是最明显的解决方案。
最佳答案
您可以使用 <br>
手动换行您的文本文中,以这个例子here :
import plotly.express as px
df = px.data.tips()
fig = px.treemap(df, path=[px.Constant("all"), 'day', 'time', 'sex'], values='total_bill')
fig.update_traces(root_color="lightgrey")
fig.update_layout(margin = dict(t=50, l=25, r=25, b=25))
fig.show()
我会添加一个手动换行的长标签。
fig.data[0]['labels'][0:6] = "This is too long label <br> but it is wrapped <br> into three lines"
fig.data[0]['textfont']['size'] = 20
fig.show()
关于plotly - 使用 plotly.graph_objects,当框太小时,有没有办法修剪或包装每个框内的标签文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65942714/