Python:如何使用Plotly堆叠或叠加直方图

anthonym650

我在单独的列表中有两组数据。每个列表元素的值都从0:100开始,元素重复。

例如:
first_data = [10,20,40,100,...,100,10,50]
second_data = [20,50,50,10,...,70,10,100]

我可以使用以下方式在直方图中绘制其中之一:

import plotly.graph_objects as go
.
.
.

fig = go.Figure()
fig.add_trace(go.Histogram(histfunc='count', x=first_data))
fig.show()

通过设置histfunc'count',我的直方图由0到100的x轴和表示中重复元素数的条形组成first_data

我的问题是:如何使用相同的“计数”直方图在同一轴上覆盖第二组数据?

S3DEV

实现此目的的一种方法是,只需添加另一条迹线,您就快到了!可以在本文的最后部分找到用于创建这些示例的数据集。

注意:
以下代码使用“较低级别”的plotly API,因为(个人而言)我认为它更透明,并且使用户能够查看正在绘制的内容以及原因;而不是依靠graph_objectsand的便捷模块express

选项1-叠加条:

from plotly.offline import plot

layout = {}
traces = []

traces.append({'x': data1, 'name': 'D1', 'opacity': 1.0})
traces.append({'x': data2, 'name': 'D2', 'opacity': 0.5})

# For each trace, add elements which are common to both.
for t in traces:
    t.update({'type': 'histogram',
              'histfunc': 'count',
              'nbinsx': 50})

layout['barmode'] = 'overlay'

plot({'data': traces, 'layout': layout})

输出1:

在此处输入图片说明

选项2-曲线图:

另一个选择是绘制分布曲线(高斯KDE),如下所示。值得注意的是,此方法绘制的是概率密度,而不是计数。

X1, Y1 = calc_curve(data1)
X2, Y2 = calc_curve(data2)

traces = []
traces.append({'x': X1, 'y': Y1, 'name': 'D1'})
traces.append({'x': X2, 'y': Y2, 'name': 'D2'})

plot({'data': traces})

输出2:

在此处输入图片说明

相关calc_curve()功能:

from scipy.stats import gaussian_kde

def calc_curve(data):
    """Calculate probability density."""
    min_, max_ = data.min(), data.max()
    X = [min_ + i * ((max_ - min_) / 500) for i in range(501)]
    Y = gaussian_kde(data).evaluate(X)
    return(X, Y)

选项3-绘图条和曲线:

或者,您始终可以使用y轴上的概率密度将这两种方法结合在一起。

layout = {}
traces = []

traces.append({'x': data1, 'name': 'D1', 'opacity': 1.0})
traces.append({'x': data2, 'name': 'D2', 'opacity': 0.5})

for t in traces:
    t.update({'type': 'histogram',
              'histnorm': 'probability density',
              'nbinsx': 50})

traces.append({'x': X1, 'y': Y1, 'name': 'D1'})
traces.append({'x': X2, 'y': Y2, 'name': 'D2'})

layout['barmode'] = 'overlay'

plot({'data': traces, 'layout': layout})  

输出3:

在此处输入图片说明

资料集:

这是一些代码,用于模拟[0,100]值的数据集并创建以下示例:

import numpy as np
from sklearn.preprocessing import MinMaxScaler

mms = MinMaxScaler((0, 100))
np.random.seed(4)
data1 = mms.fit_transform(np.random.randn(10000).reshape(-1, 1)).ravel()
data2 = mms.fit_transform(np.random.randn(10000).reshape(-1, 1)).ravel()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建带有ggplot2的堆叠直方图?

来自分类Dev

使用matplotlib在python中绘制堆叠的直方图

来自分类Dev

堆叠组件的直方图

来自分类Dev

使用pandas dataframes数据python创建堆叠的直方图

来自分类Dev

如何使用python或matlab将多个图像彼此堆叠?

来自分类Dev

如何在kibana上制作堆叠的直方图?

来自分类Dev

gnuplot堆叠直方图重叠

来自分类Dev

Python堆叠直方图分组数据

来自分类Dev

如何以这种形状使用python和pandas堆叠数据?

来自分类Dev

如何使用线在R的直方图顶部叠加频率多边形?

来自分类Dev

如何使用python matplotlib绘制正态分布的直方图?

来自分类Dev

如何在python / plotly中制作2D向量分布的3D直方图

来自分类Dev

如何使用python中堆叠的相同装饰器?

来自分类Dev

直方图条不能在python中使用matplotlib堆叠

来自分类Dev

如何使用seaborn绘制将直方图条围绕刻度线居中?堆叠条是必不可少的

来自分类Dev

如何在Python中的单个图形中堆叠多个直方图?

来自分类Dev

如何使用Python在Plotly Express中制作水平直方图?

来自分类Dev

如何在matplotlib中并排绘制堆叠的直方图?

来自分类Dev

Python堆叠直方图

来自分类Dev

如何使用python或matlab将多个图像彼此堆叠?

来自分类Dev

使用Python生成直方图

来自分类Dev

在R Plotly中叠加两个直方图

来自分类Dev

Twitter 数据 - 如何使用 plotly - R 修改堆叠条中的 y 轴

来自分类Dev

在python中使用plotly创建堆叠图或条形图

来自分类Dev

如何使用 Pandas python 构建直方图子图

来自分类Dev

如何从 Pandas DataFrame 开始绘制堆叠时间直方图?

来自分类Dev

散景如何有一个叠加直方图

来自分类Dev

使用反应变量使用 plotly 绘制直方图

来自分类Dev

Pandas Python 中的堆叠直方图

Related 相关文章

  1. 1

    如何创建带有ggplot2的堆叠直方图?

  2. 2

    使用matplotlib在python中绘制堆叠的直方图

  3. 3

    堆叠组件的直方图

  4. 4

    使用pandas dataframes数据python创建堆叠的直方图

  5. 5

    如何使用python或matlab将多个图像彼此堆叠?

  6. 6

    如何在kibana上制作堆叠的直方图?

  7. 7

    gnuplot堆叠直方图重叠

  8. 8

    Python堆叠直方图分组数据

  9. 9

    如何以这种形状使用python和pandas堆叠数据?

  10. 10

    如何使用线在R的直方图顶部叠加频率多边形?

  11. 11

    如何使用python matplotlib绘制正态分布的直方图?

  12. 12

    如何在python / plotly中制作2D向量分布的3D直方图

  13. 13

    如何使用python中堆叠的相同装饰器?

  14. 14

    直方图条不能在python中使用matplotlib堆叠

  15. 15

    如何使用seaborn绘制将直方图条围绕刻度线居中?堆叠条是必不可少的

  16. 16

    如何在Python中的单个图形中堆叠多个直方图?

  17. 17

    如何使用Python在Plotly Express中制作水平直方图?

  18. 18

    如何在matplotlib中并排绘制堆叠的直方图?

  19. 19

    Python堆叠直方图

  20. 20

    如何使用python或matlab将多个图像彼此堆叠?

  21. 21

    使用Python生成直方图

  22. 22

    在R Plotly中叠加两个直方图

  23. 23

    Twitter 数据 - 如何使用 plotly - R 修改堆叠条中的 y 轴

  24. 24

    在python中使用plotly创建堆叠图或条形图

  25. 25

    如何使用 Pandas python 构建直方图子图

  26. 26

    如何从 Pandas DataFrame 开始绘制堆叠时间直方图?

  27. 27

    散景如何有一个叠加直方图

  28. 28

    使用反应变量使用 plotly 绘制直方图

  29. 29

    Pandas Python 中的堆叠直方图

热门标签

归档