使用 plotly 绘制散点图时,即使数据是有序的,绘图也会按类别分隔

While plotting scatter graph using plotly the plot is separated by categories even when the data is ordered

所以我正在尝试使用 plotly Code and plot without specifying color

绘制这样的散点图

只要我没有指定颜色属性来根据类别为点着色,该图就是正确的。但是,当我指定颜色时,图表会变成这样,并且类别会分成 3 个小图 Code and plot for after specifying color。有什么方法可以指定颜色并保留绘图的顺序?

  • 用标记文本而不是嵌入图像和示例数据的示例代码提出 SO 问题总是更好
  • 已经隐含了你的数据框的结构并用随机数据模拟了它
  • 核心概念,当用于 color 的列是分类(字符串)时,plotly 将为分类中的每个值创建一个跟踪系列。鉴于您的 xaxis 也是分类的(不连续),这将导致痕迹被分割
  • 鉴于您只想要一条轨迹,已将单条轨迹的 marker_color 更新为 map() 将分类值更新为颜色
import plotly.express as px
import pandas as pd
import numpy as np

# simulate data frame
df20 = pd.DataFrame(
    {
        "SectionContentDetailType": np.random.choice(["Lesson", "Quiz"], 100),
        "Page_Title": [
            chr(ord("A") + i // 26) + chr(ord("A") + i % 26) for i in range(100)
        ],
        "Number of Users": np.sort(np.random.randint(100, 2500, 100))[::-1],
    }
)

# create figure in same way
fig = px.scatter(
    df20, x="Page_Title", y="Number of Users", hover_data=["SectionContentDetailType"]
)

# add marker color to single trace figure
fig.update_traces(
    marker_color=df20["SectionContentDetailType"].map(
        {
            t: c
            for t, c in zip(
                df20["SectionContentDetailType"].unique(), px.colors.qualitative.Plotly
            )
        }
    )
)