如何使用所有标记单独着色的绘图创建 3D 散点图?

问题描述 投票:0回答:1

按照建议这里我尝试了以下代码在jupyter笔记本中使用plotly创建Scatter3D图,因此每个标记都是单独着色的,就像你可以使用matplotlib之类的东西做的那样

plt.scatter(x,y, c=z)

这是代码:

cmap = matplotlib.colormaps['brg']
param = "elevation_deg"
min_value = min(vector)
max_value = max(vector)
range_ = max_value - min_value
colors = []
for value in vector:
    rgba = cmap((value-min_value)/range_)
    colors.append(f"rgb({int(255*rgba[0])},{int(255*rgba[1])},{int(255*rgba[2])})")
        
# Configure the trace.
trace = go.Scatter3d(
    x=x, 
    y=y,  
    z=z, 
    mode='markers',
    marker=dict(colors, size=10)
)

但我收到错误

ValueError: dictionary update sequence element #0 has length 13; 2 is required

我还查看了Scatter3D的文档,但我完全迷失在这个页面中,它完全令人困惑。

那么也许还有更多的方法可以做到这一点?以及如何绘制颜色条,就像使用 matplotlib 和

plt.colorbar()
一样?

python plotly plotly-python scatter3d
1个回答
0
投票

试试这个。它对我有用。

import plotly.graph_objects as go
import numpy as np

# Generate some sample data
np.random.seed(50)
n = 5
x = np.random.rand(n)
y = np.random.rand(n)
z = np.random.rand(n)
color_values = np.random.rand(n)  

fig = go.Figure()

scatter = fig.add_trace(go.Scatter3d(
    x=x,
    y=y,
    z=z,
    mode='markers',
    marker=dict(
        color=color_values,  # Assigning the color values
        colorscale='Viridis',  # Choosing a color scale
        colorbar=dict(title='Colorbar Title'),  # Adding a color bar with title
        size=5
    )
))

fig.update_layout(
    scene=dict(
        xaxis=dict(title='X Axis', range=[0.2, 0.6]),  
        yaxis=dict(title='Y Axis', range=[0.4, 0.8]), 
        zaxis=dict(title='Z Axis', range=[0.1, 0.5])  
    )
)

fig.show()

© www.soinside.com 2019 - 2024. All rights reserved.