Python使用Plotly绘图工具,绘制直方图

时间:2023-12-14 14:41:56

今天我们再来讲解一下Python使用Plotly绘图工具如何绘制直方图

使用plotly绘制直方图需要用到graph_objs包中的Histogram函数

我们将数据赋值给函数中的x变量,x = data

即可绘制出直方图如果将数据赋值给y变量,

则会,绘制出水平直方图。

下面我们来看个基本例子

import plotly as py
import plotly.graph_objs as go
import numpy as np pyplt = py.offline.plot
s1 = np.random.RandomState(1)
x = s1.randn(1000)
data = [go.Histogram(x=x,
histnorm = 'probability')]
# y = x 水平直方图,histnorm='probability' y轴显示概率,没有则显示数目
pyplt(data, filename='tmp/1.html')

Python使用Plotly绘图工具,绘制直方图

运行上诉代码,我们可以得到一个如上图所示的基本直方图

数据是有numpy随机生成的

histnorm是Histogram函数的另外一个属性,默认状态下表示直方图

纵坐标落入区间内的样本数目

如果我们设定histnorm = 'probability' 则纵坐标变为落入区间内的样本频率

重叠垂直直方图

我们在说说重叠垂直直方图的绘制

需要在Layout中设置barmode属性,将其改为‘overlay’

如果我们不对其进行设置,会出现Plotly默认将两个直方图的柱状宽度强制变窄

以满足重叠部分的显示需求。

下面我们来看下,数据有Numpy随机生成

import plotly as py
import plotly.graph_objs as go
import numpy as np pyplt = py.offline.plot
s1 = np.random.RandomState(1)
x0 = s1.randn(1000)
x1 = s1.chisquare(5,1000) trace1 = go.Histogram(
x = x0,
histnorm = 'probability',
opacity = 0.75
)
trace2 = go.Histogram(
x = x1,
histnorm = 'probability',
opacity = 0.75
) data = [trace1, trace2]
layout = go.Layout(barmode='overlay')
fig = go.Figure(data = data, layout = layout)
pyplt(fig, filename='tmp/1.html')

Python使用Plotly绘图工具,绘制直方图

运行上诉代码,我们可以得到,如图所示的重叠直方图,蓝色部分和橘黄色部分重叠的位置显示。

层叠直方图

绘制层叠直方图同样需要设置barmode属性,将其设置为‘stack’

下面我们看一下使用Numpy随机生成相同的正态分布数据图的叠加效果

import plotly as py
import plotly.graph_objs as go
import numpy as np
pyplt = py.offline.plot s1 = np.random.RandomState(1)
x0 = s1.randn(1000)
x1 = s1.randn(1000) trace0 = go.Histogram(
x=x0
)
trace1 = go.Histogram(
x=x1
)
data = [trace0, trace1]
layout = go.Layout(barmode='stack')
fig = go.Figure(data=data, layout=layout) pyplt(fig, filename='tmp/1.html')

Python使用Plotly绘图工具,绘制直方图

运行上诉代码,我们得到了如上图所示的图例,可以看到,两部分重叠在一个区域内

今天就先想到这里哈,感谢大家阅读,欢迎点赞转发。