Plotly Scatter3d手动设置标记色后显示过暗甚至为黑色问题咨询
问题原因
你遇到的3D散点标记颜色异常为黑色的问题,是RGB颜色值的格式不符合Plotly规范导致的:
- Plotly的
rgb()颜色语法要求传入的三个参数为*0255范围内的整数*,你代码中使用的是01范围的浮点数属于非法格式 - 2D散点图的渲染逻辑对非法RGB值有容错处理,会自动将01的浮点值映射到0255区间;但3D散点图使用WebGL渲染,对非法RGB值会直接识别为接近0的数值,最终渲染出黑色标记
- 图例的渲染逻辑独立于3D画布,所以可以正常解析出你预期的颜色
解决方法
将rgb()中的浮点值替换为0~255范围的整数即可,修正后的代码如下:
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) # 替换rgb参数为0-255整数 fig.add_trace(go.Scatter3d(x=x, y=y, z=z, mode='markers', marker={'color': 'rgb(255, 0, 0)'}, name='Red')) fig.add_trace(go.Scatter3d(x=x+100, y=y, z=z, mode='markers', marker={'color': 'rgb(0, 0, 255)'}, name='Blue')) fig.show()
如果你的颜色值本身就是0~1的浮点格式,可以手动乘以255后转为整数再传入rgb()参数中。
内容的提问来源于stack exchange,提问作者ryanh153
相关产品推荐
相关产品推荐

