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

这篇具有很好参考价值的文章主要介绍了【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、介绍一下Plotly库

Plotly是一个数据可视化和数据分析的开源Python库。它提供了各种绘图类型,如线图、散点图、条形图、箱型图、热力图等,具有交互性和可定制性。它还提供了一个在线编辑器,可以在web上创建、分享和发布交互式图形。使用Plotly,用户可以快速轻松地制作出漂亮、高质量的可视化图表。

Plotly支持多种绘图方式,包括静态图和交互式图。静态图适合在报告和出版物中使用,而交互式图则更适合在web应用程序和数据仪表板中使用。Plotly还支持在jupyter notebook中使用,方便进行数据分析和交互式数据可视化。

Plotly的一个重要特性是其美观的外观和可定制性。用户可以使用Plotly提供的各种颜色方案,或者使用自己的颜色方案,以满足自己的需求。用户还可以通过修改布局和样式表来自定义图表的外观。

Plotly提供了Python、R和JavaScript的接口,用户可以在这些语言中使用Plotly来创建图表。此外,Plotly还提供了一些数据分析和统计工具,如回归分析、聚类分析等。

总之,Plotly是一个功能强大、易于使用和高度可定制的数据可视化工具,适合数据分析师、数据科学家、研究人员和开发人员等各种数据相关领域的使用。

二、Plotly可以做哪些可视化

Plotly支持绘制各种交互式可视化图形,包括但不限于:

  1. 散点图(Scatter plot)
  2. 折线图(Line plot)
  3. 条形图(Bar chart)
  4. 面积图(Area chart)
  5. 直方图(Histogram)
  6. 箱型图(Box plot)
  7. 热力图(Heatmap)
  8. 等高线图(Contour plot)
  9. 3D散点图(3D Scatter plot)
  10. 3D表面图(3D Surface plot)

此外,Plotly还支持绘制地图可视化,包括散点地图、热力地图、轮廓地图、线路地图等。同时,Plotly还提供了丰富的交互式功能,例如缩放、平移、鼠标悬停提示、选择区域、自定义工具栏等。

三、各类统计图

3.1 绘制散点图

3.1.1 一般案例

绘制散点图可以使用 plotly.graph_objects 中的 Scatter 类或者使用 plotly.express 中的 scatter 函数。

下面是使用 plotly.express 绘制散点图的示例代码:

import plotly.express as px
import pandas as pd

# 创建示例数据
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='Scatter plot')
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
可以通过设置参数来自定义散点图的样式,例如修改颜色、大小、透明度等。

更多关于绘制散点图的示例和参数说明可以参考官方文档:

https://plotly.com/python/scatter-plots/

3.1.2 更多散点图的示例

以下是几个绘制散点图的示例:

3.1.2.1 绘制二维散点图
import plotly.graph_objs as go
import numpy as np

# 创建随机数据
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='Random Scatter Plot',
                  xaxis_title='X Axis',
                  yaxis_title='Y Axis')

# 显示图表
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
此代码将生成一个简单的散点图,显示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对象。以下是一个简单的例子:

import plotly.graph_objs as go

x = [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='My Line Chart')

fig = go.Figure(data=data, layout=layout)
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
在这个例子中,我们创建了一个包含x和y坐标的列表。然后,我们创建一个go.Scatter对象,并指定它的x和y属性,以及绘制模式为’lines+markers’,这将绘制折线图和数据点。

接下来,我们将go.Scatter对象添加到一个列表中,并将其分配给变量data。然后,我们定义一个布局,其中包括一个标题,并将其与数据列表一起传递给go.Figure对象。最后,我们使用fig.show()方法显示图形。

在实际应用中,我们可以根据需要更改线条的颜色、宽度、样式等属性,以及添加注释、调整布局等操作。

3.2.2 更多折线图的示例

以下是一些折线图的示例:

3.2.2.1 简单折线图
import plotly.graph_objs as go

x_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()

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

3.2.2.2 折线图与散点图结合
import plotly.graph_objs as go

x_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()

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

3.2.2.3 多条折线图
import plotly.graph_objs as go

x_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()

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

3.2.2.4 带有误差线的折线图
import plotly.graph_objs as go
import numpy as np

x_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()

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

3.2.2.5 带有多个子图的折线图
import plotly.graph_objs as go
from plotly.subplots import make_subplots
import numpy as np

x_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()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
以上是一些折线图的示例,您可以根据需要进行修改和定制。

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函数绘制条形图。下面是一个简单的例子:

import plotly.express as px

