加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 加权直方图

发布时间:2020-12-16 22:24:50 所属栏目:Python 来源:网络整理
导读:我正在寻求从matplotlib迁移到plotly,但似乎情节上并没有与pandas良好的集成.例如,我正在尝试制作一个指定箱数的加权直方图: sns.distplot(df.X,bins=25,hist_kws={'weights':df.W.values},norm_hist=False,kde=False) 但我没有找到一个简单的方法来做到这

我正在寻求从matplotlib迁移到plotly,但似乎情节上并没有与pandas良好的集成.例如,我正在尝试制作一个指定箱数的加权直方图:

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

但我没有找到一个简单的方法来做到这一点.如何以简单的方式使用pandas.DataFrame从pandas.DataFrame中直接绘制数据的直方图?

最佳答案
图形直方图图形对象似乎不支持权重.然而,numpys直方图功能支持权重,并且可以轻松地计算我们在绘制条形图中创建直方图所需的一切.

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

# 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,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,kde=False)
plt.show()

我们可以看到,我们的任意1和3权重适用于每种分布模式.

enter image description here

通过plotly,您可以使用带有numpy的条形图对象

# 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,weights=df.W.values)
data = [go.Bar(x=bin_edges,y=counts)]

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

您可能必须重新实现直方图的其他注记特征以适合您的用例,这些可能会带来更大的挑战,但情节内容本身在情节上很有效.

看到它呈现在这里:https://plot.ly/~Jwely/24/#plot

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读