我从切换matplotlib到plotly主要是绘制在2D / 3D流畅的动画。我想绘制由多个圆/球组成的机器人的运动。
机器人的不同身体部位具有不同的大小,圆圈需要准确地表示出来。是否有办法plotly来指定数据单元标记的大小?例如,我想绘制一个5m x 5m(x5m)的截面,其中半径为0.1m的圆/球沿着不同的轨迹运动。
在matplotlib中,我知道两种选择。一种是使用补丁(matplotlib.patches.Circle)。第二种方法是绘制点并通过考虑dpi正确缩放其marker_size(请参阅matplotlib的此问题的答案)。
A)是否可以对图形进行3D动画处理?
要么
B)有没有办法以数据单位指定标记的大小或正确缩放sizeref属性?
# Point with radius 2 (approx.)
from plotly.offline import plot
import plotly.graph_objs as go
trace = go.Scatter(x=[4], y=[4],
mode='markers',
marker={'size': 260, 'sizeref': 1}) # ???
layout = dict(yaxis=dict(range=[0, 10]),
xaxis=dict(range=[0, 10]))
fig = dict(data=[trace], layout=layout)
plot(fig, image_height=1000, image_width=1000)
Run Code Online (Sandbox Code Playgroud)
缩放marker_size的问题是,只有当您不放大或缩小图像时,图像才是正确的,因为marker_size保持恒定。因此,更干净的方法是直接以数据单位指定圆圈的大小。
画圆圈可能是你最好的选择。每次调整大小都进行更新markersize会有点麻烦。您可以尝试以下方法来绘制圆圈
from plotly.offline import plot
import plotly.graph_objects as go
xy = [[4, 4], [1, 5], [2, 2]]
r = 0.1
fig = go.Figure()
kwargs = {'type': 'circle', 'xref': 'x', 'yref': 'y', 'fillcolor': 'black'}
points = [go.layout.Shape(x0=x-r, y0=y-r, x1=x+r, y1=y+r, **kwargs) for x, y in xy]
fig.update_layout(shapes=points)
fig.update_xaxes(range=[0, 10])
fig.update_yaxes(range=[0, 10])
fig.update_layout(width=1000, height=1000)
plot(fig)
Run Code Online (Sandbox Code Playgroud)
默认(第一个)和缩放(第二个)视图:

| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |