You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib 3D绘图中为每个块分配随机颜色失败问题排查

问题原因及解决方案

你的代码里blockcolor = [f'rgb(np.random.randint(0,256))']是把包含Python代码的字符串传给了facecolor,Plotly无法解析字符串里的代码逻辑,所以默认用灰色显示。不管用RGB还是十六进制,都要生成实际的颜色值字符串,而不是带代码的字符串。

解决方案1:生成RGB格式颜色

直接计算随机RGB数值,拼接成Plotly能识别的rgb(r,g,b)格式:

r, g, b = np.random.randint(0, 256, size=3)
blockcolor = [f'rgb({r}, {g}, {b})']
mesh.append(go.Mesh3d(x=X, y=Y, z=Z, i=I, j=J, k=K, facecolor=blockcolor, flatshading=True))

解决方案2:生成十六进制格式颜色

可以用两种方式生成随机十六进制颜色:

方法A(原生Python)

import random

hex_color = "#{:06x}".format(random.randint(0, 0xFFFFFF))
blockcolor = [hex_color]
mesh.append(go.Mesh3d(x=X, y=Y, z=Z, i=I, j=J, k=K, facecolor=blockcolor, flatshading=True))

方法B(用matplotlib工具)

import matplotlib.colors as mcolors

hex_color = mcolors.to_hex(np.random.rand(3))
blockcolor = [hex_color]
mesh.append(go.Mesh3d(x=X, y=Y, z=Z, i=I, j=J, k=K, facecolor=blockcolor, flatshading=True))

内容的提问来源于stack exchange,提问作者shongololo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 13:52:06