data = {
    'fruit': ['apple', 'banana', 'orange', 'kiwi'],
    'count': [3, 2, 4, 1]
}

fig = px.bar(data, x='fruit', y='count')
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
这将绘制一个简单的条形图,其中水果名称在X轴上显示,计数在Y轴上显示。

您可以使用color参数指定一个列名,使每个条形的颜色根据该列的不同值而变化:

import plotly.express as px

data = {
    '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()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
您还可以使用其他参数自定义图表的外观,例如:

import plotly.express as px

data = {
    '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='Fruit Counts',
    xaxis_title='Fruit',
    yaxis_title='Count',
    font=dict(size=18)
)

fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
这将设置图表的标题,X轴和Y轴的标题,以及字体大小。

3.3.2 更多条形图的示例

以下是一些常见的条形图示例:

  1. 簇状条形图(Grouped Bar Chart):适用于比较不同类别之间的数值大小。
  2. 堆叠条形图(Stacked Bar Chart):适用于比较不同类别之间的数值大小,同时也能够显示总和的大小。
  3. 水平条形图(Horizontal Bar Chart):适用于比较不同类别之间的数值大小,以及适用于较长类别名称的情况。
  4. 百分比堆叠条形图(Percentage Stacked Bar
    Chart):适用于比较不同类别之间的百分比大小,同时也能够显示总和的百分比大小。
  5. 分组水平条形图(Grouped Horizontal Bar
    Chart):适用于比较不同类别之间的数值大小,以及适用于较长类别名称的情况。
  6. 交错条形图(Diverging Bar Chart):适用于比较不同类别之间的数值大小,同时也能够显示相对大小和方向。

在使用plotly绘制条形图时,可以通过传递不同的参数来实现这些不同类型的条形图,如barmode、orientation、stackgroup等等。具体使用方法和参数说明可以参考官方文档。

3.3.2.1 簇状条形图(Grouped Bar Chart)

簇状条形图(Grouped Bar Chart)是用于显示两个或更多组之间比较的一种图表类型。在簇状条形图中,每个组有自己的条形,条形并排排列在同一水平线上,便于直接比较组之间的值。

使用Plotly绘制簇状条形图需要指定barmode参数为group,并使用color参数指定组的颜色。以下是一个使用Plotly绘制簇状条形图的例子:

import plotly.graph_objs as go

# 准备数据
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'] for d in data if d['group'] == 'Group1'],
           y=[d['value'] for d in data if d['group'] == 'Group1'],
           name='Group1', marker_color='blue')
)
fig.add_trace(
    go.Bar(x=[d['category'] for d in data if d['group'] == 'Group2'],
           y=[d['value'] for d in data if d['group'] == 'Group2'],
           name='Group2', marker_color='red')
)

# 设置布局
fig.update_layout(title='Grouped Bar Chart', barmode='group')

# 显示图表
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
该例子中,我们首先准备了一个包含两个组、三个类别的数据集。然后,我们使用Plotly创建了一个空的图表,接着分别添加了两组簇状条形图,并设置barmode为group,color为不同的颜色。最后,我们使用update_layout()方法设置了图表标题和布局,并使用show()方法显示图表。

3.2.2.2 堆叠条形图(Stacked Bar Chart)

堆叠条形图(Stacked Bar Chart)是一种用于比较多个项目不同部分之间相对比例的图表。它将多个条形图堆叠在一起,并且每个条形图的值都会被分成几个部分,每个部分用不同的颜色表示。

下面是使用 Plotly 绘制堆叠条形图的示例代码:

import plotly.express as px
import pandas as pd

# 创建示例数据
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()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
这个示例代码中,我们使用了 px.bar() 函数来绘制堆叠条形图。x 参数指定了用于分组的变量,y 参数指定了需要绘制的数值变量,color_discrete_sequence 参数指定了每个分组的颜色,barmode 参数指定了堆叠模式。

运行这个代码后,你应该会看到一张堆叠条形图,其中每个条形图的值被分成两个部分,分别用蓝色和红色表示。

3.2.2.3 水平条形图(Horizontal Bar Chart)

水平条形图(Horizontal Bar Chart)是一种将数据以水平方向展示的条形图,适合于展示类别之间的大小比较。在Plotly中,可以使用px.bar()函数创建水平条形图,并通过设置参数实现不同的效果。

以下是一个绘制水平条形图的简单示例:

import plotly.express as px
import pandas as pd

df = pd.DataFrame({'category': ['A', 'B', 'C', 'D'], 'value': [25, 32, 18, 35]})
fig = px.bar(df, x='value', y='category', orientation='h')
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
解释一下上述代码:

