python - Python 3D-Rotation of Text in 3D Plotly Plot
问题描述
我有一个有点复杂的 3d 绘图,为此我希望能够在绘图中放置文本并让它随着绘图旋转,就好像它是位于绘图平面上的 3d 对象一样。我看到您可以在 3d 图上进行注释,但注释被迫始终面向用户。我希望文本与图中的平面一起旋转和倾斜。例如:
import numpy as np
import plotly.graph_objects as go
init_notebook_mode()
nYpts = 50
arrowLw = 0.5
nThetaPts=50#72
theta = np.linspace(0, 2.*np.pi, nThetaPts)
ylim=4
yp = np.linspace(-ylim,ylim*1, nYpts)
theta, yp = np.meshgrid(theta, yp)
w0 = 0.2
zr = 0.5
def waistFunc(zpt):
return w0 * np.sqrt(1+(zpt/zr)**2)
waist = waistFunc(yp)
xp = waist * np.cos(theta)
zp = waist * np.sin(theta)
colorscale = [[0, 'red'],
[1, 'red']]
tweezer = go.Surface(x=xp, y=yp, z=zp, colorscale = colorscale,
showscale=False,lighting=dict(ambient=0.25, roughness=1, diffuse=0.5), lightposition={'x':5,'y':-1,'z':0},
opacity=1)
frame = go.Scatter3d(x=[2,2,-2,-2,2],y=[0,0,0,0,0],z=[2,-2,-2,2,2],
line=dict( color='darkblue', width=2))
layout = go.Layout(scene_xaxis_visible=False, scene_yaxis_visible=False, scene_zaxis_visible=False)
fig = go.Figure(data=[tweezer, frame], layout=layout)
fig.update_layout(
scene=dict( annotations=[dict( showarrow=False, x=1, y=0, z=1, text="Point 1" )]))
fig.show()
生成带有此类注释的示例图,其中该图看起来大致合适,
但是这里的问题很明显,文本已经旋转出平面,这是不可取的。如何在情节中实现这种效果?
解决方案
推荐阅读
- reactjs - ESLint:括号内的间距与反应
- linux - Laravel 6.0,排队的作业不在服务器上排队
- css - 将鼠标悬停在包含图标的 div 上时更改图标的颜色
- powershell - 在 PowerShell 中生成 samaccountname 的函数
- python - 使用列表切片数组
- snowflake-cloud-data-platform - 雪花流不清除
- swift - 动态创建枚举案例
- python - 获取 429:在速率限制指南内使用 Sheets API 的请求过多
- javascript - 根据字符串的特定排列对字符串数组进行排序
- reactjs - Material UI 自动完成中无选项的操作按钮