plotly - 使用 plotly.graph_objects,当框太小时,有没有办法修剪或包装每个框内的标签文本?

标签 plotly treemap plotly.graph-objects

如果你看这里:https://plotly.com/python/treemaps/#nested-layers-in-treemap ,看图: enter image description here

注意第二个小块中的小文本。您几乎看不到它,因为文本是“Blackcurrant-like”,而且太大放不下。

文档中提出的当前选项均不够。

建议解决方案一:强制字体变大,放不下就隐藏

通过添加这一行:

    fig.update_layout(uniformtext=dict(minsize=11, mode='hide'))

它隐藏了不适合的标签:

enter image description here

这不是很好。我希望能够看到文本。

建议的解决方案 2:强制字体大小变大,如果不适合则强制显示。

    fig.update_layout(uniformtext=dict(minsize=11, mode='show'))

enter image description here

这样解决了文本隐藏的问题,但是现在画在框外,不太好。

我想要的是让文本换行。如果那不可能,那么我希望它被修剪(可能用省略号)。我想不出一种方法来处理这个库。 所以我的第一个问题是,这可能吗?

建议的解决方案 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()

enter image description here

我会添加一个手动换行的长标签。

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()     

enter image description here

关于plotly - 使用 plotly.graph_objects,当框太小时,有没有办法修剪或包装每个框内的标签文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65942714/

相关文章:

java - ConcurrentHashMap 线程内的 Treemap 是否安全?

java - 在java上通过TLE的代码优化建议

python - Plotly:如何显示边际直方图计数以外的其他值?

python - 如何绘制线性回归?

python - 如何在 Plotly 饼图中以数字而不是百分比显示值?

javascript - 将 onclick 打开超链接事件添加到在 R 中创建的 html 小部件

r - Plotly 图表在 Shiny Dashboard 中无法正确呈现

java - 如何在java中将Map<String,TreeMap<String,String>> String转换为Json对象?