gpt4 book ai didi

python - 加权直方图

转载 作者:太空狗 更新时间:2023-10-30 00:08:54 26 4
gpt4 key购买 nike

我希望从 matplotlib 迁移到 plotly,但似乎 plotlypandas 没有很好的集成。例如,我正在尝试制作一个指定 bin 数量的加权直方图:

sns.distplot(df.X, bins=25, hist_kws={'weights':df.W.values},norm_hist=False,kde=False)  

但我找不到使用 plotly 执行此操作的简单方法。如何使用 plotly 以直接的方式从 pandas.DataFrame 制作数据直方图?

最佳答案

plotly 直方图图形对象似乎不支持权重。但是,numpys 直方图函数支持权重,并且可以轻松计算我们从 plotly 条形图创建直方图所需的一切。

我们可以构建一个看起来像您想要的占位符数据框:

# dataframe with bimodal distribution to clearly see weight differences.
import pandas as pd
from numpy.random import normal
import numpy as np

df =pd.DataFrame(
{"X": np.concatenate((normal(5, 1, 5000), normal(10, 1, 5000))),
"W": np.array([1] * 5000 + [3] * 5000)
})

您包含的 seaborn 调用使用此数据:

# weighted histogram with seaborn
from matplotlib import pyplot as plt
import seaborn as sns

sns.distplot(df.X, bins=25,
hist_kws={'weights':df.W.values}, norm_hist=False,kde=False)
plt.show()

我们可以看到我们的任意权重 1 和 3 已正确应用于每种分布模式。

enter image description here

有了 plotly,你可以只使用带有 numpy 的 Bar 图形对象

# with plotly, presuming you are authenticated
import plotly.plotly as py
import plotly.graph_objs as go

# compute weighted histogram with numpy
counts, bin_edges = np.histogram(df.X, bins=25, weights=df.W.values)
data = [go.Bar(x=bin_edges, y=counts)]

py.plot(data, filename='bar-histogram')

您可能需要重新实现直方图的其他注释功能以适应您的用例,这些可能会带来更大的挑战,但绘图内容本身在 plotly 上运行良好。

在此处查看它的渲染:https://plot.ly/~Jwely/24/#plot

关于python - 加权直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54355582/

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