如何使用可绘Scatter3d将标记大小指定为输入空间中的直径?

时间:2019-12-23 18:15:12

标签: python plotly visualization plotly-python scatter3d

使用go.Scatter3d进行实验我注意到选项标记sizemode =“ diameter”。似乎此选项与输入空间中标记的直径无关。

是否可以在输入空间中使用自定义直径来调整标记的大小?

例如我想要标记,每个标记的输入空间直径为5:

import plotly.express as px
import plotly.graph_objects as go

import numpy as np

x =y=z = np.arange(1,4)

fig = go.Figure()

fig.add_trace(
    go.Scatter3d(
        mode='markers',
        x=x,
        y=y,
        z=z,
        marker=dict(
            color=px.colors.qualitative.D3,
            size=5,
            sizemode='diameter'
        )
    )
)
axis_range = [-5,10]
fig.update_layout(scene = dict(
        xaxis = dict(range=axis_range,),
        yaxis = dict(range=axis_range,),
        zaxis = dict(range=axis_range,)
))

fig.show()

1 个答案:

答案 0 :(得分:1)

不真正理解您的问题,您想达到的目标,但是文档:https://plot.ly/python/reference/#scatter3d表示,只有将marker.size设置为数值数组时,sizemode才会起作用。

enter image description here

因此,根据您的示例:

import plotly.express as px
import plotly.graph_objects as go

import numpy as np

x =y=z = np.arange(1,4)

fig = go.Figure()

fig.add_trace(
    go.Scatter3d(
        mode='markers',
        x=x,
        y=y,
        z=z,
        marker=dict(
            color=px.colors.qualitative.D3,
            size=[5, 10, 30],
            sizemode='diameter'
        )
    )
)
axis_range = [-5,10]
fig.update_layout(scene = dict(
        xaxis = dict(range=axis_range,),
        yaxis = dict(range=axis_range,),
        zaxis = dict(range=axis_range,)
))

fig.show()