Plotly:如何以根样式绘制直方图,仅显示直方图的轮廓?

use*_*780 3 python histogram plotly plotly-python

我想用这种风格制作直方图:

用 Root 制作的直方图

但是在Python中使用plotly 。即我想合并条形并仅绘制轮廓。我正在使用这段代码:

import plotly.graph_objects as go

import numpy as np

x = np.random.randn(500)
fig = go.Figure(data=[go.Histogram(x=x)])
fig.show()
Run Code Online (Sandbox Code Playgroud)

我一直在寻找有关如何执行此操作的示例,但找不到任何示例。

ves*_*and 6

您最好的选择是使用 numpy like 处理直方图count, index = np.histogram(df['data'], bins=25),然后使用go.Scatter()线型并将其设置为horizontal, vertical, horizontalwith line=dict(width = 1, shape='hvh')。看看最后一部分为什么这go.Histogram()不是您的最佳选择。通过 的布局的一些其他规范go.Scatter(),下面的代码片段将生成以下图:

在此输入图像描述

完整代码

import plotly.graph_objects as go
import pandas as pd
import numpy as np
import plotly.io as pio
import plotly.express as px

pio.templates.default = "plotly_white"

# random numbers to a df
np.random.seed(12)
df = pd.DataFrame({'data': np.random.randn(500)})

# produce histogram data wiht numpy
count, index = np.histogram(df['data'], bins=25)

# plotly, go.Scatter with line shape set to 'hvh'
fig = go.Figure()
fig.add_traces(go.Scatter(x=index, y = count,
                          line=dict(width = 1, shape='hvh')))

# y-axis cosmetics
fig.update_yaxes(
    showgrid=False,
    ticks="inside",
    tickson="boundaries",
    ticklen=10,
    showline=True,
    linewidth=1,
    linecolor='black',
    mirror=True,
    zeroline=False)

# x-axis cosmetics
fig.update_xaxes(
    showgrid=False,
    ticks="inside",
    tickson="boundaries",
    ticklen=10,
    showline=True,
    linewidth=1,
    linecolor='black',
    mirror=True,
    zeroline=False)

fig.show()
Run Code Online (Sandbox Code Playgroud)

为什么go.Scatter()又不呢go.Histogram()

使用您的方法最接近您想要的情节fig = go.Figure(data=[go.Histogram(x=x)])是:

在此输入图像描述

这非常接近,但您特别想排除每个“条”的垂直线。而且我还没有找到一种方法来通过go.Histogram设置排除或隐藏它们。

代码为go.Histogram()

import plotly.graph_objects as go
import pandas as pd
import numpy as np
import plotly.io as pio
import plotly.express as px

pio.templates.default = "plotly_white"

import numpy as np

x = np.random.randn(500)
fig = go.Figure(data=[go.Histogram(x=x)])
fig.update_traces(marker=dict(color='rgba(0,0,0,0)', line=dict(width=1, color='blue')))
fig.show()
Run Code Online (Sandbox Code Playgroud)