如何缩短并仅显示 plotly express 轴中的一部分文本?

How to shorten and show only a part of text in plotly express axis?

我正在尝试输出一个图表,该图表在其 x 轴上具有 id,在其 y 轴上具有数字。现在我很难看到图表本身,因为 ID 太长了。我不想删除整个 ID,我只需要例如每个 ID 的最后几个字母。有谁知道 Plotly express 是否有类似使用正则表达式作为标签的功能?

要缩短 x 轴的刻度标签,您可以通过更改数据框预先更改列的 ID,或者您可以使用 .update_layout() 事后更改刻度标签。

另请参阅:https://plotly.com/python/tick-formatting/

本题+答案相关:

示例代码:

import uuid
import numpy as np
import pandas as pd

import plotly.express as px


# generating some sample data and dataframe
length = 4
data = {
    'colA': [str(uuid.uuid4()) for i in range(length)],
    'colB': np.random.normal(size=length)
} 
df = pd.DataFrame(data)

# create scatter plot
fig = px.scatter(data_frame=df, x='colA', y='colB', width=600, height=400)

# overwrite tick labels    
fig.update_layout(
    xaxis = {
     'tickmode': 'array',
     'tickvals': list(range(length)),
     'ticktext': df['colA'].str.slice(-6).tolist(),
    }
)

结果图: