Python可视化经典50图:散点图

散点图

  • 适用于需要探索两变量之间关联关系的数据
  • 优点是对于处理数据量大、分布型数据十分有效
  • 缺点是当散点的类型显示较多时会比较混乱

目标图形Python可视化经典50图:散点图_第1张图片
代码

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
#如果你在使用Jupyter Notebook,你会需要这样一句命令来让你的图像显示在下

#导入数据
midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")

#准备标签列表和颜色列表

#不重复地提取出category列中的种类
categories = np.unique(midwest['category'])   
#使用列表推导式来生成颜色标签,更多光谱点击 (https://matplotlib.org/tutorials/colors/colormaps.html)
colors = [plt.cm.tab10(i/float(len(categories)-1)) for i in range(len(categories))]

#建立画布
plt.figure(figsize=(16, 10)   #绘图尺寸
           , dpi=100          #图像分辨率
           , facecolor='w'    #图像的背景颜色,设置为白色,默认也是白色
           , edgecolor='k'    #图像的边框颜色,设置为黑色,默认也是黑色
          )

#循环绘图
for i, category in enumerate(categories):
    plt.scatter('area'    #横轴 
    , 'poptotal'   #纵轴
    , data=midwest.loc[midwest.category==category, :]
    , s=20  
    , c=np.array(colors[i]).reshape(1,-1)  
    , label=str(category))  


#对图像进行装饰
#plt.gca() 获取当前的子图,如果当前没有任何子图的话,就创建一个新的子图
plt.gca().set(xlim=(0, 0.12), ylim=(0, 80000))  #控制横纵坐标的范围
plt.xticks(fontsize=12)  #坐标轴上的标尺的字的大小
plt.yticks(fontsize=12)
plt.ylabel('Population',fontsize=22)  #坐标轴上的标题和字体大小
plt.xlabel('Area',fontsize=22)
plt.title("Scatterplot of Midwest Area vs Population", fontsize=22)  #整个图像的标题和字体的大小
plt.legend(fontsize=12)  #图例的字体大小
plt.show()

注:

  • 若上述数据集无法打开,可转至 https://github.com/selva86/datasets/blob/master/midwest_filter.csv
    下载数据
  • 参考自https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python/

你可能感兴趣的:(Python可视化50图)