Plotly:根据导出数据中的列设置标记大小?

Plotly: Setting the marker size based on the column in the exported data?

代码运行很好;但是,在我的数据集中,我的自定义数据集中有一列 SD。我希望这些标记的大小应该基于 SD 并且我在 seaborn 库中做到了,它是 运行 很好。但是,我在这里遇到错误。

%错误是 您指的是“线”吗? 错误 属性 路径: 尺寸 ^^^^

代码是

df=pd.read_csv("Lifecycle.csv")

df1=df[df["Specie"]=="pot_marigold"]
df1
df2=df[df["Specie"]=="Sunflowers"]
df2
trace=go.Scatter(x=df1["Days"], y=df1["Lifecycle"],text=df1["Specie"],marker={"color":"green"}, size=df1[SD],
mode="lines+markers")
trace1=go.Scatter(x=df2["Days"], y=df2["Lifecycle"],text=df2["Specie"],marker={"color":"red"},
mode="lines+markers")
data=[trace,trace1] 
layout=go.Layout(
    title="Lifecycle",
    xaxis={"title":"Days"},
    yaxis={"title":"Lifecycle"})

fig=go.Figure(data=data,layout=layout)
pyo.plot(fig)

您可以使用 plotly.express 代替:

import plotly.express as px

trace=px.scatter(df, x="Days", y="Lifecycle", text="Specie", marker="SD")
  • 你没有提供样本数据,所以我根据你的代码暗示的内容进行了模拟
  • 只需在您使用的框架内设置marker_size
  • 使用 Plotly Express 这种类型的图要简单得多
  • 也显示了代码
import pandas as pd
import numpy as np
import plotly.graph_objects as go

# df=pd.read_csv("Lifecycle.csv")
df = pd.DataFrame(
    {
        "Specie": np.repeat(["pot_marigold", "Sunflowers"], 10),
        "Days": np.tile(np.arange(1, 11, 1), 2),
        "Lifecycle": np.concatenate(
            [np.sort(np.random.uniform(1, 5, 10)).astype(int) for _ in range(2)]
        ),
        "SD": np.random.randint(1, 8, 20),
    }
)

df1 = df[df["Specie"] == "pot_marigold"]
df2 = df[df["Specie"] == "Sunflowers"]
trace = go.Scatter(
    x=df1["Days"],
    y=df1["Lifecycle"],
    text=df1["Specie"],
    marker={"color": "green"},
    marker_size=df1["SD"],
    mode="lines+markers",
)
trace1 = go.Scatter(
    x=df2["Days"],
    y=df2["Lifecycle"],
    text=df2["Specie"],
    marker={"color": "red"},
    mode="lines+markers",
)
data = [trace, trace1]
layout = go.Layout(
    title="Lifecycle", xaxis={"title": "Days"}, yaxis={"title": "Lifecycle"}
)

fig = go.Figure(data=data, layout=layout)

fig

情节表达

import plotly.express as px

px.scatter(
    df,
    x="Days",
    y="Lifecycle",
    color="Specie",
    size="SD",
    color_discrete_map={"pot_marigold": "green", "Sunflowers": "red"},
).update_traces(mode="lines+markers")