python-3.x Plotly:如何在折线图中为最后一个值启用文本标签?

llew8vvj  于 2023-02-10  发布在  Python
关注(0)|答案(1)|浏览(204)

我试图建立一个图表,其中线图应该只显示最后一个元素的值在一些美丽的格式化。
line graph with no text at end
现在,文本的当前方法显示所有元素,并且是一个直文本,它会在同一个图形中与不同的线产生很多冲突,看起来很笨拙。
将是非常好的实现如下图所述的东西。
desired line graph with text

k10s72fa

k10s72fa1#

现在通过以下方式处理:

legendgroup = d.name

图1:全部

图2:取消选择图例中的GOOG,并看到标记也消失了:

完整代码:

# imports
import pandas as pd
import plotly.express as px

# data
df = px.data.stocks()
df = df.drop('AMZN', axis = 1)
colors = px.colors.qualitative.T10

# plotly
fig = px.line(df, 
                 x = 'date',
                 y = [c for c in df.columns if c != 'date'],
                 template = 'plotly_dark',
                 color_discrete_sequence = colors,
                 title = 'Stocks', 
             )

# move legend
fig.layout.legend.x = -0.3

# add traces for annotations and text for end of lines
for i, d in enumerate(fig.data):
    fig.add_scatter(x=[d.x[-1]], y = [d.y[-1]],
                    mode = 'markers+text',
                    text = d.y[-1],
                    textfont = dict(color=d.line.color),
                    textposition='middle right',
                    marker = dict(color = d.line.color, size = 12),
                    legendgroup = d.name,
                    showlegend=False)

fig.show()

相关问题