python - Plotly:如何为 y 轴的不同间隔添加注释?
问题描述
我正在尝试根据 y 值的不同反转向 y 轴添加注释
if y > 0,我要给注解Flexion
if y < 0,我要给注解Extension
我尝试使用多类别来指定注释
我的代码如下所示
import plotly.graph_objects as go
import numpy as np
x = np.arange(-10,10,1)
y = np.arange(-10,10,1)
y_annotation = [ 'Flexion' if data > 0 else 'Extension' for data in y ]
fig = go.Figure( data= go.Scatter(x=x,y=[y_annotation,y]) )
fig.show()
这将产生
但我不希望线条将Flexision
和分开Extension
这种方法会在 y 轴上给出详细的 y 值,这也是我不想拥有的
我想知道是否有另一种方法可以根据不同的间隔向 y 轴添加注释?
谢谢 !
解决方案
如果除了线条和详细的 y 轴之外,您对上面的设置感到满意,那么您可以放弃多索引方法,只需使用在适当的位置设置注释fig.add_annotation()
下图是使用下面的代码段生成的:
fig.update_layout(margin=dict(l=150))
使用,为左侧的注释腾出空间- 将区间名称和数据存储在字典中,以及
- 计算每个指定区间的中间值,并且
xref="paper"
使用,将注释放置在 y 轴的左侧- 不会弄乱 y 轴刻度线的值。
阴谋
完整代码:
import plotly.graph_objects as go
import numpy as np
x = np.arange(-10,10,1)
y = np.arange(-10,10,1)
y_annotation = [ 'Flexion' if data > 0 else 'Extension' for data in y ]
intervals = {'Flexion':[0,10],
'Extension':[0, -10]}
# plotly setup
fig = go.Figure( data= go.Scatter(x=x,y=y) )
# make room for annotations
fig.update_layout(margin=dict(l=150))
for k in intervals.keys():
fig.add_annotation(dict(font=dict(color="green",size=14),
#x=x_loc,
x=-0.16,
y=(intervals[k][0]+intervals[k][1])/2,
showarrow=False,
text="<i>"+k+"</i>",
textangle=0,
xref="paper",
yref="y"
))
fig.show()
推荐阅读
- c++ - 从一个函数中获取值并在另一个函数中使用它们
- java - Eclipse 不在 src 文件夹中显示 java 文件夹(gradle)
- sql-server - 每天在某个时间运行一个函数?
- keras - 在 Keras 中获取非线性激活之前的输出
- java - 如何从(双)ArrayList 中找到最小值、最大值和平均值以打开 GUI(图形)?
- database - 重定向后的 Laravel 页面加载需要永远
- flutter - 英雄动画导致(最小)溢出
- javascript - 如何在javascript中设置外部div的长度,呼吸
- qt - QWidget 报告相同的错误宽度值
- python - Python Pillow / Numpy 数组是这些像素“连接”的吗?