我正在使用神奇的plotly库绘制三维散点图,并尝试确定如何计算气泡的大小。
请注意,数据并不重要(在此处显示会很困难),除了气泡的大小应该与“size”属性中的数据值成比例。不幸的是,这些数据的值有时会发生变化,因此设置固定的“size”值并不实用。plotly提供了“sizeref”属性(见下面的代码),用于缩放气泡的大小。我在plotly网站上找到了一个公式可以用于二维图表,但似乎不能适用于三维图表。
我的问题是:是否有方便的公式来计算sizeref的值?我认为sizeref公式应该取决于数据的最大值/最小值(即“size”属性的数据)和布局大小(按下面的代码800高度和800宽度)。我尝试过一些自己的公式,但都效果不佳。
如果有任何想法,请告诉我(注意:我正在使用Python,但我认为解决方案也适用于R中的plotly代码)。
请注意,数据并不重要(在此处显示会很困难),除了气泡的大小应该与“size”属性中的数据值成比例。不幸的是,这些数据的值有时会发生变化,因此设置固定的“size”值并不实用。plotly提供了“sizeref”属性(见下面的代码),用于缩放气泡的大小。我在plotly网站上找到了一个公式可以用于二维图表,但似乎不能适用于三维图表。
我的问题是:是否有方便的公式来计算sizeref的值?我认为sizeref公式应该取决于数据的最大值/最小值(即“size”属性的数据)和布局大小(按下面的代码800高度和800宽度)。我尝试过一些自己的公式,但都效果不佳。
如果有任何想法,请告诉我(注意:我正在使用Python,但我认为解决方案也适用于R中的plotly代码)。
import plotly
import plotly.graph_objs as go
#
# The dataframe, df, is calculated elsewhere
#
x = list(df["comp-0"])
y = list(df["comp-1"])
z = list(df["comp-2"])
text = list(df["label"])
color = list(df["cluster"])
size = list(df["degree"])
sizeref = 50
sizemin = 1
trace1 = go.Scatter3d(
x=x, y=y, z=z,
text=text,
mode="markers",
marker=dict(
sizemode="diameter",
sizeref=sizeref,
sizemin=sizemin,
size=size,
color=color,
colorscale="Viridis",
line=dict(color="rgb(150, 150, 150)")
)
)
data = [trace1]
title = "Clusters"
layout = go.Layout(height=800, width=800, title=title)
fig = go.Figure(data=data, layout=layout)
plotly.offline.plot(fig)