Python数据分析:基于Plotly的动态可视化绘图
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 气泡图

气泡图的实现方法与散点图的实现方法类似,修改散点图中的点的大小,就变成了气泡图。

2.4.1 基本案例

下面的代码(见文件bubble_basic_demo.py)用来说明气泡图的基本绘制方法。

        import plotly as py
        import plotly.graph_objs as go

        # ----------pre def
        pyplt = py.offline.plot

        # ----------code
        trace0 = go.Scatter(
            x=[1, 2, 3, 4],
            y=[10, 11, 12, 13],
            mode='markers',
            marker=dict(
              size=[40, 60, 80, 100],
            )
        )

        data = [trace0]
        pyplt(data, filename='tmp/bubble_baisc_demo.html')

代码运行结果如图2-7所示。

图2-7 代码运行结果

以上代码的核心代码如下,用来定义每一个点的大小:

        marker=dict(
              size=[40, 60, 80, 100],
            )

2.4.2 样式设置

下面的代码(见文件bubble_style.py)用来指定每个点的大小、颜色、悬浮文字和是否显示颜色条。

        import plotly as py
        import plotly.graph_objs as go

        # ----------pre def
        pyplt = py.offline.plot

        # ----------code
        trace0 = go.Scatter(
            x=[1, 2, 3, 4],
            y=[10, 11, 12, 13],
            mode='markers',
            text=['A<br>size: 40', 'B<br>size: 60', 'C<br>size: 80', 'D<br>size:
    100'],
            marker=dict(
              color= [120, 125, 130, 135],
              opacity=[1, 0.8, 0.6, 0.4],
              size=[40, 60, 80, 100],
              showscale= True,
          )
      )

      data = [trace0]
      pyplt(data, filename='tmp/bubble_style.html')

代码运行结果如图2-8所示。

图2-8 代码运行结果

以上代码的核心代码如下,text指定每个点对应的悬浮文字(<br>表示换行),color指定每个点的颜色,opacity指定每个点的透明度,size指定每个点的大小,showscale=True表示显示右边的颜色条的大小。

        text=['A<br>size: 40', 'B<br>size: 60', 'C<br>size: 80', 'D<br>size:
    100'],
        marker=dict(
              color=['rgb(93, 164, 214)', 'rgb(255, 144, 14)',
                      'rgb(44, 160, 101)', 'rgb(255, 65, 54)'],
              opacity=[1, 0.8, 0.6, 0.4],
              size=[40, 60, 80, 100],
              showscale= True,
            )

2.4.3 缩放设置

调节气泡尺寸的大小可通过sizeref参数进行设置,当sizeref值大于1时,将减小气泡的大小;当sizeref值小于1时,将增大气泡的大小,详情参考页面https://plot.ly/python/reference/#scatter-marker-sizeref。本案例代码(见文件bubble_scale.py)如下。

        import plotly as py
        import plotly.graph_objs as go

        # ----------pre def
        pyplt = py.offline.plot

        # ----------code
        trace0 = go.Scatter(
            x=[1, 2, 3, 4],
            y=[10, 11, 12, 13],
            text=['A</br>size: 40</br>default', 'B</br>size: 60</br>default',
    'C</br>size: 80</br>default', 'D</br>size: 100</br>default'],
            mode='markers',
            name='default',
            marker=dict(
              size=[400, 600, 800, 1000],
              sizemode='area',
            )
        )
        trace1 = go.Scatter(
            x=[1, 2, 3, 4],
            y=[14, 15, 16, 17],
            text=['A</br>size: 40</br>sizeref: 0.2', 'B</br>size: 60</br>sizeref:
    0.2', 'C</br>size: 80</br>sizeref: 0.2', 'D</br>size: 100</br>sizeref:
    0.2'],
            mode='markers',
            name = 'ref0.2',
            marker=dict(
              size=[400, 600, 800, 1000],
              sizeref=0.2,
              sizemode='area',
            )
        )
        trace2 = go.Scatter(
            x=[1, 2, 3, 4],
            y=[20, 21, 22, 23],
            text=['A</br>size: 40</br>sizeref: 2', 'B</br>size: 60</br>sizeref:
    2', 'C</br>size: 80</br>sizeref: 2', 'D</br>size: 100</br>sizeref: 2'],
            mode='markers',
            name='ref2',
            marker=dict(
              size=[400, 600, 800, 1000],
              sizeref=2,
              sizemode='area',
            )
        )

        data = [trace0, trace1, trace2]
        pyplt(data, filename='tmp/bubble_scale.html')

代码运行结果如图2-9所示。

图2-9 代码运行结果

与之前的代码相比,多了如下参数内容:参数sizeref=2表示将气泡大小设置为原来的1/2;参数sizemode有diameter和area两个值,diameter表示按直径缩放,area表示按面积缩放,这里使用的是按面积缩放。

        marker=dict(
              size=[400, 600, 800, 1000],
              sizeref=2,
              sizemode='area',
            )

2.4.4 参数解读

气泡图与散点图使用的是同一个函数,因此大部分参数在2.3.4小节已经介绍过了,这里对本节所涉及的参数进行补充说明。

●text:列表,元素为相应节点的悬浮文字内容。

●marker:数据节点参数,包括大小、颜色、格式等,有如下设置项。

➢size:列表,元素为相应节点的尺寸大小。

➢sizeref:缩放的比例,如设置为2,则缩小为原来的1/2。

➢sizemode:缩放的标准,默认以diameter(直径)缩放,也可选择以area(面积)缩放。

➢color:列表,元素为相应节点的颜色。

➢showscale:默认为False,不显示右侧的颜色条,也可以选择True。

➢opacity:列表,元素为0~1之间的数,表示相应节点的透明度。