天天看点

【Python百日进阶-数据分析】Day118 - Plotly 子图一、plotly.subplots.make_subplots : 用于布置多图图形的辅助函数二、示例

文章目录

  • 一、plotly.subplots.make_subplots : 用于布置多图图形的辅助函数
    • 1.1 make_subplots()语法格式
    • 1.2 参数
  • 二、示例
    • 2.1 示例 1:垂直堆叠两个子图,并向每个子图添加散点轨迹
    • 2.2 示例 2:堆叠散点图,共享X轴
    • 2.3 示例 3:不规则子图布局
    • 2.4 示例 4:插图
    • 2.5 示例 5:包括子图标题
    • 2.6 示例 6:具有混合子图类型的子图

一、plotly.subplots.make_subplots : 用于布置多图图形的辅助函数

1.1 make_subplots()语法格式

plotly.subplots.make_subplots(rows=1,   # 行数
                              cols=1,   # 列数
                              shared_xaxes=False,   # 共享X轴
                              shared_yaxes=False,   # 共享y轴
                              start_cell='top-left',    # 开始子图位置
                              print_grid=False,         # 绘图网格
                              horizontal_spacing=None,  # 子图列之间的空间
                              vertical_spacing=None,    # 子图行之间的空间
                              subplot_titles=None,  # 子图的标题
                              column_widths=None,   # 子图相对宽度的长度列表
                              row_heights=None,     # 子图相对高度的长度列表
                              specs=None,           # 子图类型、行/列跨度和间距的每个子图规范
                              insets=None,          # 插图规格
                              column_titles=None,   # 放置在每列顶部子图上方的标题长度列表
                              row_titles=None,      # 放置在每行子图右侧的标题长度列表
                              x_title=None,     # 放置在子图底行下方的标题,水平居中
                              y_title=None,     # 放置在子图左列左侧的标题,垂直居中
                              figure=None,  #  go.Figure 实例,默认None新建,存在就覆盖
                              **kwargs)
           

返回一个 plotly.graph_objects.Figure 的实例,其中包含在“layout”中配置的预定义子图。

