【Python百日进阶-数据分析】Day144 - plotly箱线图:go.box()实例
创始人
2024-05-05 17:28:58
0

文章目录

    • 4.2 go.Box 箱线图
      • 4.2.1 基本箱线图
      • 4.2.2 基本水平箱线图
      • 4.2.3 显示基础数据的箱线图
      • 4.2.4 修改计算四分位数的算法
      • 4.2.5 带有预先计算的四分位数的箱线图
      • 4.2.6 彩色箱线图
      • 4.2.7 箱线图样式均值和标准差
      • 4.2.8 造型异常值
      • 4.2.9 分组箱线图
      • 4.2.10 分组水平箱线图
      • 4.2.11 彩虹箱形图
      • 4.2.12 完全风格的箱线图
      • 4.2.13 只有点的箱线图
      • 4.2.14 Dash中的箱线图

4.2 go.Box 箱线图

如果Plotlygo.Boxplotly.graph_objects Express 没有提供一个好的起点,也可以使用. go.Box参考页面https://plotly.com/python/reference/box/中描述了所有可用选项。

4.2.1 基本箱线图

import plotly.graph_objects as go
import numpy as np
np.random.seed(1)y0 = np.random.randn(50) - 1
y1 = np.random.randn(50) + 1fig = go.Figure()
fig.add_trace(go.Box(y=y0))
fig.add_trace(go.Box(y=y1))fig.show()

在这里插入图片描述

4.2.2 基本水平箱线图

import plotly.graph_objects as go
import numpy as npx0 = np.random.randn(50)
x1 = np.random.randn(50) + 2 # shift meanfig = go.Figure()
# 对于水平打印,使用x而不是y参数
fig.add_trace(go.Box(x=x0))
fig.add_trace(go.Box(x=x1))fig.show()

在这里插入图片描述

4.2.3 显示基础数据的箱线图

