按照建议这里我尝试了以下代码在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()
一样?
试试这个。它对我有用。
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()