使用 Plotly Scatter3d 标记太暗

Posted

技术标签:

【中文标题】使用 Plotly Scatter3d 标记太暗【英文标题】:Markers Too Dark with Plotly Scatter3d 【发布时间】:2021-11-20 15:20:09 【问题描述】:

我正在绘制一些散点图并手动设置标记颜色。使用 2d 散点图 (graph_objects.Scatter) 一切都按预期工作。虽然使用 3d(graph_objects.Scatter3d),但图例是正确的,但图上的标记太暗(通常只是黑色)。以下代码

from plotly.subplots import make_subplots
import plotly.graph_objects as go
import numpy as np

fig = make_subplots()
fig.update_layout(height=600, width=1200)
x , y, z = np.linspace(0, 100, 100), np.linspace(-10, 10, 100), np.linspace(5, 25, 100)
fig.add_trace(go.Scatter3d(x=x, y=y, z=z, mode='markers', marker='color': 'rgb(1.0, 0.0, 0.0)', name='Red'))
fig.add_trace(go.Scatter3d(x=x+100, y=y, z=z, mode='markers', marker='color': 'rgb(0.0, 0.0, 1.0)', name='Blue'))
fig.show()

产生两行黑色标记。

有人知道这是什么原因吗?我认为 Scatter3d 的标记 dict 可能不一样,但查看文档我认为它加上图例正确显示了颜色。

【问题讨论】:

我能够重现这个。根据similar issue on GitHub,看起来这可能是一个突出的错误?如果可能的话,我会说你只使用 0-255 整数刻度是最安全的。 确实有效。应该尝试一下,但我认为这是理解颜色,因为图例正确显示。谢谢! 【参考方案1】:

根据@frodnar 的评论,使用 255 而不是 1.0 确实有效

from plotly.subplots import make_subplots
import plotly.graph_objects as go
import numpy as np

x, y, z = np.linspace(0, 100, 100), np.linspace(-10, 10, 100), np.linspace(5, 25, 100)

for c in ["1.0", "255"]:
    go.Figure(
        [
            go.Scatter3d(
                x=x,
                y=y,
                z=z,
                mode="markers",
                marker="color": f"rgb(c, 0.0, 0.0)",
                name="Red",
            ),
            go.Scatter3d(
                x=x + 100,
                y=y,
                z=z,
                mode="markers",
                marker="color": f"rgb(0.0, 0.0, c)",
                name="Blue",
            ),
        ],
        layout="title": f"color c",
    ).show()

【讨论】:

以上是关于使用 Plotly Scatter3d 标记太暗的主要内容,如果未能解决你的问题,请参考以下文章

如何更新第二个绘图轴 plotly Scatter3D subplots

Python随着时间的推移在Scatter3d中绘制动画标记样式或点

如何使用场景向 scatter3D Plotly 绘图添加注释?

在 Vue 上使用带有 Webpack 的 plotly.js 3d scatter3d

Plotly js中的高效3D线图?

在knitr / rmarkdown中作为png plotly