1.2 参数

  • rows ( int ( default 1 ) ) – 子图网格中的行数。必须大于零。
  • cols ( int ( default 1 ) ) – 子图网格中的列数。必须大于零。
  • shared_xaxes ( boolean or str ( default False ) ) –为 2D 笛卡尔子图分配共享(链接)x 轴
    • True 或 ‘columns’:在同一列的子图中共享轴
    • ‘rows’:在同一行的子图中共享轴
    • ‘all’:在网格中的所有子图中共享轴。
  • shared_yaxes ( boolean or str ( default False ) ) –为 2D 笛卡尔子图分配共享(链接)y 轴
    • ‘columns’:在同一列的子图中共享轴
    • True 或 ‘rows’:在同一行的子图中共享轴
    • ‘all’:在网格中的所有子图中共享轴。
  • start_cell ( ‘bottom-left’或’top-left’ (默认 ‘top-left’ ) ) –在子图网格中选择用于设置子图的 domain_grid 的起始单元格。
    • ‘top-left’:子图在顶部用 (1, 1) 编号左角
    • ‘bottom-left’:子图在底部编号为 (1, 1)左角
  • print_grid ( boolean ( default True ) : ) – 如果为 True,则打印绘图网格的字符串表示形式。也可以Figure.print_grid()在结果图形上使用该方法打印网格。
  • horizontal_spacing(浮点数(默认 0.2 / cols ))–标准化绘图坐标中子图列之间的空间。必须是介于 0 和 1 之间的浮点数。适用于所有列(使用“规格”子图相关间距)
  • Vertical_spacing(浮动(默认 0.3 / 行)) –标准化绘图坐标中子绘图行之间的空间。必须是介于 0 和 1 之间的浮点数。适用于所有行(使用“规格”子图相关间距)
  • subplot_titles(str或None列表(默认 None ))–每个子图的标题作为行优先排序的列表。如果该空间中不需要子情节标题,则可以在列表中包含空字符串(“”),以便正确索引标题。
  • specs 规格(dict或None列表列表(默认 None ))–子图类型、行/列跨度和间距的每个子图规范。

    ex1: specs=[[{}, {}], [{‘colspan’: 2}, None]]

    ex2: specs=[[{‘rowspan’: 2}, {}], [None, {}]]

    • 外部列表的索引对应于从顶部开始的子图网格行,如果 start_cell=‘top-left’,或底部,如果 start_cell=‘bottom-left’。‘specs’ 中的行数必须等于 ‘rows’。
    • 内部列表的索引对应于从左侧开始的子图网格列。“specs”中的列数必须等于“cols”。
    • “specs”列表中的每一项都对应于子图网格中的一个子图。(注意子图网格恰好有“行”乘以“列”单元格。)
    • 将 None 用于空白子图单元格(或移过列/行跨度)。
    • 请注意,specs[0][0] 具有“start_cell”子图的规格。
    • ‘specs’ 中的每一项都是一个字典。可用的键有: * type (string, default ‘xy’): 子图类型。之一
      • ‘xy’:用于散点图、条形图等的二维笛卡尔子图类型。
      • ‘scene’:用于 scatter3d、cone 等的 3D 笛卡尔子图。
      • ‘polar’: scatterpolar、barpolar 等的极坐标子图。
      • ‘ternary’:散点图的三元子图’mapbox’: scattermapbox 的 Mapbox 子图
      • “domain”:单独跟踪的子图类型定位。馅饼、parcoords、parcats 等。
      • trace type 跟踪类型:将用于确定的跟踪类型该跟踪的适当子图类型
      • secondary_y (bool,默认为 False):如果为 True,则创建一个辅助y 轴位于子图的右侧。仅当 type=‘xy’ 时有效。
      • colspan (int, default 1): 子图列的数量为这个子情节跨越。
      • rowspan (int, default 1): 子图行数为这个子情节跨越。
      • l (float, default 0.0): 在单元格左边填充
      • r (float, default 0.0): 单元格右边的填充
      • t (float, default 0.0): 单元格右边的填充
      • b (float, default 0.0): 填充单元格底部
    • 注意:使用 ‘horizo​​ntal_spacing’ 和 ‘vertical_spacing’ 来调整子图之间的间距。
  • insets 插图(字典的名单或无(默认无):) -插图规格。插图是覆盖网格子图的

    子图’insets’ 中的每一项都是一个字典。可用的键是:

    • cell (tuple, default=(1,1)): (row, col) 索引子图单元格覆盖插入轴。
    • type (string, default ‘xy’): 子图类型
    • l (float, default=0.0): 在插图左边填充单元格宽度的一部分
    • w (float or ‘to_end’, default=‘to_end’) 插入宽度单元格宽度的一部分(‘to_end’:到单元格右边缘)
    • b (float, default=0.0): 填充底部的插图细胞高度的一部分
    • h (float or ‘to_end’, default=‘to_end’) 插入高度单元格高度的一部分(‘to_end’:到单元格顶部边缘)
  • column_widths (数字列表或None (默认 None ) ) –cols每列 suplots 的相对宽度的长度列表。值在内部被标准化并用于在列之间分配图形的整体宽度(不包括填充)。为了向后兼容,也可以使用column_width关键字参数指定 。
  • row_heights(数字列表或无(默认无))–rows每行子图的相对高度的长度列表。如果 start_cell=‘top-left’ 则行高从上到下应用。否则,如果 start_cell=‘bottom-left’ 则行高从下到上应用。为了向后兼容,也可以使用row_widthkwarg指定 。如果指定为row_width,则无论 start_cell 的值如何,从下到上应用宽度值。这与row_width参数的遗留行为相匹配。
  • column_titles(str 列表或None(默认 None ))–cols放置在每列顶部子图上方的标题长度列表。
  • row_titles(str 列表或None(默认 None ))–rows放置在每行子图右侧的标题长度列表。如果 start_cell=‘top-left’ 则行标题从上到下应用。否则,如果 start_cell=‘bottom-left’ 则行标题从下到上应用。
  • x_title ( str or None ( default None ) ) – 放置在子图底行下方的标题,水平居中
  • y_title ( str or None ( default None ) ) – 放置在子图左列左侧的标题,垂直居中
  • figure ( go.Figure或None (默认 None ) ) – 如果没有,将创建一个新的 go.Figure 实例,其轴将填充与请求的子图几何体对应的轴,并返回此新图。如果是 go.Figure 实例,则轴将添加到此图形的布局中,并返回此图形。如果图形已经包含轴,它们将被覆盖。

