共计 2554 个字符,预计需要花费 7 分钟才能阅读完成。
导读
本系列将继续更新 50 个 matplotlib
可视化示例,次要参考 Selva Prabhakaran
在MachineLearning Plus
上公布的博文:Python 可视化 50 图。
定义
关联图是 查看两个事物之间关系 的图像,它可能展现出一个事物随着另一个事物是如何变动的。关联图的类型有:折线图,散点图,相关矩阵 等。
散点图
测试
- 导入须要应用的库
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
- plt.scatter
# 绘制超简略的散点图:变量 x1 与 x2 的关系
#定义数据
x1 = np.random.randn(10) #取随机数
x2 = x1 + x1**2 - 10
#确定画布 - 当只有一个图的时候,不是必须存在
plt.figure(figsize=(8,4))
#绘图
plt.scatter(x1,x2 #横坐标,纵坐标
,s=50 #数据点的尺寸大小
,c="red" #数据点的色彩
,label = "Red Points"
)
#装璜图形
plt.legend() #显示图例
plt.show() #让图形显示
- 例子
# 除了两列 X 之外,还有标签 y 的存在
# 在机器学习中,常常应用标签 y 作为色彩来察看两种类别的散布的需要
X = np.random.randn(10,2) # 10 行,2 列的数据集
y = np.array([0,0,1,1,0,1,0,1,0,0])
colors = ["red","black"] # 确立色彩列表
labels = ["Zero","One"] # 确立标签的类别列表
for i in range(X.shape[1]):
plt.scatter(X[y==i,0],
X[y==i,1],
c=colors[i],
label = labels[i])
# 在标签中存在几种类别,就须要循环几次,一次画一个色彩的点
plt.legend()
plt.show()
实战
数据
# 导入数据
midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")
# 摸索数据
midwest.shape
midwest.head()
midwest.columns
标签
midwest['category']
# 提取标签中的类别
categories = np.unique(midwest['category']) # 去掉所有反复的项
categories # 查看应用的标签,如下图
色彩
plt.cm.tab10()
用于创立色彩的十号光谱,在 matplotlib
中,有泛滥光谱供咱们抉择:https://matplotlib.org/stable…。能够在 plt.cm.tab10()
中输出任意浮点数,来提取出一种色彩。光谱 tab10 中总共只有十种色彩,如果输出的浮点数比拟靠近,会返回相似的色彩。这种色彩会以元祖的模式返回,示意为四个浮点数组成的 RGBA 色调空间或者三个浮点数组成的 RGB 色调空间中的随机色调。
color1 = plt.cm.tab10(5.2)
color1 # 四个浮点数组成的一个色彩
绘图
# 预设图像的各种属性
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' # 图像的边框色彩,设置为彩色,默认也是彩色
)
# 循环绘图
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()
欢送 Star -> 学习目录 <- 点击跳转
国内链接 -> 学习目录 <- 点击跳转
本文由 mdnice 多平台公布
正文完