数据可视化实例(五): 气泡图(matplotlib,pandas)

https://datawhalechina.github.io/pms50/#/chapter2/chapter2

关联 (Correlation)

关联图表用于可视化2个或更多变量之间的关系。 也就是说,一个变量如何相对于另一个变化。

带边界的气泡图

有时,您希望在边界内显示一组点以强调其重要性。 在这个例子中,你从数据框中获取记录,并用下面代码中描述的 encircle() 来使边界显示出来。

导入所需要的库

# 导入numpy库
import numpy as np
# 导入pandas库
import pandas as pd
# 导入matplotlib库
import matplotlib as mpl
import matplotlib.pyplot as plt
# 导入seaborn库
import seaborn as sns
# 在jupyter notebook显示图像
%matplotlib inline

# 导入patches
from matplotlib import patches
# 导入ConvexHull
from scipy.spatial import ConvexHull

设定图像各种属性

large = 22; med = 16; small = 12
            # 设置子图上的标题字体
params = {‘axes.titlesize‘: large,  
            # 设置图例的字体
          ‘legend.fontsize‘: med,
            # 设置图像的画布
          ‘figure.figsize‘: (16, 10),  
            # 设置标签的字体
          ‘axes.labelsize‘: med, 
            # 设置x轴上的标尺的字体
          ‘xtick.labelsize‘: med,  
            # 设置整个画布的标题字体
          ‘ytick.labelsize‘: med,  
          ‘figure.titlesize‘: large}  
# 更新默认属性
plt.rcParams.update(params)  
 # 设定整体风格
plt.style.use(‘seaborn-whitegrid‘)
# 设定整体背景风格
sns.set_style("white")

程序代码

# step1:导入数据

# step2:为每个类别绘制具有独特颜色的散点图

# step3:Encircling

# step4:绘制顶点周围的多边形

# step5:装饰

气泡图

博文总结

np.unique

  • 该函数是去除数组中的重复数字,并进行排序之后输出。

列表推导式

  • 列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。
  • 它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列 表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。
  • 列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。
  • colors = [plt.cm.tab10(i/float(len(categories) - 1)) for i in range(len(categories))]

创建画布

  • plt.figure()
  • 参数说明
    • figsize__画布尺寸
    • dpi__分辨率
    • facecolor__背景颜色,默认为白色
    • edgecolor__边框颜色,默认为白色

enumerate

  • enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
  • 可用[*]打开惰性数据

绘制散点图

  • plt.scatter()
  • 参数说明
    • x__横坐标
    • y__纵坐标
    • s__数据尺寸大小
    • c__颜色
    • label__设置标签名称
    • edgecolor__标记的边缘颜色
    • alpha__透明度
    • linewidth__线宽

plt.gca

  • plt.gca()获得当前的对象子图对象ax,如果没有子图对象,那一个么就创建新的子图对象

np.c__

  • 按行连接两个矩阵,但要求行数相等