找回密码
 会员注册
查看: 27|回复: 0

PythonPlotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-5 09:37:58 | 显示全部楼层 |阅读模式
文章目录一、介绍一下Plotly库二、Plotly可以做哪些可视化三、各类统计图3.1绘制散点图3.1.1一般案例3.1.2更多散点图的示例3.1.2.1绘制二维散点图3.1.1.2绘制三维散点图3.1.1.3绘制带气泡大小和颜色的散点图3.1.1.4绘制带趋势线的散点图3.1.3绘制散点图的参数说明3.2绘制折线图3.2.1一般示例3.2.2更多折线图的示例3.2.2.1简单折线图3.2.2.2折线图与散点图结合3.2.2.3多条折线图3.2.2.4带有误差线的折线图3.2.2.5带有多个子图的折线图3.2.3绘制折线图的参数说明3.3绘制条形图3.3.1一般示例3.3.2更多条形图的示例3.3.2.1簇状条形图(GroupedBarChart)3.2.2.2堆叠条形图(StackedBarChart)3.2.2.3水平条形图(HorizontalBarChart)3.2.2.4百分比堆叠条形图(PercentageStackedBarChart)3.2.2.5分组水平条形图(GroupedHorizontalBarChart)3.2.2.6交错条形图(DivergingBarChart)3.3.3条形图的参数3.4绘制面积图3.4.1一般示例3.4.2更多绘制面积图的例子3.4.2.1单一区域面积图3.4.2.2带有不透明度的堆叠式面积图3.4.3绘制面积图的参数3.5绘制直方图3.5.1一般示例3.5.2绘制直方图的更多示例3.5.2.1基本直方图3.5.2.2指定直方图的bin个数3.5.2.3指定直方图的bin范围3.5.2.4多直方图3.5.3绘制直方图的参数3.6绘制箱型图3.6.1一般示例3.6.2绘制箱型图的更多示例3.6.2.1单个箱型图3.6.2.2分组箱型图3.6.2.3水平箱型图3.6.2.4连续箱型图3.6.2.5多列数据箱型图3.6.2.6自定义箱型图3.6.3绘制箱型图的参数一、介绍一下Plotly库Plotly是一个数据可视化和数据分析的开源Python库。它提供了各种绘图类型,如线图、散点图、条形图、箱型图、热力图等,具有交互性和可定制性。它还提供了一个在线编辑器,可以在web上创建、分享和发布交互式图形。使用Plotly,用户可以快速轻松地制作出漂亮、高质量的可视化图表。Plotly支持多种绘图方式,包括静态图和交互式图。静态图适合在报告和出版物中使用,而交互式图则更适合在web应用程序和数据仪表板中使用。Plotly还支持在jupyternotebook中使用,方便进行数据分析和交互式数据可视化。Plotly的一个重要特性是其美观的外观和可定制性。用户可以使用Plotly提供的各种颜色方案,或者使用自己的颜色方案,以满足自己的需求。用户还可以通过修改布局和样式表来自定义图表的外观。Plotly提供了Python、R和JavaScript的接口,用户可以在这些语言中使用Plotly来创建图表。此外,Plotly还提供了一些数据分析和统计工具,如回归分析、聚类分析等。总之,Plotly是一个功能强大、易于使用和高度可定制的数据可视化工具,适合数据分析师、数据科学家、研究人员和开发人员等各种数据相关领域的使用。二、Plotly可以做哪些可视化Plotly支持绘制各种交互式可视化图形,包括但不限于:散点图(Scatterplot)折线图(Lineplot)条形图(Barchart)面积图(Areachart)直方图(Histogram)箱型图(Boxplot)热力图(Heatmap)等高线图(Contourplot)3D散点图(3DScatterplot)3D表面图(3DSurfaceplot)此外,Plotly还支持绘制地图可视化,包括散点地图、热力地图、轮廓地图、线路地图等。同时,Plotly还提供了丰富的交互式功能,例如缩放、平移、鼠标悬停提示、选择区域、自定义工具栏等。三、各类统计图3.1绘制散点图3.1.1一般案例绘制散点图可以使用plotly.graph_objects中的Scatter类或者使用plotly.express中的scatter函数。下面是使用plotly.express绘制散点图的示例代码:importplotly.expressaspximportpandasaspd#创建示例数据data=pd.DataFrame({'x':[1,2,3,4,5],'y':[5,4,3,2,1]})#使用plotly.express绘制散点图fig=px.scatter(data,x='x',y='y',title='Scatterplot')fig.show()123456789101112可以通过设置参数来自定义散点图的样式,例如修改颜色、大小、透明度等。更多关于绘制散点图的示例和参数说明可以参考官方文档:https://plotly.com/python/scatter-plots/13.1.2更多散点图的示例以下是几个绘制散点图的示例:3.1.2.1绘制二维散点图importplotly.graph_objsasgoimportnumpyasnp#创建随机数据np.random.seed(123)x=np.random.randn(100)y=np.random.randn(100)#创建散点图fig=go.Figure(data=go.Scatter(x=x,y=y,mode='markers'))#设置图表和轴标签fig.update_layout(title='RandomScatterPlot',xaxis_title='XAxis',yaxis_title='YAxis')#显示图表fig.show()123456789101112131415161718此代码将生成一个简单的散点图,显示100个随机生成的数据点。解释代码:首先,我们导入必要的模块和库,包括plotly.graph_objs模块和numpy库。接下来,我们使用numpy库生成100个随机数作为x和y的值。然后,我们使用plotly.graph_objs模块的Scatter方法创建一个散点图,将x和y的值作为参数传递给该方法,并设置mode参数为’markers’以表示散点图模式。接着,我们使用update_layout方法来设置图表的和轴标签。最后,我们使用show方法显示图表。您可以根据需要对此代码进行调整和修改,以生成您需要的二维散点图。3.1.1.2绘制三维散点图3.1.1.3绘制带气泡大小和颜色的散点图3.1.1.4绘制带趋势线的散点图这里列举的只是几个散点图的示例,plotly还支持许多其他类型的图表,比如柱状图、线图、箱线图等等。3.1.3绘制散点图的参数说明plotly绘制散点图时常用的参数说明如下:x:指定散点图中横坐标的数据。y:指定散点图中纵坐标的数据。mode:指定散点图的展示模式。可以设置为markers(散点图)、lines(折线图)、lines+markers(散点图和折线图混合)等。color:指定散点图中点的颜色,可以是数值型数据,也可以是分类型数据。size:指定散点图中点的大小,可以是数值型数据。symbol:指定散点图中点的形状,可以是圆形、正方形、三角形、菱形等。text:指定散点图中点的文本标签,可以是数值型数据,也可以是分类型数据。hover_name:指定鼠标悬停在散点图上时的标签,可以是数值型数据,也可以是分类型数据。hover_data:指定鼠标悬停在散点图上时的其他数据信息。opacity:指定散点图中点的透明度。marker:指定散点图中点的样式,包括颜色、大小、形状等。除了上述参数外,还可以通过layout函数设置散点图的布局、、轴标签等属性。3.2绘制折线图3.2.1一般示例要绘制折线图,可以使用plotly的go.Scatter对象。以下是一个简单的例子:importplotly.graph_objsasgox=[1,2,3,4,5]y=[2,1,3,2.5,4]trace=go.Scatter(x=x,y=y,mode='lines+markers')data=[trace]layout=go.Layout(title='MyLineChart')fig=go.Figure(data=data,layout=layout)fig.show()123456789101112在这个例子中,我们创建了一个包含x和y坐标的列表。然后,我们创建一个go.Scatter对象,并指定它的x和y属性,以及绘制模式为’lines+markers’,这将绘制折线图和数据点。接下来,我们将go.Scatter对象添加到一个列表中,并将其分配给变量data。然后,我们定义一个布局,其中包括一个,并将其与数据列表一起传递给go.Figure对象。最后,我们使用fig.show()方法显示图形。在实际应用中,我们可以根据需要更改线条的颜色、宽度、样式等属性,以及添加注释、调整布局等操作。3.2.2更多折线图的示例以下是一些折线图的示例:3.2.2.1简单折线图importplotly.graph_objsasgox_data=[1,2,3,4,5]y_data=[1,4,9,16,25]fig=go.Figure()fig.add_trace(go.Scatter(x=x_data,y=y_data,mode='lines',name='line'))fig.show()1234567893.2.2.2折线图与散点图结合importplotly.graph_objsasgox_data=[1,2,3,4,5]y_data=[1,4,9,16,25]fig=go.Figure()fig.add_trace(go.Scatter(x=x_data,y=y_data,mode='lines+markers',name='line'))fig.show()1234567893.2.2.3多条折线图importplotly.graph_objsasgox_data=[1,2,3,4,5]y1_data=[1,4,9,16,25]y2_data=[1,2,3,4,5]fig=go.Figure()fig.add_trace(go.Scatter(x=x_data,y=y1_data,mode='lines',name='line1'))fig.add_trace(go.Scatter(x=x_data,y=y2_data,mode='lines',name='line2'))fig.show()12345678910113.2.2.4带有误差线的折线图importplotly.graph_objsasgoimportnumpyasnpx_data=np.arange(0,2*np.pi,0.1)y_data=np.sin(x_data)error=0.1*np.abs(y_data)fig=go.Figure()fig.add_trace(go.Scatter(x=x_data,y=y_data,mode='lines',name='sin(x)'))fig.add_trace(go.Scatter(x=x_data,y=y_data+error,mode='lines',line=dict(width=0),showlegend=False))fig.add_trace(go.Scatter(x=x_data,y=y_data-error,mode='lines',line=dict(width=0),fillcolor='rgba(68,68,68,0.3)',fill='tonexty',showlegend=False))fig.show()12345678910111213141516171819202122232425262728293031323334353.2.2.5带有多个子图的折线图importplotly.graph_objsasgofromplotly.subplotsimportmake_subplotsimportnumpyasnpx_data=np.arange(0,2*np.pi,0.1)y1_data=np.sin(x_data)y2_data=np.cos(x_data)fig=make_subplots(rows=2,cols=1)fig.add_trace(go.Scatter(x=x_data,y=y1_data,mode='lines',name='sin(x)'),row=1,col=1)fig.add_trace(go.Scatter(x=x_data,y=y2_data,mode='lines',name='cos(x)'),row=2,col=1)fig.show()1234567891011121314以上是一些折线图的示例,您可以根据需要进行修改和定制。3.2.3绘制折线图的参数说明plotly绘制折线图的常用参数如下:x,y:指定x和y轴所对应的数据列。mode:指定折线图的类型,可以设置为‘lines’、‘markers’、‘lines+markers’等,其中‘lines’表示仅显示线段,‘markers’表示仅显示散点,‘lines+markers’表示同时显示线段和散点。line:一个字典,用于设置折线的属性,包括颜色、宽度、类型等。marker:一个字典,用于设置散点的属性,包括颜色、大小、类型等。text:用于为每个点添加文本标签,可以是一个字符串数组,也可以是一个数据列。hover_name:用于将鼠标悬停在点上时显示的标签指定为数据帧中的列名。hover_data:用于将鼠标悬停在点上时显示的数据指定为数据帧中的列名。name:为每个数据集指定一个名称,用于生成图例。另外还有一些常用的布局参数,用于控制图表的大小、、轴标签等。例如,width、height、title、xaxis_title、yaxis_title等。3.3绘制条形图3.3.1一般示例可以使用plotly.express中的bar函数绘制条形图。下面是一个简单的例子:importplotly.expressaspxdata={'fruit':['apple','banana','orange','kiwi'],'count':[3,2,4,1]}fig=px.bar(data,x='fruit',y='count')fig.show()123456789这将绘制一个简单的条形图,其中水果名称在X轴上显示,计数在Y轴上显示。您可以使用color参数指定一个列名,使每个条形的颜色根据该列的不同值而变化:importplotly.expressaspxdata={'fruit':['apple','banana','orange','kiwi'],'count':[3,2,4,1],'color':['red','yellow','orange','green']}fig=px.bar(data,x='fruit',y='count',color='color')fig.show()12345678910您还可以使用其他参数自定义图表的外观,例如:importplotly.expressaspxdata={'fruit':['apple','banana','orange','kiwi'],'count':[3,2,4,1],'color':['red','yellow','orange','green']}fig=px.bar(data,x='fruit',y='count',color='color')fig.update_layout(title='FruitCounts',xaxis_title='Fruit',yaxis_title='Count',font=dict(size=18))fig.show()123456789101112131415161718这将设置图表的,X轴和Y轴的,以及字体大小。3.3.2更多条形图的示例以下是一些常见的条形图示例:簇状条形图(GroupedBarChart):适用于比较不同类别之间的数值大小。堆叠条形图(StackedBarChart):适用于比较不同类别之间的数值大小,同时也能够显示总和的大小。水平条形图(HorizontalBarChart):适用于比较不同类别之间的数值大小,以及适用于较长类别名称的情况。百分比堆叠条形图(PercentageStackedBarChart):适用于比较不同类别之间的百分比大小,同时也能够显示总和的百分比大小。分组水平条形图(GroupedHorizontalBarChart):适用于比较不同类别之间的数值大小,以及适用于较长类别名称的情况。交错条形图(DivergingBarChart):适用于比较不同类别之间的数值大小,同时也能够显示相对大小和方向。在使用plotly绘制条形图时,可以通过传递不同的参数来实现这些不同类型的条形图,如barmode、orientation、stackgroup等等。具体使用方法和参数说明可以参考官方文档。3.3.2.1簇状条形图(GroupedBarChart)簇状条形图(GroupedBarChart)是用于显示两个或更多组之间比较的一种图表类型。在簇状条形图中,每个组有自己的条形,条形并排排列在同一水平线上,便于直接比较组之间的值。使用Plotly绘制簇状条形图需要指定barmode参数为group,并使用color参数指定组的颜色。以下是一个使用Plotly绘制簇状条形图的例子:importplotly.graph_objsasgo#准备数据data=[{'category':'A','value':10,'group':'Group1'},{'category':'B','value':20,'group':'Group1'},{'category':'C','value':30,'group':'Group1'},{'category':'A','value':15,'group':'Group2'},{'category':'B','value':25,'group':'Group2'},{'category':'C','value':35,'group':'Group2'},]#创建图表fig=go.Figure()#添加簇状条形图fig.add_trace(go.Bar(x=[d['category']fordindataifd['group']=='Group1'],y=[d['value']fordindataifd['group']=='Group1'],name='Group1',marker_color='blue'))fig.add_trace(go.Bar(x=[d['category']fordindataifd['group']=='Group2'],y=[d['value']fordindataifd['group']=='Group2'],name='Group2',marker_color='red'))#设置布局fig.update_layout(title='GroupedBarChart',barmode='group')#显示图表fig.show()1234567891011121314151617181920212223242526272829303132该例子中,我们首先准备了一个包含两个组、三个类别的数据集。然后,我们使用Plotly创建了一个空的图表,接着分别添加了两组簇状条形图,并设置barmode为group,color为不同的颜色。最后,我们使用update_layout()方法设置了图表和布局,并使用show()方法显示图表。3.2.2.2堆叠条形图(StackedBarChart)堆叠条形图(StackedBarChart)是一种用于比较多个项目不同部分之间相对比例的图表。它将多个条形图堆叠在一起,并且每个条形图的值都会被分成几个部分,每个部分用不同的颜色表示。下面是使用Plotly绘制堆叠条形图的示例代码:importplotly.expressaspximportpandasaspd#创建示例数据data={'year':[2016,2016,2017,2017],'quarter':['Q1','Q2','Q1','Q2'],'revenue':[100,150,200,250],'cost':[50,75,100,125]}df=pd.DataFrame(data)#绘制堆叠条形图fig=px.bar(df,x='year',y=['revenue','cost'],color_discrete_sequence=['#636EFA','#EF553B'],barmode='stack')fig.show()1234567891011121314这个示例代码中,我们使用了px.bar()函数来绘制堆叠条形图。x参数指定了用于分组的变量,y参数指定了需要绘制的数值变量,color_discrete_sequence参数指定了每个分组的颜色,barmode参数指定了堆叠模式。运行这个代码后,你应该会看到一张堆叠条形图,其中每个条形图的值被分成两个部分,分别用蓝色和红色表示。3.2.2.3水平条形图(HorizontalBarChart)水平条形图(HorizontalBarChart)是一种将数据以水平方向展示的条形图,适合于展示类别之间的大小比较。在Plotly中,可以使用px.bar()函数创建水平条形图,并通过设置参数实现不同的效果。以下是一个绘制水平条形图的简单示例:importplotly.expressaspximportpandasaspddf=pd.DataFrame({'category':['A','B','C','D'],'value':[25,32,18,35]})fig=px.bar(df,x='value',y='category',orientation='h')fig.show()123456解释一下上述代码:首先,创建了一个包含两列数据的数据框df,其中一列是类别category,另一列是对应类别的数值value。然后,使用px.bar()函数创建水平条形图。x参数指定了数值数据所在的列,y参数指定了类别数据所在的列,orientation参数设置为’h’表示绘制水平条形图。最后,使用fig.show()函数显示图形。除了px.bar()函数,也可以使用go.Bar()函数创建水平条形图。示例如下:importplotly.graph_objectsasgoimportpandasaspddf=pd.DataFrame({'category':['A','B','C','D'],'value':[25,32,18,35]})fig=go.Figure(go.Bar(x=df['value'],y=df['category'],orientation='h'))fig.show()123456其中,go.Bar()函数创建条形图,x参数和y参数分别指定了水平和垂直方向的数据。3.2.2.4百分比堆叠条形图(PercentageStackedBarChart)plotly中没有内置的“百分比堆叠条形图”(PercentageStackedBarChart)类型,但是可以通过一些数据处理和布局设置来实现该类型的图表。首先,需要将数据转换成百分比形式,以确保每个组内的条形高度之和为100%。假设有以下示例数据:importpandasaspddata={'category':['A','B','C','D'],'group1':[20,30,25,15],'group2':[40,25,20,15],'group3':[10,30,25,35],}df=pd.DataFrame(data)12345678910'运行运行将各组数据转换成百分比形式:df_pct=df.set_index('category').apply(lambdax:x/x.sum(),axis=1).reset_index()1此时的df_pct数据如下:categorygroup1group2group30A0.2857140.5714290.1428571B0.3750000.3125000.3125002C0.3571430.2857140.3571433D0.2142860.2142860.57142912345然后,可以使用plotly.express库的bar函数绘制水平条形图,并设置barmode参数为stack,同时设置orientation参数为h(表示水平方向)。为了使每个组内的条形高度之和为100%,还需要设置base参数为group1列的负值。importplotly.expressaspxfig=px.bar(df_pct,x='group1',y='category',orientation='h',barmode='stack',base=df_pct['group1']*-1,color_discrete_sequence=['#1f77b4','#ff7f0e','#2ca02c'])fig.show()1234567在上述代码中,color_discrete_sequence参数用于设置不同组的条形颜色。3.2.2.5分组水平条形图(GroupedHorizontalBarChart)以下是使用Plotly绘制分组水平条形图的示例代码:importplotly.graph_objectsasgoimportpandasaspd#创建数据df=pd.DataFrame({'Gender':['Female','Male','Female','Male','Female','Male'],'Class':['ClassA','ClassA','ClassB','ClassB','ClassC','ClassC'],'Score':[60,70,80,85,90,95]})#绘制水平条形图fig=go.Figure(go.Bar(x=df['Score'],y=df['Class'],orientation='h',marker=dict(color=df['Gender'].map({'Female':'red','Male':'blue'})),text=df['Score'],textposition='inside',))#添加图例fig.update_layout(legend_title_text='Gender',legend=dict(orientation='h',yanchor='bottom',y=1.02,xanchor='right',x=1))#显示图像fig.show()123456789101112131415161718192021222324252627282930313233343536这个例子展示了一个分组水平条形图,其中每个班级的男女学生得分进行了比较。在这个图表中,每个班级在y轴上对齐,学生的得分在x轴上表示。不同颜色的条形代表不同的性别。此外,还通过在条形中间添加分数标签来进一步说明数据。最后,添加了一个水平图例,以方便解释性别与颜色之间的关系。3.2.2.6交错条形图(DivergingBarChart)plotly交错条形图(DivergingBarChart)可以用于比较两组数据,将它们放在一起,以便更直观地显示它们之间的差异。下面是一个简单的示例,展示如何使用plotly绘制交错条形图:importplotly.graph_objsasgo#创建数据x=['A','B','C','D','E']y1=[3,2,1,1,2]y2=[-3,-2,-1,-1,-2]#创建交错条形图fig=go.Figure(data=[go.Bar(name='Group1',x=x,y=y1),go.Bar(name='Group2',x=x,y=y2)])#设定布局fig.update_layout(title='DivergingBarChartExample',xaxis_title='Category',yaxis_title='Value',barmode='relative',bargap=0.1,#每个小组之间的间隔bargroupgap=0.1#不同组之间的间隔)#显示图表fig.show()12345678910111213141516171819202122232425在上面的代码中,我们首先创建了两组数据y1和y2,然后使用go.Bar()方法创建两组条形图,分别对应两组数据。在创建图表时,我们将barmode参数设置为relative,这样就能够创建交错条形图。bargap和bargroupgap参数分别用于调整小组内和小组间的间距。最后,我们使用fig.show()方法显示图表。3.3.3条形图的参数绘制条形图时,plotly提供了许多可调整的参数,可以对图形进行自定义设置。下面是一些常用的参数:x:条形图的x轴数据。y:条形图的y轴数据。color:用于区分数据的颜色。barmode:条形图的模式,可选参数包括group(分组)、stack(堆叠)、overlay(重叠)、relative(相对)。width:条形的宽度。orientation:条形图的方向,可选参数包括v(垂直)和h(水平)。hover_name:鼠标悬停在条形上时显示的文本标签。hover_data:鼠标悬停在条形上时显示的其他数据。text:条形上的文本标签。textposition:文本标签的位置,可选参数包括inside、outside、auto、none等。opacity:条形图的透明度。marker:条形图的标记样式,包括颜色、大小等。error_y:条形图的误差线设置。category_orders:用于指定类别(category)的排序顺序。title:图表的。xaxis_title:x轴的。yaxis_title:y轴的。legend_title:图例的。template:可视化主题的设置。以上只是一些常见的参数,plotly还提供了许多其他的参数可供使用。3.4绘制面积图3.4.1一般示例要使用Plotly绘制面积图,可以使用plotly.graph_objects模块中的Scatter类,将mode参数设置为‘lines’和‘lines+markers’,并将fill参数设置为‘tozeroy’,表示将面积填充到x轴之间的区域。以下是一个绘制简单面积图的示例代码:importplotly.graph_objectsasgoimportpandasaspd#创建数据x=[1,2,3,4,5]y=[1,3,2,4,3]#创建面积图fig=go.Figure(go.Scatter(x=x,y=y,mode='lines',fill='tozeroy'))#设置布局fig.update_layout(title='AreaChart')#显示图形fig.show()123456789101112131415运行上述代码将绘制一个简单的面积图,其中x和y分别是x轴和y轴的数据。您还可以使用title方法设置图表。如果您的数据包含多个线路,则可以在Scatter类中传递一个列表,并在mode中指定‘lines’和‘lines+markers’,以分别绘制线和点。以下是一个绘制多条线路面积图的示例代码:importplotly.graph_objectsasgoimportpandasaspd#创建数据x=[1,2,3,4,5]y1=[1,3,2,4,3]y2=[2,4,3,1,5]y3=[3,1,4,2,6]#创建面积图fig=go.Figure()fig.add_trace(go.Scatter(x=x,y=y1,mode='lines',name='line1',fill='tozeroy'))fig.add_trace(go.Scatter(x=x,y=y2,mode='lines+markers',name='line2',fill='tozeroy'))fig.add_trace(go.Scatter(x=x,y=y3,mode='lines+markers',name='line3',fill='tozeroy'))#设置布局fig.update_layout(title='AreaChartwithMultipleLines')#显示图形fig.show()1234567891011121314151617181920运行上述代码将绘制一个多条线路的面积图,其中x和y1、y2、y3分别是x轴和y轴的数据。每个线路都可以使用name方法指定名称,并在图例中显示。3.4.2更多绘制面积图的例子以下是几个绘制面积图的例子:3.4.2.1单一区域面积图importplotly.expressaspxdf=px.data.gapminder().query("continent=='Europe'")fig=px.area(df,x="year",y="pop",color="country",line_group="country")fig.show()12343.4.2.2带有不透明度的堆叠式面积图importplotly.expressaspxdf=px.data.gapminder()fig=px.area(df,x="year",y="pop",color="continent",line_group="country",hover_name="country",color_discrete_sequence=px.colors.qualitative.Pastel)fig.update_traces(opacity=0.5)fig.show()1234563.4.3绘制面积图的参数plotly绘制面积图的主要参数如下:x:必需,表示沿水平轴的值。可以是数值、时间、类别等数据类型。y:必需,表示沿垂直轴的值。可以是数值、时间、类别等数据类型。hover_name:可选,表示悬停时显示的名称。用于指定在鼠标悬停时要显示的文本值。hover_data:可选,表示悬停时显示的数据。用于指定在鼠标悬停时要显示的其他信息。line_shape:可选,表示线的形状。可以是“linear”(默认)、“spline”、“hv”、“vh”等形状。stackgroup:可选,表示分组的标志。使用相同的分组名称来分组不同的面积图,从而在同一坐标轴上显示它们。color_discrete_sequence:可选,表示自定义离散颜色序列。用于指定面积图的颜色。例如:[‘red’,‘green’,‘blue’]。opacity:可选,表示面积图的透明度。默认为0.7。labels:可选,表示图例的标签。用于指定每个面积图的标签。title:可选,表示图表的。可以使用字典格式指定的字体、大小等属性。xaxis_title:可选,表示水平轴的。yaxis_title:可选,表示垂直轴的。template:可选,表示使用的模板。模板定义了图表的布局、颜色等属性。使用plotly官方提供的模板可以快速生成美观的图表。这些参数的具体用法可以参考plotly官方文档。3.5绘制直方图3.5.1一般示例使用Plotly绘制直方图,需要使用px.histogram()函数,该函数的输入参数包括数据集、X轴和Y轴的名称等。下面是一个简单的例子,绘制了一个直方图:importplotly.expressaspximportpandasaspd#生成随机数据df=pd.DataFrame({'value':np.random.randn(500)})#绘制直方图fig=px.histogram(df,x="value")#显示图表fig.show()1234567891011你可以在px.histogram()函数中设置很多参数,包括:x:指定X轴的数据列;nbins:指定直方图中的箱子数量;marginal:是否绘制边际图;barmode:指定直方图的模式,可以是“overlay”、”group”或“stack”;histnorm:指定直方图的规范化方式,可以是“count”、”probability”或“percent”。更多关于px.histogram()函数的参数和使用方法,请参考Plotly官方文档。3.5.2绘制直方图的更多示例以下是一些使用Plotly绘制直方图的示例:3.5.2.1基本直方图importplotly.expressaspximportnumpyasnp#生成数据np.random.seed(123)x=np.random.normal(size=500)#绘制直方图fig=px.histogram(x)fig.show()123456789103.5.2.2指定直方图的bin个数importplotly.expressaspximportnumpyasnp#生成数据np.random.seed(123)x=np.random.normal(size=500)#指定bin个数为30fig=px.histogram(x,nbins=30)fig.show()123456789103.5.2.3指定直方图的bin范围importplotly.expressaspximportnumpyasnp#生成数据np.random.seed(123)x=np.random.normal(size=500)#指定bin范围为[-3,3]fig=px.histogram(x,range_x=[-3,3])fig.show()123456789103.5.2.4多直方图importplotly.expressaspximportnumpyasnp#生成数据np.random.seed(123)x1=np.random.normal(loc=-2,size=500)x2=np.random.normal(loc=2,size=500)#绘制直方图,并添加密度曲线fig=px.histogram(x=[x1,x2],opacity=0.75,nbins=30,histnorm='probabilitydensity')fig.update_traces(alignmentgroup='group1')fig.show()1234567891011123.5.3绘制直方图的参数下面是plotly绘制直方图时常用的一些参数:x:必需,指定绘制直方图的数据列。nbins:可选,指定直方图的分组数量,默认为10。histnorm:可选,指定直方图的标准化方式,包括百分比(percent)、密度(density)和概率密度(probabilitydensity)。name:可选,指定直方图的名称。orientation:可选,指定直方图的方向,包括垂直(v)和水平(h)。cumulative:可选,指定是否绘制累积分布函数(cumulativedistributionfunction,CDF)。histfunc:可选,指定直方图的统计方式,包括计数(count)、求和(sum)、平均数(avg)、中位数(median)、最大值(max)和最小值(min)。barmode:可选,指定多组数据的绘制方式,包括覆盖(overlay)、堆叠(stack)、相对堆叠(relative)、分组(group)和多面板(overlay+facet_wrap)。opacity:可选,指定直方图的透明度。color:可选,指定直方图的颜色。hover_data:可选,指定鼠标悬停在直方图上时显示的数据列。更多详细参数可以参考Plotly官方文档。3.6绘制箱型图3.6.1一般示例可以使用Plotly绘制箱型图,下面是一个简单的例子:importplotly.expressaspximportseabornassnstips=sns.load_dataset('tips')fig=px.box(tips,x='day',y='total_bill')fig.show()123456这个例子使用Seaborn加载了一个名为tips的数据集,然后使用Plotly绘制了一个箱型图。在px.box()函数中,tips是数据集,x=‘day’表示将箱型图按day分组,y=‘total_bill’表示箱型图的数据来源于total_bill列。除了这些基本参数之外,px.box()还有其他可选参数。下面是一些常用参数的说明:points:是否将每个数据点绘制到箱线图上方,默认为outliers。notched:是否绘制缺口箱线图(notchedboxplot)。color:箱线图的颜色。title:图形的。labels:图形的标签。width和height:图形的宽度和高度。template:绘图使用的模板。具体参数可以参考Plotly官方文档。3.6.2绘制箱型图的更多示例以下是一些绘制箱型图的示例:3.6.2.1单个箱型图importplotly.expressaspxdf=px.data.tips()fig=px.box(df,y="total_bill")fig.show()12343.6.2.2分组箱型图importplotly.expressaspxdf=px.data.tips()fig=px.box(df,x="day",y="total_bill",color="smoker")fig.show()12343.6.2.3水平箱型图importplotly.expressaspxdf=px.data.tips()fig=px.box(df,x="total_bill",orientation="h")fig.show()12343.6.2.4连续箱型图importplotly.expressaspximportnumpyasnpx=np.random.randn(1000)fig=px.box(x=x)fig.show()1234563.6.2.5多列数据箱型图importplotly.expressaspximportpandasaspddf=pd.DataFrame({"day":["Mon","Tues","Wed","Thurs","Fri","Sat","Sun"],"value1":[1,3,2,5,7,8,4],"value2":[4,6,5,3,2,3,6],"value3":[7,4,5,6,5,2,4]})fig=px.box(df,x="day",y=["value1","value2","value3"])fig.show()1234567891011123.6.2.6自定义箱型图importplotly.graph_objsasgodata=[go.Box(y=[0,1,1,2,3,5,8,13,21],name='Custombox',boxpoints='all',jitter=0.3,pointpos=-1.8,whiskerwidth=0.2,fillcolor='rgb(93,164,214)',marker=dict(size=2,),line=dict(width=1),)]layout=go.Layout(title='CustomizedBoxPlot',yaxis=dict(title='Value',zeroline=False),boxmode='group')fig=go.Figure(data=data,layout=layout)fig.show()1234567891011121314151617181920212223242526273.6.3绘制箱型图的参数以下是plotly绘制箱型图常用参数的说明:x:指定箱型图的横坐标数据,可以是一个包含数值的列表、一维numpy数组、pandas的Series或DataFrame对象;y:指定箱型图的纵坐标数据,可以是一个包含数值的列表、一维numpy数组、pandas的Series或DataFrame对象;name:指定该箱型图的名称,用于在图例中展示;boxpoints:指定是否在箱型图中展示数据点。可选值包括’all’(所有数据点均展示)、‘outliers’(仅展示异常值)、False(不展示数据点);boxmean:指定是否在箱型图中展示均值线。可选值为True或False;orientation:指定箱型图的方向。可选值为’h’(水平方向)或’v’(竖直方向);notched:指定箱型图是否展示缺口(notch),用于展示置信区间。可选值为True或False;notchwidth:指定缺口的宽度,取值范围为[0,1];notchspan:指定缺口的跨度,取值范围为[0,1];whiskerwidth:指定箱线的线宽;line_width:指定箱线、均值线等的线宽;line_color:指定箱线、均值线等的颜色;fillcolor:指定箱型图的填充颜色;opacity:指定箱型图的透明度;marker:指定箱型图中数据点的样式,包括color(颜色)、size(大小)、symbol(形状)等参数。注意,有些参数只适用于水平箱型图或竖直箱型图,具体适用范围请参考官方文档。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-5 09:03 , Processed in 0.839647 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表