如何在 python 中为 plotly boxplot 添加标签?

Posted

技术标签:

【中文标题】如何在 python 中为 plotly boxplot 添加标签?【英文标题】:How do you add labels to a plotly boxplot in python? 【发布时间】:2014-12-19 15:23:13 【问题描述】:

我有以下代码;

y = errnums
err_box = Box(
    y=y,
    name='Error Percent',
    boxmean='sd',
    marker=Marker(color='red'),
    boxpoints='all',
    jitter=0.5,
    pointpos=-2.0
)
layout = Layout(
    title='Error BoxPlot',
    height=500,
    width=500
)
fig = Figure(data=Data([err_box]), layout=layout)
plotly.image.save_as(fig, os.path.join(output_images, 'err_box.png'))

生成如下图像;

我想做的是以下两件事;

1) 在 y 轴数字旁边添加 %。 (而不是使用传统的 y 轴标签显示“错误 (%)”)

2) 标记所有重要点:均值、第一四分位数、第三四分位数和标准差。理想情况下,标签应该是该行旁边的 4 sig-fig ('.2f') 数字。

另外,stdev 是虚线,菱形代表 1 sigma? 2 西格玛?

【问题讨论】:

【参考方案1】:

对于标签,请尝试annotations. 您必须计算四分位数,并且要自己定位标签。

简单示例:

import plotly.plotly as py
from plotly.graph_objs import *

data = Data([
    Box(
        y=[0, 1, 1, 2, 3, 5, 8, 13, 21],
        boxpoints='all',
        jitter=0.3,
        pointpos=-1.8
    )
])
layout = Layout(
    annotations=Annotations([
        Annotation(
            x=0.3,
            y=8.822,
            text='3rd Quartile',
            showarrow=False,
            font=Font(
                size=16
            )
        )
    ])
)
fig = Figure(data=data, layout=layout)
plot_url = py.plot(fig)

Simple Python boxplot

我建议在 Plotly 工作区中添加和定位注解,然后查看生成的代码:

菱形显示平均值,距离平均值 +- 1 个标准差。

目前无法在 y 轴标签上添加 %。

【讨论】:

我写的程序需要自带,无法手动设置注解。我可以让 python 计算四分位数和平均值(可能通过numpy),然后将其用于注释中的 y 值吗? x 值可能只是一些默认偏移量。 我已经通过numpy.percentile 弄明白了。 在 3D 绘图上怎么样?我在 AnnotationsAnnotations 类中没有看到 zaxis。

以上是关于如何在 python 中为 plotly boxplot 添加标签?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pandas.DataFrame.plot() 中为标题设置字体大小?

如何在 PLOTLY JS 中为每个子图添加标题

如何在 Plotly 中为瀑布图添加总值列

在 plotly 中为每个条形图添加两个文本

如何在 R 中为 plotly boxplots 自定义悬停文本

如何使用R在plot_ly中为子图提供字幕