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

如何使用amchart堆叠图表?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

gnuplot堆叠直方图重叠

来自分类Dev

Python堆叠直方图分组数据

来自分类Dev

Plotly:如何使3D堆叠柱状图?

来自分类Dev

Python并绘制直方图(使用matplotlib)

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何在直方图中拆分和堆叠条形图,仅填充下部条形图?

来自分类Dev

使用分类(二进制)值绘制水平“堆叠”直方图

来自分类Dev

如何使用数组使用Java直方图

来自分类Dev

如何在Python中使用Plotly Expess仅显示图例的子集(plotly.express,px)?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何使用CSS在卡片上叠加图像?

来自分类Dev

如何使用正确的X-ticks在Python中将(x,y)绘图叠加到Boxplot上?

来自分类Dev

python plotly-堆叠+分组的条形图

来自分类Dev

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

来自分类Dev

使用matplotlib创建直方图-Python

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何在gnuplot中为列堆叠直方图定义填充颜色

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

    堆叠组件的直方图

  4. 4

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

  5. 5

    如何使用amchart堆叠图表?

  6. 6

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

  7. 7

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

  8. 8

    gnuplot堆叠直方图重叠

  9. 9

    Python堆叠直方图分组数据

  10. 10

    Plotly:如何使3D堆叠柱状图?

  11. 11

    Python并绘制直方图(使用matplotlib)

  12. 12

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

  13. 13

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

  14. 14

    如何在直方图中拆分和堆叠条形图,仅填充下部条形图?

  15. 15

    使用分类(二进制)值绘制水平“堆叠”直方图

  16. 16

    如何使用数组使用Java直方图

  17. 17

    如何在Python中使用Plotly Expess仅显示图例的子集(plotly.express,px)?

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

    如何使用CSS在卡片上叠加图像?

  23. 23

    如何使用正确的X-ticks在Python中将(x,y)绘图叠加到Boxplot上?

  24. 24

    python plotly-堆叠+分组的条形图

  25. 25

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

  26. 26

    使用matplotlib创建直方图-Python

  27. 27

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

  28. 28

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

  29. 29

    如何在gnuplot中为列堆叠直方图定义填充颜色

热门标签

归档