Lui*_*uez 6 python plot histogram
我正在寻求从中迁移matplotlib到plotly,但似乎plotly没有很好的集成pandas.例如,我正在尝试制作一个指定箱数的加权直方图:
sns.distplot(df.X, bins=25, hist_kws={'weights':df.W.values},norm_hist=False,kde=False)
Run Code Online (Sandbox Code Playgroud)
但我没有找到一个简单的方法来做到这一点plotly.如何以直接的方式从pandas.DataFrame使用plotly中生成数据的直方图?
直方图对象plotly似乎不支持权重。然而,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, 1, 5000))),
"W": np.array([1] * 5000 + [3] * 5000)
})
Run Code Online (Sandbox Code Playgroud)
您包含的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()
Run Code Online (Sandbox Code Playgroud)
我们可以看到我们的任意 1 和 3 权重已正确应用于每种分布模式。
使用plotly,您可以将Bar图形对象与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, bins=25, weights=df.W.values)
data = [go.Bar(x=bin_edges, y=counts)]
py.plot(data, filename='bar-histogram')
Run Code Online (Sandbox Code Playgroud)
您可能必须重新实现直方图的其他注释功能以适应您的用例,这些可能会带来更大的挑战,但绘图内容本身在绘图上效果很好。
在这里查看它的渲染: https: //plot.ly/~Jwely/24/#plot
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |