• Matplotlib可视化50图:气泡图(2)


    导读

    本文[1]将学习如何使用 PythonMatplotlib 库通过示例绘制气泡图

    简介

    气泡图是散点图的改进版本。在散点图中,有两个维度 x 和 y。在气泡图中,存在三个维度 x、y 和 z。其中第三维 z 表示权重。这样,气泡图比二维散点图在视觉上提供了更多信息。

    数据准备

    对于本教程,我将使用包含加拿大移民信息的数据集。它拥有从 1980 年到 2013 年的数据,其中包括来自 195 个国家/地区的移民人数。导入必要的包和数据集:

    import numpy as np  
    import pandas as pd 
    df = pd.read_excel('https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Canada.xlsx',
                           sheet_name='Canada by Citizenship',
                           skiprows=range(20),
                           skipfooter=2)
    • 1

    数据集太大。所以,我不能在这里显示完整截图。让我们看看列的名称。

    dataset
    dataset

    我们不会使用很多列。我只是删除了这些列并将国家名称(“OdName”)设置为索引。

    df = df.drop(columns = ['Type''Coverage''AREA''AreaName',      'REG''RegName''DEV''DevName',]).set_index('OdName')
    df.head()
    • 1
    example
    example

    我为这个练习选择了爱尔兰和巴西的数据。没有特殊原因。我随机选择了它们。

    Ireland = df.loc['Ireland']
    Brazil = df.loc['Brazil']
    • 1

    归一化

    有几种不同的方法可以归一化数据。我们将数据归一化以使数据处于相似的范围内。爱尔兰和巴西的移民数据有不同的范围。我需要将它们调整到 0 到 1 的范围内。我只是将爱尔兰数据除以爱尔兰数据系列的最大值。我对巴西的数据系列做了同样的事情。

    i_normal = Ireland / Ireland.max()
    b_normal = Brazil / Brazil.max()
    • 1

    我们将根据年份绘制爱尔兰和巴西的数据。将年份列在清单上会很有用。

    years = list(range(19802014))
    • 1

    可视化

    为了看看区别,让我们先绘制散点图。

    import matplotlib.pyplot as plt
    plt.figure(figsize=(148))
    plt.scatter(years, Ireland, color='blue')
    plt.scatter(years, Brazil, color='orange')
    plt.xlabel("Years", size=14)
    plt.ylabel("Number of immigrants", size=14)
    plt.show()
    • 1
    scatter
    scatter

    现在,绘制气泡图。我们必须输入我们之前定义的尺寸。

    plt.figure(figsize=(128))
    plt.scatter(years, Brazil, 
                      color='darkblue'
                     alpha=0.5,
                     s = b_normal * 2000)
    plt.scatter(years, Ireland, 
                      color='purple'
                     alpha=0.5,
                     s = i_normal * 2000,
                     )
    plt.xlabel("Years", size=14)
    plt.ylabel("Number of immigrants", size=14)
    • 1
    bubble
    bubble

    我们可以通过气泡的大小来了解移民的数量。气泡越小,移民人数越少。

    我们也可以让结果更多彩多姿。为了让它有点意义,我们需要对数据系列进行排序。您很快就会看到原因。

    c_br = sorted(Brazil)
    c_fr = sorted(France)
    • 1

    现在我们将传递这些值来改变颜色。

    plt.figure(figsize=(128))
    plt.scatter(years, Brazil, 
                      c=c_br,
                     alpha=0.5,
                     s = b_normal * 2000)
    plt.scatter(years, Ireland, 
                      c=c_fr,
                     alpha=0.5,
                     s = i_normal * 2000,
                     )
    plt.xlabel("Years", size=14)
    plt.ylabel("Number of immigrants", size=14)
    • 1
    result
    result

    现在我们添加了另一个维度,颜色。颜色随移民数量变化。但是当我们绘制两个变量时,它并没有那么好。因为在这个过程中我们没有明确定义各个变量的颜色。但是当我们在 y 轴上绘制一个变量时,它做得很好。让我们绘制每年来自巴西的移民人数,以了解多年来的趋势。

    plt.figure(figsize=(128))
    plt.scatter(years, Brazil, 
                      c=c_br,
                     alpha=0.5,
                     s = b_normal * 2000)
    plt.xlabel("Years", size=14)
    plt.ylabel("Number of immigrants of Brazil", size=14)
    • 1
    color
    color

    欢迎Star -> 学习目录

    更多教程 -> 学习目录


    参考资料

    [1]

    Source: https://towardsdatascience.com/bubble-plots-in-matplotlib-3f0b3927d8f9

    本文由 mdnice 多平台发布

  • 相关阅读:
    跨行业人群如何通过NPDP?过来人给的四点建议!
    算力经济下DPU芯片的发展机遇
    干货!教您使用工业树莓派结合CODESYS配置EtherCAT主站
    Vue3+Vite3+Vant初体验及踩过的一些坑
    教你如何在三秒内,将PPT转换成翻页的电子书
    JS高级:对象创建模式
    事件循环-宏任务-微任务
    如何实现通过Leaflet加载dwg格式的CAD图
    【Python基础篇018】类的进阶知识点
    乓乓响再度冲刺港股:来自临时及应急服务客户毛利率达70%
  • 原文地址:https://blog.csdn.net/swindler_ice/article/details/128184392