如何解决在Plotly中为图表注释添加自定义标签 包含示例数据的完整代码:
我正在创建许多图表,这些图表上将添加各种注释,以表示单个条件的存在。
我想做的是在图表图例中添加一个标签,以指定这些注释表示的内容。
这是一个可以重新创建的精简示例:
import pandas as pd
import numpy as np
import plotly.graph_objects as go
dates = pd.date_range(start='2020-01-01',periods=100)
random = np.random.RandomState(0)
df = pd.DataFrame({
#'data': data1
'data': np.random.uniform(low=0,high=100,size=100).tolist()
},index=dates)
fig = go.Figure()
fig.add_trace(go.Scatter(x=df.index,y=df['data']))
arrow_dates = df[df.data > 0.8].index
arrow_values = df[df.data > 0.8]['data'].tolist()
annotation_arrows = [dict(x=arrow_date,y=arrow_val,showarrow=True,arrowwidth=2,arrowhead=1,arrowcolor='blue',yshift=10,arrowside='end') for arrow_date,arrow_val in zip(arrow_dates,arrow_values)]
fig.update_layout(annotations=annotation_arrows)
fig.show()
这提供了以下图表:
我想做的是为所述图表添加一个说明条件的图例。理想情况下,它将是箭头本身的图标及其说明,例如“数据> 0.8”,并在图表图例中显示箭头图片。
这可能吗?
谢谢。
解决方法
为了在图例中优雅地进行设置,我认为最好的方法是包括一个新的跟踪器,该跟踪器带有指示何时满足特定条件的标记。下面的代码片段是通过以下方式实现的:
fig.add_traces(go.Scatter(x=df.index,y=df['condition1']*1.05,mode='markers',marker = dict(symbol='triangle-down'),name = 'Condition 1'))
看看plotlys marker styles,找到比'triangle-down'
更适合您的需求的一种。这可能不是一个完美的解决方案,但至少您会在图例中获得整齐的信息:
包含示例数据的完整代码:
import pandas as pd
import numpy as np
import plotly.graph_objects as go
dates = pd.date_range(start='2020-01-01',periods=100)
random = np.random.RandomState(0)
df = pd.DataFrame({
'data': np.random.uniform(low=0,high=100,size=100).tolist()
},index=dates)
df['condition1'] = 99
fig = go.Figure()
fig.add_trace(go.Scatter(x=df.index,y=df['data']))
arrow_dates = df[df.data > 0.95].index
arrow_values = df[df.data > 0.95]['data'].tolist()
# annotation_arrows = [dict(x=arrow_date,y=arrow_val,showarrow=True,arrowwidth=2,# arrowhead=1,arrowcolor='blue',yshift=10,arrowside='end') for arrow_date,arrow_val in zip(arrow_dates,arrow_values)]
#fig.update_layout(annotations=annotation_arrows)
df['condition1'] = df['data'].where(df['data']>95)
fig.add_traces(go.Scatter(x=df.index,name = 'Condition 1'))
fig.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。