二、示例

2.1 示例 1:垂直堆叠两个子图,并向每个子图添加散点轨迹

# Stack two subplots vertically, and add a scatter trace to each
from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(rows=2)

fig.add_scatter(y=[2, 1, 3], row=1, col=1)
fig.add_scatter(y=[1, 3, 2], row=2, col=1)

fig.show()

           
【Python百日进阶-数据分析】Day118 - Plotly 子图一、plotly.subplots.make_subplots : 用于布置多图图形的辅助函数二、示例

2.2 示例 2:堆叠散点图,共享X轴

# Stack a scatter plot
from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(rows=2, shared_xaxes=True)

fig.add_scatter(y=[2, 1, 3], row=1, col=1)
fig.add_scatter(y=[1, 3, 2], row=2, col=1)

fig.show()



           
【Python百日进阶-数据分析】Day118 - Plotly 子图一、plotly.subplots.make_subplots : 用于布置多图图形的辅助函数二、示例

2.3 示例 3:不规则子图布局

#不规则子图布局 (more examples below under 'specs')
from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(rows=2,
                    cols=2,
                    shared_xaxes=True,
                    specs=[[{}, {}], [{'colspan': 2}, None]]
                    )

fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=1)
fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=2)
fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=2, col=1)

fig.show()


           
【Python百日进阶-数据分析】Day118 - Plotly 子图一、plotly.subplots.make_subplots : 用于布置多图图形的辅助函数二、示例

2.4 示例 4:插图

# insets
from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(insets=[{'cell': (1,1), 'l': 0.7, 'b': 0.3}])

fig.add_scatter(x=[1, 2, 3], y=[2, 1, 1])
fig.add_scatter(x=[1, 2, 3], y=[2, 1, 2], xaxis='x2', yaxis='y2')

fig.show()


           
【Python百日进阶-数据分析】Day118 - Plotly 子图一、plotly.subplots.make_subplots : 用于布置多图图形的辅助函数二、示例

2.5 示例 5:包括子图标题

# include subplot titles
from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(rows=2, subplot_titles=('子图 1','子图 2'))

fig.add_scatter(x=[1,2,3], y=[2,1,2], row=1, col=1)
fig.add_bar(x=[1,2,3], y=[2,1,2], row=2, col=1) 

fig.show()


           
【Python百日进阶-数据分析】Day118 - Plotly 子图一、plotly.subplots.make_subplots : 用于布置多图图形的辅助函数二、示例

2.6 示例 6:具有混合子图类型的子图

from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(rows=2,
                    cols=2,
                    specs=[[{'type': 'xy'}, {'type':'polar'}], [{'type':'scene'}, {'type':'ternary'}]],
                    )

fig.add_traces(
     [go.Scatter(y=[2, 3, 1]),
      go.Scatterpolar(r=[1, 3, 2], theta=[0, 45, 90]),
      go.Scatter3d(x=[1, 2, 1], y=[2, 3, 1], z=[0, 3, 5]),
      go.Scatterternary(a=[0.1, 0.2, 0.1],
                        b=[0.2, 0.3, 0.1],
                        c=[0.7, 0.5, 0.8])],
     rows=[1, 1, 2, 2],
     cols=[1, 2, 1, 2])

fig.show()

           
【Python百日进阶-数据分析】Day118 - Plotly 子图一、plotly.subplots.make_subplots : 用于布置多图图形的辅助函数二、示例