如何在 Plotly for Python 中截断图例文本?

问题描述 投票:0回答:2

我有一些使用 Plotly 绘制的饼图及其各自的图例。当图例文本很短时,结果非常用户友好(第一张图),但是当图例文本很长时,结果不是很“专业”(第二张图)。

这是我用来绘制图表的代码:

fig = px.pie(df, values = 'values', names = 'names')
fig.update_layout(title = 'Pie Chart', title_x = 0.5)
fig.show()

有没有办法截断或打断图例文本的行,以便更好地向用户显示饼图?

提前感谢您的帮助。

python plotly
2个回答
1
投票

您可以将图例名称修剪为:

def newLegend(fig):
    for i, elem in enumerate(fig.data[0].labels)
         fig.data[0].labels[i] = fig.data[0].labels[i][:15] # where 15 is the first 15 letter of the legend
    return(fig)

fig = newLegend(fig = fig)

0
投票

我认为对于大多数用例来说,不使用 python 而是使用 js 来更改整个

fig
的性能要高得多:

window.dash_clientside = Object.assign({}, window.dash_clientside, {
    clientside: {
        trunc_legend_titles: function(figure) {
            setTimeout(function() {
                var legendItems = document.querySelectorAll('.legendtext');
                legendItems.forEach(function(item) {
                    var name = item.textContent;
                    var truncatedName = name.length > 10 ? name.substring(0, 10) + '...' : name;
                    item.textContent = truncatedName;
                });
            }, 500); // Wait for the plot to be fully rendered
        }
    }
});

这也不会更改基础数据的唯一名称,而只是更改图例中的显示文本

© www.soinside.com 2019 - 2024. All rights reserved.