一.散点图

  • 在Python中进行可视化,我们需要的是这些库:

    • matplotlib:python中自带的,也是最常用的可视化工具包,在Jupyter中甚至可以找到matplotlib的网站
    • seaborn:python中可视化的新起之秀,致力于统计数据可视化
    • brewer2mpl:brewer2mpl是一个专供python使用的,用于访问colorbrewer2色谱的工具,colorbrewer2是一个专业颜色顾问公司。
  • 假设我有一个数据探索,我想了解下人口和面积的关系,是不是面积越大,人口数量就是越大?还是面积在一个指定的区间内,人口数量才是最多的,如果是,那么这个区间是多少呢?对于下图,我们是如何画出来的呢?[图片上传失败...(image-b35bd1-1587003130440)]
    2020041501.png
# 查看必要库的版本
import sys
import matplotlib as mlp
import seaborn as sns
import brewer2mpl 


print(mlp.__version__)
print(sns.__version__)
print(sys.version)

散点图

  • 散点图是用于观测两两变量祝贺构成的相关关系的直观展现,从图中我们可以看出两变量的相关性及其中的线性或非线性的变化规律。
  • 常用的画散点图函数scatte()
# 导入需要的绘图

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#绘制超简单的散点图:变量x1与x2的关系

#定义横轴和纵轴数据
x1 = np.random.randn(10)
x2 = x1 + x1**2 - 10

#确定画布,参数figsize(width, height)
plt.figure(figsize=(8,3))

#绘图
plt.scatter(x1,x2,                    # 横坐标,纵坐标
            s=50,                    # 数据点的尺寸大小
            c="red",                # 数据点的颜色
            label = "Red Points"   # 标签
           )

#装饰图形
plt.legend() #显示图例,和scatter函数的label参数标签联用
plt.show() #让图形显示
2020041502.png
# 如果我们希望显示多种颜色的散点图,并且这个颜色是我们的标签y所代表的分类
# 思路:每次画同类标签的散点图


#确立颜色列表
colors = ["red","black"]
#确立标签的类别列表
labels = ["负样本","正样本"] 

for i in range(2):
    plt.scatter(X[y==i,0],   # 横坐标
                X[y==i,1],   # 纵坐标
                c=colors[i], # 颜色
                label = labels[i])
plt.legend()
plt.show()
2020041503.png
# 如何画一张多分类的散点图呢?

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

#探索数据
print(midwest.shape)
print(midwest.columns)

midwest.head(3)
# 丰富我们的图像

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


# 准备标签列表和颜色列表
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),    #绘图尺寸
           dpi=100,            #图像分辨率
           facecolor='w',     #图像的背景颜色,设置为白色,默认也是白色
           edgecolor='k'     #图像的边框颜色,设置为黑色,默认也是黑色
          )

# 循环绘图
# 我们可以输入横纵坐标,也可以输入横纵坐标的名字,然后使用data这个参数来传入全数据集
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), 
                # c=np.array(plt.cm.tab10(i/len(categories))).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()
2020041501.png
# 分析数据

plt.figure(figsize=(16, 10),     # 绘图尺寸
           dpi=60,               # 图像分辨率
           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(plt.cm.tab10(i/float(len(categories)-1))).reshape(1,-1),label=str(category))

#高学历,低贫困的地方
plt.scatter("area","poptotal",
           data = midwest.loc[midwest.category == "HLU",:],
            s=300,
            facecolors="None",  # 点的填充颜色
            edgecolors="red",   # 点的边框颜色
            label = "Selected")

#对图像进行装饰
plt.gca().set(xlim=(0.0, 0.12), ylim=(0, 90000)) #控制横纵坐标的范围
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()
2020041504.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容