为了账号安全,请及时绑定邮箱和手机立即绑定

以数据单元为单位指定标记大小以进行绘图

以数据单元为单位指定标记大小以进行绘图

PIPIONE 2021-08-11 21:50:58
我从 切换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 plotimport plotly.graph_objs as gotrace = 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)缩放的一个问题markersize是图像只有在您不放大或缩小时才是正确的,因为标记大小保持不变。因此,更简洁的方法是直接以数据单位指定圆圈的大小。
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

画圆圈可能是你最好的选择。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)

默认(第一个)和缩放(第二个)视图:

//img1.sycdn.imooc.com//6113d5df0001602f09960996.jpg//img1.sycdn.imooc.com//6113d5e60001535309860975.jpg

查看完整回答
反对 回复 2021-08-11
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号