如何在绘图破折号中向直方图添加垂直线?

kms*_*kms 2 python matplotlib plotly plotly-dash

我有一个graph在回调时触发的组件。这是我从回调函数绘制直方图的代码。

xtup = np.random.lognormal(90, 3, size=1000)
xtup = list(map('{:.0f}'.format,xtup[0]))
xarr = np.asarray(xtup).astype(np.float)

data = [go.Histogram(
                     x = xarr,
                     nbinsx=50,
                     marker=dict(color="rgb(105,105,105)",
                                 opacity=0.5
                                ),

       )]

layout = {
            "xaxis": {'title': 'Values',
                      'tickformat': '${:,.0f}'
                      #'range': [xarr.min(), xarr.max()]
                     },
            "title": "Distribution",
            "width": 650,
            "height": 400,
            "autosize": True
}

return{'data':data, 'layout':layout}
Run Code Online (Sandbox Code Playgroud)

我想在分布的平均值处添加一条垂直虚线。

ves*_*and 6

您的代码片段并不容易重现,但在此go.Histogram示例的基础上,您可以只包含:

fig.add_vline(x=np.median(df.total_bill), line_dash = 'dash', line_color = 'firebrick')
Run Code Online (Sandbox Code Playgroud)

并得到:

在此输入图像描述

请注意,这add_vline需要最新的plotly 版本才能正常运行。

完整代码:

import plotly.express as px
import numpy as np
df = px.data.tips()
fig = px.histogram(df, x="total_bill")
fig.add_vline(x=np.median(df.total_bill), line_dash = 'dash', line_color = 'firebrick')
fig.show()
Run Code Online (Sandbox Code Playgroud)