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:导入数据

midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")
# 准备数据以及颜色
categories = np.unique(midwest["category"]) # 使用np.umique对midwest["category"]去重
# 使用列表推导式,建立colors列表
# 14个数据,0-13
colors = [plt.cm.tab10(i/float(len(categories) - 1)) for i in range(len(categories))]

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

    # 建立画布
plt.figure(figsize=(16, 10), # 绘图尺寸默认为(6.4, 4.8)
dpi = 80, # 图像分辨效率,默认dpi为100
facecolor = "w", # 背景颜色,默认为白色
edgecolor = 'k') # 边框颜色,默认为白色 # 绘图
# 使用函数enumerate:将可遍历的数据对象组合为一个索引序列,同时列出数据和数据索引
for i, category in enumerate(categories):
plt.scatter('area', 'poptotal', # 横纵坐标
data=midwest.loc[midwest.category==category, :] # 横纵坐标所对应的数据
, s="dot_size" # 数据尺寸大小
, c= np.array(colors[i]).reshape(1,-1)
, label=str(category) # 设定标签名称
, edgecolors= np.array(colors[i]).reshape(1,-1) # 标记的边缘颜色
# , alpha = 0.7
, linewidths=.5) # 线宽

# step3:Encircling

    # 定义绘制画环绕的函数
def encircle(x, y, ax=None, **kw): if not ax: ax = plt.gca() # 如果没有子图对象,那么就创建一个新的子图对象
# np.c_中的c是column(列)的缩写,是按列叠加两个矩阵的意思,也可以说是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的merge()。
p = np.c_[x, y]
hull = ConvexHull(p) # 将数据集输入到ConverHull中,自动生成凸包类型的对象(hull)
ploy = plt.Polygon(p[hull.vertices, :], **kw) # 利用plt.Polygon绘制多边形
ax.add_patch(ploy) # 将多边形ploy修补到当前子图中 # 选择要包围的数据
midwest_encircle_data = midwest.loc[midwest.state == 'IN', :]

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

    # 绘画线条
encircle(midwest_encircle_data.area,
midwest_encircle_data.poptotal,
ec = "firebrick", # 线条颜色
fc = 'none',
linewidth = 1.5) # 线宽
# 背景颜色
encircle(midwest_encircle_data.area,
midwest_encircle_data.poptotal,
ec = 'none', # 线条颜色
fc = 'gold',
alpha = 0.1) # 透明度

# step5:装饰

plt.gca().set(xlim = (0.0, 0.12),        # 设置x坐标轴的范围
ylim = (0, 90000), # 设置y坐标轴的范围
xlabel = "Area", # 设置x坐标的标题
ylabel = "Population") # 设置y坐标的标题 plt.xticks(fontsize = 12) # 设置x坐标的字体
plt.yticks(fontsize = 12) # 设置y坐标的字体
plt.title("Bubble Plot with Encircling", fontsize=22) # 设置图像标题和字体字体
plt.legend(fontsize = 12) # 显示图例,设置图例大小
plt.show()

气泡图

博文总结

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__

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

