我正在努力绘制一些东西,我认为应该是非常简单的。我有一个包含球体坐标x,y,z的框架/表df
。此外,在一个单独的列中,它包含这些球体的半径。我如何使用plotly绘制空间中球体的3D图,并使用正确的半径?
我最接近实现这个情节的是下面的代码:
import plotly.express as px
import plotly.graph_objects as go
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=[50, 5, 25],sizemode='diameter'
)
)
)
字符串
这几乎产生了我想要的结果(见下文),但请注意,球体的大小不正确-球体大小之间的比率是正确的,但我希望size
提供图中球体的绝对大小。我如何使此图与plotly一起工作(或与另一个库一起工作的最坏情况)?
x1c 0d1x的数据
4条答案
按热度按时间qaxu7uf21#
基于azelcer的回答,我设法生成了以下代码,用
plotly
绘制球体:字符串
它导致了这个3D互动图:
的数据
e0uiprwp2#
当你使用标记时,大小通常以像素为单位(面积或直径)。
我从来没有使用过
plotly
,但我很确定将这个使用matplotlib
的脚本转换为使用plotly
是很容易的(参见here)。字符串
测试结果:
的数据
如果想要更平滑的球体,请增加
resolution
参数(并将cstride
和rstride
参数检查为plot_surface
)。vktxenjb3#
我个人使用PyVista将球体的网格作为等值面,并使用
go.Mesh3d
使用plotly绘制它。字符串
的数据
isr3a4wc4#
可以使用S3Dlib中的SphericalSurface类直接构造球体的图。例如:
x1c 0d1x的数据
这是从脚本中生成的:
字符串
使用Excel生成CSV图表,随机xyz坐标为[-25,25]。半径使用正态分布,平均值为10,标准差为5。随机颜色取自Matplotlib,命名为CSS颜色。
使用球面对象创建图形的另一个示例如下所示:
的
在这种情况下,球体的位置、大小和颜色都是显式定义的。code在S3 Dlib文档中提供。