我正在用plot.ly绘制3D图片,我希望我的轴被引用为(t, x, y)
而不是(x, y, z)
。可以为它们提供不同的标题(在3D情况下在Scene
对象下),但是当我将鼠标悬停在情节上时,我会得到一个忽略新标题但仍然使用(x, y, z)
的工具提示。是否有可能重命名它们?
我的代码是
from plotly.graph_objs import Scatter3d, Layout, Scene
from numpy import sin, cos, linspace, pi
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode()
t = linspace(0, 4*pi)
trace = Scatter3d(
x = t,
y = cos(t),
z = sin(t),
mode = 'lines'
)
layout = Layout(
width = 500,
height = 500,
scene = Scene(
xaxis = {'title': 't'},
yaxis = {'title': 'x'},
zaxis = {'title': 'y'}
)
)
iplot(dict(data=[trace], layout=layout))
当我将鼠标悬停在图表上时,我有:
我想将此处的x, y, z
更改为t, x, y
或其他任何内容。
答案 0 :(得分:2)
这比解决方案更具解决方法,但您可以定义一个字符串列表,一行中每个点都有一个项目,其中列表中的每个项目都是您在悬停时要显示的任何文本的字符串(包括字符串)行"<br>"
表示行返回),然后设置text=your_list
和hoverinfo="text"
。
像这样:
from plotly.graph_objs import Scatter3d, Layout, Scene
from numpy import sin, cos, linspace, pi
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode()
t = linspace(0, 4*pi)
your_list=[]
for iter_t in t:
iter_string = 't:'+'%1.3f'%iter_t+'<br>' + 'x:'+'%1.3f'%cos(iter_t) + '<br>'+'y:'+'%1.3f'%sin(iter_t)
your_list.append(iter_string)
trace = Scatter3d(
x = t,
y = cos(t),
z = sin(t),
mode = 'lines',
text=your_list,
hoverinfo='text')
layout = Layout(width = 500, height = 500, scene = Scene(
xaxis = {'title': 't'},
yaxis = {'title': 'x'},
zaxis = {'title': 'y'}))
iplot(dict(data=[trace], layout=layout))
结果情节看起来像这样
你可能应该在for循环中保存计算值,以防止不止一次计算它们,但你明白了。