首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在实际气泡图中标注特定的气泡

在实际气泡图中标注特定的气泡
EN

Stack Overflow用户
提问于 2018-05-10 16:52:58
回答 1查看 1.8K关注 0票数 1

我很难弄清楚如何在plot.ly气泡图中标注特定的气泡。我希望某些“离群”的气泡有文字写在泡沫内,而不是通过悬停文本。

假设我有这些数据:

代码语言:javascript
复制
import plotly.plotly as py
import plotly.graph_objs as go

trace0 = go.Scatter(
    x=[1, 2, 3, 4],
    y=[10, 11, 12, 13],
    mode='markers',
    marker=dict(
        size=[40, 60, 80, 100],
    )
)

data = [trace0]
py.iplot(data, filename='bubblechart-size')

我只想在对应于(1,10)和(4,13)的气泡上添加文本标记。此外,是否可以控制文本标记的位置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-10 18:01:43

您可以通过注解实现这一点。

这允许您在图表上写入任何您想要的文本,并将其引用到您的数据中。还可以使用位置锚点或在x和y数据顶部应用额外的计算来控制文本出现的位置。例如:

代码语言:javascript
复制
x_data = [1, 2, 3, 4]
y_data = [10, 11, 12, 13]
z_data = [40, 60, 80, 100]

annotations = [
    dict(
        x=x, 
        y=y,
        text='' if 4 > x > 1 else z, # Some conditional to define outliers
        showarrow=False,
        xanchor='center',  # Position of text relative to x axis (left/right/center)
        yanchor='middle',  # Position of text relative to y axis (top/bottom/middle)
    ) for x, y, z in zip(x_data, y_data, z_data)
]

trace0 = go.Scatter(
    x=x_data,
    y=y_data,
    mode='markers',
    marker=dict(
        size=z_data,
    )
)

data = [trace0]
layout = go.Layout(annotations=annotations)

py.iplot(go.Figure(data=data, layout=layout), filename='bubblechart-size')

编辑

如果使用袖扣,则可以将上述内容稍加修改,以适应:

代码语言:javascript
复制
bubbles_to_annotate = df[(df['avg_pos'] < 2) | (df['avg_pos'] > 3)]  # Some conditional to define outliers
annotations = [
    dict(
        x=row['avg_pos'], 
        y=row['avg_neg'],
        text=row['subreddit'],
        showarrow=False,
        xanchor='center',  # Position of text relative to x axis (left/right/center)
        yanchor='middle',  # Position of text relative to y axis (top/bottom/middle)
    ) for _, row in bubbles_to_annotate.iterrows()
]

df.iplot(kind='bubble', x='avg_pos', y='avg_neg', size='counts', 
       text='subreddit', xTitle='Average Negative Sentiment', 
       yTitle='Average Positive Sentiment', annotations=annotations,
       filename='simple-bubble-chart')

您仍然需要定义注释,因为您需要一个条件参数。然后通过annotations直接传递给袖扣。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50277856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档