博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python数据可视化之散点图(进阶篇---图文并茂详细版!!!)
阅读量:3960 次
发布时间:2019-05-24

本文共 3182 字,大约阅读时间需要 10 分钟。

散点图进阶篇

数据获取

       •进阶散点图可视化需要大量的数据,网上有很多获取数据的来源,在这里我们可以从GitHub中获取我们想要的数据!!!

       •数据来源GitHub:
在这里插入图片描述

       •GitHub是国外网站,可能因为网速慢导致下载失败,一可以百度解决下载问题,二可以评论留言,博主会私信发给完整的数据集!!!

       •将上述链接的整个数据集下载下来,数据集中有很多我们可以练习的数据类,我们从中选择一个数据类进行散点图的演示!!

数据展示

       •数据集下载完成后,解压,在文件目录中找到下图中的csv数据文件

在这里插入图片描述
       •上述的csv文件数据为:美国中西部地区人口分布详细数据,我们对此数据进行分析!!!

在这里插入图片描述

       •图中所示,大量的数据已满足我们可视化散点图的需求!!!

数据分析

1.确定横纵坐标的选择

       •首先分析数据表中的特征值关系,我们需要研究总人口与面积的关系!!

在这里插入图片描述
       •上述表中特征值意思为:
       •[“城市ID”, “郡”,“州",“面积",“总人口”,“人口密度","白人人口”,"非裔人口”,“美洲印第安人人口”,"亚洲人口”,"其他人种人口”,“白人所占比例”,“非裔所占比例”,“美洲印第安人所占比例”,“亚洲人所占比例”,“其他人种比例”“成年人口”,“具有高中文凭的比率”,“大学文凭比例”,“有工作的人群比例”“已知贫困人口”,“已知贫困人口的比例”,“贫困线以下的人的比例”,“贫困线以下的儿童所占比例”,“贫困的成年人所占的比例”,“贫困的老年人所占的比例”,“是否拥有地铁”,“标签”,“点的尺寸”]
       •红色圈出的两个特征值是需要使用的关系特征值,即为我们所需的横纵坐标!!

2.准备标签的列表与颜色

       •首先要提取标签中不重复的值,观察一共有多少中标签,即确定我们需要多少中颜色!!

import numpy as npimport pandas as pd# 导入数据midwest = pd.read_csv(r'D:\9\midwest_filter.csv')# 提取标签中不重复类别categories = np.unique(midwest['category'])  # 使用unique去除重复项print(categories)

在这里插入图片描述

       •上述图中有14个不重复的标签,即我们需要14种不重复颜色!!
       •对于这14种不同颜色我们可以选择matplotlib中的十号光谱,自动生成14中不同颜色!!
在这里插入图片描述
举例:代码演示tab10生成不同颜色:

import matplotlib.pyplot as pltimport numpy as npcolor1 = plt.cm.tab10(5.2)  # tab(10)括号中输入随机数,生成颜色x = np.random.rand(10)  # 生成十个随机数y = x + x ** 2 - 10  # 函数关系确定y的值plt.scatter(x, y,            c=np.array(color1).reshape(1, -1))plt.show() # 显示图像

在这里插入图片描述

       •当你在代码中直接使用color1时,不会报错,但会出现下图警告!!!解决方法解释参考博文,此博文也是博主自己写的,可详细理解:
在这里插入图片描述

4.确定横纵坐标的值

       •使用循环取出不同标签的横纵坐标,(面积,总人口)

import numpy as npimport pandas as pd# 导入数据midwest = pd.read_csv(r'D:\9\midwest_filter.csv')# 提取标签中不重复类别categories = np.unique(midwest['category'])  # 使用unique去除重复项for i in range(len(categories)):    area = midwest.loc[midwest['category'] == categories[i], 'area'] # 横坐标    poptoal = midwest.loc[midwest['category'] == categories[i], 'poptotal'] # 纵坐标    print(area)    print(poptoal)

在这里插入图片描述

       •如上图所示:即为成功取出所需横,纵坐标!!

5.绘制基础图像

       •将上述代码融合可得:

import matplotlib.pyplot as pltimport numpy as npimport pandas as pd# 导入数据midwest = pd.read_csv(r'D:\9\midwest_filter.csv')# 提取标签中不重复类别categories = np.unique(midwest['category'])  # 使用unique去除重复项plt.figure(figsize=(16, 10))for i in range(len(categories)):    plt.scatter(midwest.loc[midwest['category'] == categories[i], 'area']  # 横坐标                , midwest.loc[midwest['category'] == categories[i], 'poptotal']  # 纵坐标                , s=20  # 数据点大小                , c=np.array(plt.cm.tab10(i / len(categories))).reshape(1, -1)  # 颜色                , label=categories[i])  # 标签plt.legend()  # 显示图例(标签)plt.show()  # 显示图像

       •将上述代码优化(效果相同!!)

import matplotlib.pyplot as pltimport numpy as npimport pandas as pd# 导入数据midwest = pd.read_csv(r'D:\9\midwest_filter.csv')# 准备标签列表与颜色列表categories = np.unique(midwest['category'])colors = [plt.cm.tab10(i / float(len(categories) - 1)) for i in range(len(categories))]plt.figure(figsize=(16, 10))for i, category in enumerate(categories):  # i 为索引 category为特征    plt.scatter('area', 'poptotal', data=midwest.loc[midwest.category == category, :]                , s=20  # 点的大小                , c=np.array(colors[i]).reshape(1, -1)  # 点的颜色                , label=str(category))  # 标签plt.legend()  # 显示图例(标签)plt.show()  # 显示图像

       •上述的两个代码块的图像都为下图:

在这里插入图片描述
       •由上述绘制的图片可以看出:仅有少许发达城市为面积小,人口多,也有右上角的特殊点面积非常大,人口非常多,但是大部分城市的面积与人口是称相似正比的
       •出现上述图像即为绘制成功,在应对以后多个标签类型时,即可游刃有余的处理图像!!!

转载地址:http://ayrzi.baihongyu.com/

你可能感兴趣的文章
Advanced searching - operators reference
查看>>
LoadRunner之——Java vuser
查看>>
LoadRunner之——场景创建、设置、运行
查看>>
QTP基本使用——Recovery Scenarios
查看>>
Ruby 的优缺点
查看>>
Ruby 教程(一)
查看>>
Ruby 教程(二)
查看>>
Android——简介
查看>>
Ruby 教程(三)
查看>>
Ruby 教程(四)
查看>>
GHOST后只剩下一个分区后的解决方法
查看>>
局部变量、全局变量、对象变量、类变量
查看>>
手动测试 VS 自动测试
查看>>
QTP基本使用——WORD
查看>>
QTP基本使用——Excel
查看>>
QTP基本使用——检查焦点
查看>>
排序算法之一
查看>>
ArrayList与Vector的区别
查看>>
QTP之描述性编程Descriptive Programming(一)
查看>>
面试题目之一
查看>>