首先,创建了一个包含两列数据的数据框df,其中一列是类别category,另一列是对应类别的数值value。然后,使用px.bar()函数创建水平条形图。x参数指定了数值数据所在的列,y参数指定了类别数据所在的列,orientation参数设置为’h’表示绘制水平条形图。最后,使用fig.show()函数显示图形。

除了px.bar()函数,也可以使用go.Bar()函数创建水平条形图。示例如下:

import plotly.graph_objects as go
import pandas as pd

df = 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()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
其中,go.Bar()函数创建条形图,x参数和y参数分别指定了水平和垂直方向的数据。

3.2.2.4 百分比堆叠条形图(Percentage Stacked Bar Chart)

plotly中没有内置的“百分比堆叠条形图”(Percentage Stacked Bar Chart)类型,但是可以通过一些数据处理和布局设置来实现该类型的图表。

首先,需要将数据转换成百分比形式,以确保每个组内的条形高度之和为100%。假设有以下示例数据:

import pandas as pd

data = {
    'category': ['A', 'B', 'C', 'D'],
    'group1': [20, 30, 25, 15],
    'group2': [40, 25, 20, 15],
    'group3': [10, 30, 25, 35],
}

df = pd.DataFrame(data)

将各组数据转换成百分比形式:

df_pct = df.set_index('category').apply(lambda x: x / x.sum(), axis=1).reset_index()

此时的df_pct数据如下:

  category    group1    group2    group3
0        A  0.285714  0.571429  0.142857
1        B  0.375000  0.312500  0.312500
2        C  0.357143  0.285714  0.357143
3        D  0.214286  0.214286  0.571429

然后,可以使用plotly.express库的bar函数绘制水平条形图,并设置barmode参数为stack,同时设置orientation参数为h(表示水平方向)。为了使每个组内的条形高度之和为100%,还需要设置base参数为group1列的负值。

import plotly.express as px

fig = 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()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
在上述代码中,color_discrete_sequence参数用于设置不同组的条形颜色。

3.2.2.5 分组水平条形图(Grouped Horizontal Bar Chart)

以下是使用 Plotly 绘制分组水平条形图的示例代码:

import plotly.graph_objects as go
import pandas as pd

# 创建数据
df = pd.DataFrame({
    'Gender': ['Female', 'Male', 'Female', 'Male', 'Female', 'Male'],
    'Class': ['Class A', 'Class A', 'Class B', 'Class B', 'Class C', 'Class C'],
    '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()

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

这个例子展示了一个分组水平条形图,其中每个班级的男女学生得分进行了比较。在这个图表中,每个班级在 y 轴上对齐,学生的得分在 x 轴上表示。不同颜色的条形代表不同的性别。此外,还通过在条形中间添加分数标签来进一步说明数据。最后,添加了一个水平图例,以方便解释性别与颜色之间的关系。

3.2.2.6 交错条形图(Diverging Bar Chart)

plotly交错条形图(Diverging Bar Chart)可以用于比较两组数据,将它们放在一起,以便更直观地显示它们之间的差异。下面是一个简单的示例,展示如何使用plotly绘制交错条形图:

import plotly.graph_objs as go

# 创建数据
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='Group 1', x=x, y=y1),
    go.Bar(name='Group 2', x=x, y=y2)
])

# 设定布局
fig.update_layout(
    title='Diverging Bar Chart Example',
    xaxis_title='Category',
    yaxis_title='Value',
    barmode='relative',
    bargap=0.1, # 每个小组之间的间隔
    bargroupgap=0.1 # 不同组之间的间隔
)

# 显示图表
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
在上面的代码中,我们首先创建了两组数据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 轴之间的区域。

以下是一个绘制简单面积图的示例代码:

import plotly.graph_objects as go
import pandas as pd

# 创建数据
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='Area Chart')

# 显示图形
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
运行上述代码将绘制一个简单的面积图,其中 x 和 y 分别是 x 轴和 y 轴的数据。您还可以使用 title 方法设置图表标题。

如果您的数据包含多个线路,则可以在 Scatter 类中传递一个列表,并在 mode 中指定 ‘lines’ 和 ‘lines+markers’,以分别绘制线和点。以下是一个绘制多条线路面积图的示例代码:

import plotly.graph_objects as go
import pandas as pd

# 创建数据
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='Area Chart with Multiple Lines')

