情节地用图像替换 x 标签

Dan*_*ros 1 python plotly

我有一个图表,我想替换 x 标签。在此输入图像描述

我粘贴此图作为示例。在底部你会看到ARI、ATL、BAL等。我想知道是否可以用图像替换这些?图标?

Rob*_*ond 5

  • @r-begginers 在参考答案中提供的方法相同
  • 所有徽标均来自kaggle。使用PIL进行编码
  • 通过创建具有 -ve 百分比的第二条轨迹来合成为轴,并使用该绘图区域来放置徽标
  • 已将xaxis设置为不可见,因此悬停时提供了团队缩写

import kaggle.cli
import sys, requests
import pandas as pd
from pathlib import Path
from zipfile import ZipFile
import urllib
import plotly.express as px
from PIL import Image

# fmt: off
# download data set
url = "https://www.kaggle.com/anzhemeng/nfl-team-logos"
sys.argv = [sys.argv[0]] + f"datasets download {urllib.parse.urlparse(url).path[1:]}".split(" ")
kaggle.cli.main()
zfile = ZipFile(f'{urllib.parse.urlparse(url).path.split("/")[-1]}.zip')
# fmt: on
zfile.extractall("nfl-logos")
df = pd.DataFrame(Path.cwd().joinpath("nfl-logos").glob("*.png"), columns=["filename"])
df["team"] = df["filename"].apply(lambda d: d.stem)
df["passResult"] = np.random.uniform(0, 1, len(df))
df = df.sort_values("team")

fig = px.scatter(df, x="team", y="passResult").add_traces(
    px.scatter(df, "team", np.full(len(df), -0.05))
    .update_traces(marker_color="rgba(0,0,0,0)", hovertemplate="%{x}")
    .data
)

for x in fig.data[0].x:
    fig.add_layout_image(
        source=Image.open(df.loc[df["team"].eq(x), "filename"].values[0]),
        x=x,
        y=-0.01,
        xref="x",
        yref="y",
        xanchor="center",
        sizex=1,
        sizey=1,
    )

fig.update_layout(xaxis={"visible":False})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述