import plotly.graph_objects as gofig = go.Figure(data=[go.Box(y=[0, 1, 1, 2, 3, 5, 8, 13, 21],boxpoints='all', # 也可以是异常值、可疑的异常值或错误jitter=0.3, # 添加一些抖动以更好地分离点pointpos=-1.8 # 点的相对位置wrt框)])fig.show()

在这里插入图片描述

4.2.4 修改计算四分位数的算法

有关每种算法如何工作的说明,请参阅选择计算四分位数的算法。

import plotly.graph_objects as godata = [1, 2, 3, 4, 5, 6, 7, 8, 9]fig = go.Figure()
fig.add_trace(go.Box(y=data, quartilemethod="linear", name="Linear Quartile Mode"))
fig.add_trace(go.Box(y=data, quartilemethod="inclusive", name="Inclusive Quartile Mode"))
fig.add_trace(go.Box(y=data, quartilemethod="exclusive", name="Exclusive Quartile Mode"))
fig.update_traces(boxpoints='all', jitter=0)
fig.show()

在这里插入图片描述

4.2.5 带有预先计算的四分位数的箱线图

您可以指定预先计算的四分位数属性,而不是使用内置的四分位数计算算法。

如果您已经预先计算了这些值,或者您需要使用与提供的算法不同的算法,这可能会很有用。

import plotly.graph_objects as gofig = go.Figure()fig.add_trace(go.Box(y=[[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]], name="Precompiled Quartiles"))fig.update_traces(q1=[ 1, 2, 3 ], median=[ 4, 5, 6 ],q3=[ 7, 8, 9 ], lowerfence=[-1, 0, 1],upperfence=[5, 6, 7], mean=[ 2.2, 2.8, 3.2 ],sd=[ 0.2, 0.4, 0.6 ], notchspan=[ 0.2, 0.4, 0.6 ] )fig.show()

在这里插入图片描述

4.2.6 彩色箱线图

import plotly.graph_objects as go
import numpy as npy0 = np.random.randn(50)
y1 = np.random.randn(50) + 1 # shift meanfig = go.Figure()
fig.add_trace(go.Box(y=y0, name='Sample A',marker_color = 'indianred'))
fig.add_trace(go.Box(y=y1, name = 'Sample B',marker_color = 'lightseagreen'))fig.show()

在这里插入图片描述

4.2.7 箱线图样式均值和标准差

import plotly.graph_objects as gofig = go.Figure()
fig.add_trace(go.Box(y=[2.37, 2.16, 4.82, 1.73, 1.04, 0.23, 1.32, 2.91, 0.11, 4.51, 0.51, 3.75, 1.35, 2.98, 4.50, 0.18, 4.66, 1.30, 2.06, 1.19],name='Only Mean',marker_color='darkblue',boxmean=True # 代表平均值
))
fig.add_trace(go.Box(y=[2.37, 2.16, 4.82, 1.73, 1.04, 0.23, 1.32, 2.91, 0.11, 4.51, 0.51, 3.75, 1.35, 2.98, 4.50, 0.18, 4.66, 1.30, 2.06, 1.19],name='Mean & SD',marker_color='royalblue',boxmean='sd' # 代表平均值和标准差
))fig.show()

在这里插入图片描述

4.2.8 造型异常值

下面的示例显示了如何使用该boxpoints参数。如果是“异常值”,则仅显示位于晶须之外的样本点。如果是“可疑异常值”,则会显示异常点,并且突出显示小于 4Q1-3Q3 或大于 4Q3-3Q1 的点(使用outliercolor)。如果“全部”,则显示所有样本点。如果为 False,则仅显示没有样本点的框。

import plotly.graph_objects as gofig = go.Figure()
fig.add_trace(go.Box(y=[0.75, 5.25, 5.5, 6, 6.2, 6.6, 6.80, 7.0, 7.2, 7.5, 7.5, 7.75, 8.15,8.15, 8.65, 8.93, 9.2, 9.5, 10, 10.25, 11.5, 12, 16, 20.90, 22.3, 23.25],name="All Points",jitter=0.3,pointpos=-1.8,boxpoints='all', # 代表所有点marker_color='rgb(7,40,89)',line_color='rgb(7,40,89)'
))fig.add_trace(go.Box(y=[0.75, 5.25, 5.5, 6, 6.2, 6.6, 6.80, 7.0, 7.2, 7.5, 7.5, 7.75, 8.15,8.15, 8.65, 8.93, 9.2, 9.5, 10, 10.25, 11.5, 12, 16, 20.90, 22.3, 23.25],name="Only Whiskers",boxpoints=False, # 没有数据点marker_color='rgb(9,56,125)',line_color='rgb(9,56,125)'
))fig.add_trace(go.Box(y=[0.75, 5.25, 5.5, 6, 6.2, 6.6, 6.80, 7.0, 7.2, 7.5, 7.5, 7.75, 8.15,8.15, 8.65, 8.93, 9.2, 9.5, 10, 10.25, 11.5, 12, 16, 20.90, 22.3, 23.25],name="Suspected Outliers",boxpoints='suspectedoutliers', # 只有可疑的异常值marker=dict(color='rgb(8,81,156)',outliercolor='rgba(219, 64, 82, 0.6)',line=dict(outliercolor='rgba(219, 64, 82, 0.6)',outlierwidth=2)),line_color='rgb(8,81,156)'
))fig.add_trace(go.Box(y=[0.75, 5.25, 5.5, 6, 6.2, 6.6, 6.80, 7.0, 7.2, 7.5, 7.5, 7.75, 8.15,8.15, 8.65, 8.93, 9.2, 9.5, 10, 10.25, 11.5, 12, 16, 20.90, 22.3, 23.25],name="Whiskers and Outliers",boxpoints='outliers', # 只有异常值marker_color='rgb(107,174,214)',line_color='rgb(107,174,214)'
))fig.update_layout(title_text="盒形图样式异常值")
fig.show()

在这里插入图片描述

4.2.9 分组箱线图

import plotly.graph_objects as gox = ['day 1', 'day 1', 'day 1', 'day 1', 'day 1', 'day 1','day 2', 'day 2', 'day 2', 'day 2', 'day 2', 'day 2']fig = go.Figure()fig.add_trace(go.Box(y=[0.2, 0.2, 0.6, 1.0, 0.5, 0.4, 0.2, 0.7, 0.9, 0.1, 0.5, 0.3],x=x,name='kale',marker_color='#3D9970'
))
fig.add_trace(go.Box(y=[0.6, 0.7, 0.3, 0.6, 0.0, 0.5, 0.7, 0.9, 0.5, 0.8, 0.7, 0.2],x=x,name='radishes',marker_color='#FF4136'
))
fig.add_trace(go.Box(y=[0.1, 0.3, 0.1, 0.9, 0.6, 0.6, 0.9, 1.0, 0.3, 0.6, 0.8, 0.5],x=x,name='carrots',marker_color='#FF851B'
))fig.update_layout(yaxis_title='标准化湿度',boxmode='group' # 将x的每个值的不同轨迹框组合在一起
)
fig.show()

在这里插入图片描述

4.2.10 分组水平箱线图

import plotly.graph_objects as goy = ['day 1', 'day 1', 'day 1', 'day 1', 'day 1', 'day 1','day 2', 'day 2', 'day 2', 'day 2', 'day 2', 'day 2']fig = go.Figure()
fig.add_trace(go.Box(x=[0.2, 0.2, 0.6, 1.0, 0.5, 0.4, 0.2, 0.7, 0.9, 0.1, 0.5, 0.3],y=y,name='kale',marker_color='#3D9970'
))
fig.add_trace(go.Box(x=[0.6, 0.7, 0.3, 0.6, 0.0, 0.5, 0.7, 0.9, 0.5, 0.8, 0.7, 0.2],y=y,name='radishes',marker_color='#FF4136'
))
fig.add_trace(go.Box(x=[0.1, 0.3, 0.1, 0.9, 0.6, 0.6, 0.9, 1.0, 0.3, 0.6, 0.8, 0.5],y=y,name='carrots',marker_color='#FF851B'
))fig.update_layout(xaxis=dict(title='标准化湿度', zeroline=False),boxmode='group'
)fig.update_traces(orientation='h') # 水平方框图
fig.show()

在这里插入图片描述

4.2.11 彩虹箱形图

import plotly.graph_objects as go
import numpy as npN = 30     # 盒子的数量# 通过固定HSL的饱和度和亮度,生成一系列彩虹颜色
# 色彩的表现和围绕色调前进。
# Plotly接受任何CSS颜色格式, see e.g. http://www.w3schools.com/cssref/css_colors_legal.asp.
c = ['hsl('+str(h)+',50%'+',50%)' for h in np.linspace(0, 360, N)]# 每个方框由一个包含数据、类型和颜色的dict表示。
# 使用列表理解来描述N个框,每个框都有不同的颜色和不同的随机生成的数据:
fig = go.Figure(data=[go.Box(y=3.5 * np.sin(np.pi * i/N) + i/N + (1.5 + 0.5 * np.cos(np.pi*i/N)) * np.random.rand(10),marker_color=c[i]) for i in range(int(N))])# 格式化布局
fig.update_layout(xaxis=dict(showgrid=False, zeroline=False, showticklabels=False),yaxis=dict(zeroline=False, gridcolor='white'),paper_bgcolor='rgb(233,233,233)',plot_bgcolor='rgb(233,233,233)',
)fig.show()

在这里插入图片描述

4.2.12 完全风格的箱线图

import plotly.graph_objects as go
import numpy as npx_data = ['Carmelo Anthony', 'Dwyane Wade','Deron Williams', 'Brook Lopez','Damian Lillard', 'David West',]N = 50y0 = (10 * np.random.randn(N) + 30).astype('int32')
y1 = (13 * np.random.randn(N) + 38).astype('int32')
y2 = (11 * np.random.randn(N) + 33).astype('int32')
y3 = (9 * np.random.randn(N) + 36).astype('int32')
y4 = (15 * np.random.randn(N) + 31).astype('int32')
y5 = (12 * np.random.randn(N) + 40).astype('int32')y_data = [y0, y1, y2, y3, y4, y5]colors = ['rgba(93, 164, 214, 0.5)', 'rgba(255, 144, 14, 0.5)', 'rgba(44, 160, 101, 0.5)','rgba(255, 65, 54, 0.5)', 'rgba(207, 114, 255, 0.5)', 'rgba(127, 96, 0, 0.5)']fig = go.Figure()for xd, yd, cls in zip(x_data, y_data, colors):fig.add_trace(go.Box(y=yd,name=xd,boxpoints='all',jitter=0.5,whiskerwidth=0.2,fillcolor=cls,marker_size=2,line_width=1))fig.update_layout(title='2012年NBA得分前9名球员的得分',yaxis=dict(autorange=True,showgrid=True,zeroline=True,dtick=5,gridcolor='rgb(255, 255, 255)',gridwidth=1,zerolinecolor='rgb(255, 255, 255)',zerolinewidth=2,),margin=dict(l=40,r=30,b=80,t=100,),paper_bgcolor='rgb(243, 243, 243)',plot_bgcolor='rgb(243, 243, 243)',showlegend=False
)fig.show()

在这里插入图片描述

4.2.13 只有点的箱线图

条形图就像一个显示点的箱形图,没有方框:

import plotly.express as px
df = px.data.tips()
print(df)
'''total_bill   tip     sex smoker   day    time  size
0         16.99  1.01  Female     No   Sun  Dinner     2
1         10.34  1.66    Male     No   Sun  Dinner     3
2         21.01  3.50    Male     No   Sun  Dinner     3
3         23.68  3.31    Male     No   Sun  Dinner     2
4         24.59  3.61  Female     No   Sun  Dinner     4
..          ...   ...     ...    ...   ...     ...   ...
239       29.03  5.92    Male     No   Sat  Dinner     3
240       27.18  2.00  Female    Yes   Sat  Dinner     2
241       22.67  2.00    Male    Yes   Sat  Dinner     2
242       17.82  1.75    Male     No   Sat  Dinner     2
243       18.78  3.00  Female     No  Thur  Dinner     2[244 rows x 7 columns]
'''
fig = px.strip(df, x='day', y='tip')
fig.show()

在这里插入图片描述

4.2.14 Dash中的箱线图

Dash是一个用于构建分析应用程序的开源框架,不需要 Javascript,它与 Plotly 图形库紧密集成。

在https://dash.plot.ly/installation了解如何安装 Dash 。

在您看到的这个页面的任何地方fig.show(),您都可以在 Dash 应用程序中显示相同的图形,方法是将其从内置包中传递给组件figure的参数,如下所示:Graphdash_core_components

import plotly.graph_objects as go # or plotly.express as px
fig = go.Figure() # or any Plotly Express function e.g. px.bar(...)
# fig.add_trace( ... )
# fig.update_layout( ... )import dash
import dash_core_components as dcc
import dash_html_components as htmlapp = dash.Dash()
app.layout = html.Div([dcc.Graph(figure=fig)
])app.run_server(debug=True, use_reloader=False)  # Turn off reloader if inside Jupyter

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...