# 显示图形
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
运行上述代码将绘制一个多条线路的面积图,其中 x 和 y1、y2、y3 分别是 x 轴和 y 轴的数据。每个线路都可以使用 name 方法指定名称,并在图例中显示。

3.4.2 更多绘制面积图的例子

以下是几个绘制面积图的例子:

3.4.2.1 单一区域面积图
import plotly.express as px
df = px.data.gapminder().query("continent=='Europe'")
fig = px.area(df, x="year", y="pop", color="country", line_group="country")
fig.show()

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

3.4.2.2 带有不透明度的堆叠式面积图
import plotly.express as px
df = 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()

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

3.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 轴的名称等。

下面是一个简单的例子,绘制了一个直方图:

import plotly.express as px
import pandas as pd

# 生成随机数据
df = pd.DataFrame({'value': np.random.randn(500)})

# 绘制直方图
fig = px.histogram(df, x="value")

# 显示图表
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
你可以在 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 基本直方图
import plotly.express as px
import numpy as np

# 生成数据
np.random.seed(123)
x = np.random.normal(size=500)

# 绘制直方图
fig = px.histogram(x)
fig.show()

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

3.5.2.2 指定直方图的bin个数
import plotly.express as px
import numpy as np

# 生成数据
np.random.seed(123)
x = np.random.normal(size=500)

# 指定bin个数为30
fig = px.histogram(x, nbins=30)
fig.show()

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

3.5.2.3 指定直方图的bin范围
import plotly.express as px
import numpy as np

# 生成数据
np.random.seed(123)
x = np.random.normal(size=500)

# 指定bin范围为[-3, 3]
fig = px.histogram(x, range_x=[-3, 3])
fig.show()

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

3.5.2.4 多直方图
import plotly.express as px
import numpy as np

# 生成数据
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='probability density')
fig.update_traces(alignmentgroup='group1')
fig.show()

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

3.5.3 绘制直方图的参数

下面是 plotly 绘制直方图时常用的一些参数:

  • x:必需,指定绘制直方图的数据列。
  • nbins:可选,指定直方图的分组数量,默认为 10。
  • histnorm:可选,指定直方图的标准化方式,包括百分比(percent)、密度(density)和概率密度(probability density)。
  • name:可选,指定直方图的名称。
  • orientation:可选,指定直方图的方向,包括垂直(v)和水平(h)。
  • cumulative:可选,指定是否绘制累积分布函数(cumulative distribution function,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 绘制箱型图,下面是一个简单的例子:

import plotly.express as px
import seaborn as sns

tips = sns.load_dataset('tips')
fig = px.box(tips, x='day', y='total_bill')
fig.show()

【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)
这个例子使用 Seaborn 加载了一个名为 tips 的数据集,然后使用 Plotly 绘制了一个箱型图。在 px.box() 函数中,tips 是数据集,x=‘day’ 表示将箱型图按 day 分组,y=‘total_bill’ 表示箱型图的数据来源于 total_bill 列。

除了这些基本参数之外,px.box() 还有其他可选参数。下面是一些常用参数的说明:

  • points:是否将每个数据点绘制到箱线图上方,默认为 outliers。
  • notched:是否绘制缺口箱线图(notched box plot)。
  • color:箱线图的颜色。
  • title:图形的标题。
  • labels:图形的标签。
  • width 和 height:图形的宽度和高度。
  • template:绘图使用的模板。

具体参数可以参考 Plotly 官方文档。

3.6.2 绘制箱型图的更多示例

以下是一些绘制箱型图的示例:

3.6.2.1 单个箱型图
import plotly.express as px
df = px.data.tips()
fig = px.box(df, y="total_bill")
fig.show()

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

3.6.2.2 分组箱型图
import plotly.express as px
df = px.data.tips()
fig = px.box(df, x="day", y="total_bill", color="smoker")
fig.show()

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

3.6.2.3 水平箱型图
import plotly.express as px
df = px.data.tips()
fig = px.box(df, x="total_bill", orientation="h")
fig.show()

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

3.6.2.4 连续箱型图
import plotly.express as px
import numpy as np

x = np.random.randn(1000)
fig = px.box(x=x)
fig.show()

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

3.6.2.5 多列数据箱型图
import plotly.express as px
import pandas as pd

df = 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()

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

3.6.2.6 自定义箱型图
import plotly.graph_objs as go

