我有一些使用 Plotly 绘制的饼图及其各自的图例。当图例文本很短时,结果非常用户友好(第一张图),但是当图例文本很长时,结果不是很“专业”(第二张图)。
这是我用来绘制图表的代码:
fig = px.pie(df, values = 'values', names = 'names')
fig.update_layout(title = 'Pie Chart', title_x = 0.5)
fig.show()
有没有办法截断或打断图例文本的行,以便更好地向用户显示饼图?
提前感谢您的帮助。
您可以将图例名称修剪为:
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)
我认为对于大多数用例来说,不使用 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
}
}
});
这也不会更改基础数据的唯一名称,而只是更改图例中的显示文本