数据可视化实例(五): 气泡图(matplotlib,pandas)的更多相关文章

  1. 【Matplotlib】数据可视化实例分析

    数据可视化实例分析 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为要实现其功能用途而令 ...

  2. 动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题

    动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题 D3 ...

  3. [译]学习IPython进行交互式计算和数据可视化(五)

    第四章:交互式绘图接口 本章我们将展示Python的绘图功能以及如何在IPython中交互式地使用它们. NumPy为处理大量的多维数组结构的数据提供了高效的方法.但是看行行列列的数字总不如直接看曲线 ...

  4. 数据可视化:绘图库-Matplotlib

    为什么要绘图? 一个图表数据的直观分析,下面先看一组北京和上海上午十一点到十二点的气温变化数据: 数据: 这里我用一段代码生成北京和上海的一个小时内每分钟的温度如下: import random co ...

  5. 数据可视化利器pyechart和matplotlib比较

    python中用作数据可视化的工具有多种,其中matplotlib最为基础.故在工具选择上,图形美观之外,操作方便即上乘. 本文着重说明常见图表用基础版matplotlib和改良版pyecharts作 ...

  6. 数据可视化(一)-Matplotlib简易入门

    本节的内容来源:https://www.dataquest.io/mission/10/plotting-basics 本节的数据来源:https://archive.ics.uci.edu/ml/d ...

  7. 数据可视化实例(十五):有序条形图(matplotlib,pandas)

    偏差 (Deviation) 有序条形图 (Ordered Bar Chart) 有序条形图有效地传达了项目的排名顺序. 但是,在图表上方添加度量标准的值,用户可以从图表本身获取精确信息. https ...

  8. 数据可视化实例(三): 散点图(pandas,matplotlib,numpy)

    关联 (Correlation) 关联图表用于可视化2个或更多变量之间的关系. 也就是说,一个变量如何相对于另一个变化. 散点图(Scatter plot) 散点图是用于研究两个变量之间关系的经典的和 ...

  9. 数据可视化实例(十四):带标记的发散型棒棒糖图 (matplotlib,pandas)

    偏差 (Deviation) 带标记的发散型棒棒糖图 (Diverging Lollipop Chart with Markers) 带标记的棒棒糖图通过强调您想要引起注意的任何重要数据点并在图表中适 ...

随机推荐

  1. 附024.Kubernetes全系列大总结

    Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...

  2. STM32单片机应用与全案例实践 /stm32自学笔记 第二版 pdf

    STM32单片机应用与全案例实践pdf https://pan.baidu.com/s/16WrivuLcHvLTwS__Zcwl6Q 4rj3 stm32自学笔记 第二版 pdf https://p ...

  3. webpack简单笔记

    本文简单记录学习webpack3.0的笔记,已备日后查阅.节省查阅文档时间 安装 可以使用npm安装 //全局安装 npm install -g webpack //安装到项目目录 npm insta ...

  4. 尚学堂 215 在java中执行JavaScript代码

    package com.bjsxt.test; import java.io.FileReader; import java.net.URL; import java.util.List; impor ...

  5. 服务扫描-dmitry、nmap、amap和服务识别

    dmitry使用-pb参数可以进行常用端口的banner抓取. 抓取效果: 强大的nmap也可以进行banner抓取,但是需要使用nmap内置的banner.nse脚本: kali中还有一个工具叫am ...

  6. 底层剖析Python深浅拷贝

    底层剖析Python深浅拷贝 拷贝的用途 拷贝就是copy,目的在于复制出一份一模一样的数据.使用相同的算法对于产生的数据有多种截然不同的用途时就可以使用copy技术,将copy出的各种副本去做各种不 ...

  7. F查询与Q查询、事务及其它

    一.F查询和Q查询 1.1 F查询 在上面所有的例子中,我们构造的过滤器都是将字段值与某个我们自己设定的常量做比较.如果是对两个字段的值做比较,那这时候就要用到F查询了. Django提供F()来做这 ...

  8. 暑假集训Day2 状压dp 特殊方格棋盘

    首先声明 : 这是个很easy的题 可这和我会做有什么关系 题目大意: 在n*n的方格棋盘上放置n个车,某些格子不能放,求使它们不能互相攻击的方案总数. 注意:同一行或同一列只能有一个车,否则会相互攻 ...

  9. C++ Primer Plus(四)

    完整阅读C++ Primer Plus 系统重新学习C++语言部分,记录重要但易被忽略的,关键但易被遗忘的. 友元.异常和其他 1.抛出异常类时,虽然catch的是一个引用,但是也会产生一次拷贝,因为 ...

  10. Oracle数据库的闪回操作(查询指定时间的数据、恢复数据)

    通过DELETE删除数据后相当于放入回收站,一般情况下可以找回:通过UPDATE更新数据后数据库也会保留数据快照.闪回就是恢复指定时间的数据快照以达到恢复数据的目的.根据步骤一查询出数据快照,恢复数据 ...