data = [go.Box(
            y=[0, 1, 1, 2, 3, 5, 8, 13, 21],
            name='Custom box',
            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='Customized Box Plot',
    yaxis=dict(
        title='Value',
        zeroline=False
    ),
    boxmode='group'
)

fig = go.Figure(data=data, layout=layout)
fig.show()

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

3.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(形状)等参数。

注意,有些参数只适用于水平箱型图或竖直箱型图,具体适用范围请参考官方文档。文章来源地址https://www.toymoban.com/news/detail-476662.html

到了这里,关于【Python】Plotly:最强的Python可视化包(超详细讲解+各类源代码案例)(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 超市零售数据可视化分析(Plotly 指南)

    CSDN 上不能插入 HTML,可以在 GitHub Page 上查看: https://paradiseeee.github.io/2022/07/30/超市零售数据可视化分析/ 项目首次发布于 Kesci 上 – 超市零售数据分析。感兴趣的可以直接上去 Fork 之后自己做。由于上面只能用 Jupyter Notebook,而且还没有权限 DIY 工作环境,于是线下重新做一

    2024年02月11日
    浏览(53)
  • 如何使用Plotly和Dash进行数据可视化

    本文分享自华为云社区《从数据到部署使用Plotly和Dash实现数据可视化与生产环境部署》,作者: 柠檬味拥抱。 数据可视化是数据分析中至关重要的一环,它能够帮助我们更直观地理解数据并发现隐藏的模式和趋势。在Python中,有许多强大的工具可以用来进行数据可视化,其

    2024年04月15日
    浏览(81)
  • 【数据分析与可视化】pyecharts可视化图表讲解及实战(超详细 附源码)

    需要源码请点赞关注收藏后评论区留言私信~~~ pyecharts是基于Echart图表的一个类库,而Echart是百度开源的一个可视化JavaScript库 pyecharts主要基于web浏览器进行显示,绘制的图形比较多,包括折线图、柱状图、饼图、漏斗图、地图、极坐标图等,代码量很少,而且很灵活,绘制出

    2024年02月01日
    浏览(46)
  • 【Python可视化大屏】全流程讲解pyecharts拖拽可视化大屏的背后原理

    目录 一、设计方案 二、项目背景 三、电影爬虫 3.1 导入库 3.2 发送请求 3.3 解析页面 3.4 存储到csv 四、数据持久化存储 4.1 导入库 4.2 存入MySQL 4.3 讲解视频 五、开发可视化大屏 5.1 柱形图 5.2 饼图 5.3 词云图 5.4 数据表格 5.5 涟漪散点图 5.6 条形图 5.7 大标题 5.8 Page组合 六、彩蛋

    2024年02月04日
    浏览(73)
  • 一图胜千言!数据可视化多维讲解(Python)

    数据聚合、汇总和可视化是支撑数据分析领域的三大支柱。长久以来,数据可视化都是一个强有力的工具,被业界广泛使用,却受限于 2 维。在本文中,作者将探索一些有效的多维数据可视化策略(范围从 1 维到 6 维)。 描述性分析(descriptive analytics)是任何分析生命周期的

    2024年02月10日
    浏览(32)
  • python微博舆情分析系统 可视化 情感分析 爬虫 机器学习(源码+讲解)✅

    🍅 大家好,今天给大家分享一个Python项目,感兴趣的可以先收藏起来,点赞、关注不迷路! 🍅 大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。 设计1000套(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕业设计选题

    2024年03月25日
    浏览(51)
  • A*算法求解迷宫问题(算法讲解与证明、python实现与可视化)

    目录 一、引入 二、具体细节 1、BFS(Breadth First Search) 2、Dijkstra(Uniform Cost Search) 3、启发式(Heuristic search) 4、A*算法 4.1 算法细节 4.2 A与A*算法 4.3 A*算法证明 4.4 算法过程 三、具体实现 1、实验要求 2、代码实现 四、源代码        当我开始学习该算法时,网上已经有了很

    2023年04月08日
    浏览(51)
  • 大数据毕业设计:python房源数据爬虫分析预测系统+可视化 +商品房数据(源码+讲解视频)✅

    毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅 感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。

    2024年01月22日
    浏览(61)
  • Python对职业人群体检数据进行分析与可视化(附源码 超详细)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 有的职业危害因素会对人体血液等系统产生影响。下面针对一次职业人群体检的部分数据进行分析 实现步骤如下 1:导入模块 2:获取数据 导入待处理数据testdata.xls并显示前五行 3:分析数据 首先查看数据类型 表结构 并

    2024年02月03日
    浏览(79)
  • python招聘数据爬取分析可视化系统(BOSS直聘)+Django框架(源码+文档+全套讲解视频)计算机毕业设计✅

    毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅 感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。

    2024年02月19日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包