У меня есть график Plotly Scatter3d()
, и я хочу нарисовать линии между некоторыми из них. Физически говоря, у меня есть сеть, где у меня есть некоторые узлы, связанные с облигациями, и я хочу привлечь эти облигации. Как мне это сделать?Добавление определенных строк в график Plotly Scatter3d()
Scatter3d()
поставляется с опцией mode='lines+markers'
, которая просто делает его графиком разметки «точка-и-линия», а не по умолчанию. Это не то, что я ищу. Я хочу предоставить список пары координат xyz, и я хочу получить набор строк в конце.
Вот моя функция для построения простого Scatter3d()
сюжета:
def Splot3dPlotly(xyz):
'''
3D scatter plot using Plotly.
:param xyz: (NPx3) array of xyz positions
:return: A Plotly figure that can now be plotted as usual.
'''
xyz = np.reshape(xyz, (int(xyz.size/3), 3))
NN = int(sqrt(xyz.shape[0]))
trace1 = go.Scatter3d(
x=xyz[:,0],
y=xyz[:,1],
z=xyz[:,2],
mode = 'markers', # 'lines+markers',
marker=dict(color=range(NN*NN), colorscale='Portland')
)
data = [trace1]
layout = go.Layout(
margin=dict(
l=0,
r=0,
b=0,
t=0
)
)
fig = go.Figure(data=data, layout=layout)
return fig
Я принимаю это как ответ, так как нет других, но Plotly должны действительно нравится в том числе более беспроблемный способ построения 3d линий. Что-то вроде LineCollection от matplotlib было бы идеальным. – ap21
@ ap21: Согласен, добавив, что «Нет» довольно хаки. Я видел, что вы попросили эту функцию на заговоре, надеюсь, они вас услышат! –