gpt4 book ai didi

python - Plotly:如何绘制累积的 "steps"直方图?

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:35 25 4
gpt4 key购买 nike

我试图在 python 中使用 Plotly 绘制累积直方图,但让它看起来像“阶梯”,即没有颜色的条形图,只显示顶行。像这样:

enter image description here

基本上,我正在尝试重现以下 matplotlib 代码的行为:

import matplotlib.pyplot as plt
plt.hist(x, cumulative=True, histtype='step')

到目前为止,我能做的最好的是:

import plotly.graph_objs as go
from plotly.offline import iplot
h = go.Histogram(x=x,
cumulative=dict(enabled=True),
marker=dict(color="rgba(0,0,0,0)",
line=dict(color="red", width=1)))
iplot([h])

结果如下:
enter image description here

那么有什么诀窍呢?

最佳答案

如果您愿意在绘制数据之前处理合并和累积,您可以使用具有线集形状属性的 go.Scatter 对象到 'hvh'

剧情:

enter image description here

代码:Jupyter Notebook 的设置

#imports
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

import numpy as np
import pandas as pd

# qtconsole for debugging
#%qtconsole -- style vim

# Notebook settings
init_notebook_mode(connected=True)

# Some sample data
x = np.random.normal(50, 5, 500)
binned = np.histogram(x, bins=25, density=True)
plot_y = np.cumsum(binned[0])

# Line
trace1 = go.Scatter(
x=binned[1],
y=plot_y,
mode='lines',
name="X",
hoverinfo='all',
line=dict(color = 'rgb(1255, 0, 0)', shape='hvh'
)
)

data = [trace1]

# Layout
layout = dict(title = 'Binned data from normal distribution',
legend=dict(
y=0.5,
traceorder='reversed',
font=dict(
size=16
)
)
)

# Make figure
fig = dict(data=data, layout=layout)

# Plot
iplot(fig, filename='line-shapes')

我希望这是您可以使用的东西!

如果没有,请随时告诉我。

一些细节:

数据样本是使用 np.random.normal() 制作的。 x 是均值 = 50、sigma = 5 和 500 个观测值的抽样正态分布。然后使用返回两个数组的 np.histogram()x 放入 50 个 bin 中。这些用作绘图的数据源。

可能的替代方法:

我还尝试将您的代码段与一些随机样本数据一起使用,并在您的 line=dict(color="red", width=1) 中包含 shape='hvh' >。但这似乎没有用。我还考虑过修改 go.Histogram() 的布局,以便只绘制条形图的顶行,但我认为这是不可能的。

关于python - Plotly:如何绘制累积的 "steps"直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55220935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com