python – 加权直方图

前端之家收集整理的这篇文章主要介绍了python – 加权直方图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在寻求从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

原文链接:https://www.f2er.com/python/438951.html

猜你在找的Python相关文章