使用 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
)
}
)
)
所以我正在尝试使用 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
)
}
)
)