#导入包
import matplotlib.pyplot as plt

#让图表在jupyter展示出来
%matplotlib inline
#解决中文乱码问题
plt.rcParams["font.sans-serif"]='SimHei'
#解决负号无法显示
plt.rcParams["axes.unicode_minus"] = False

#将图表设置成矢量图
%config InlineBackend.figure_format = 'svg'

#建立画布,figsize设置画布大小
fig = plt.figure(figsize=(8,6))
#利用add_subplot函数建立坐标系时需要先有画布,再在画布上绘制坐标系。
#在画布fig上绘制1×1个坐标系,并且把坐标系赋值给变量ax1,代码如下所示。
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

plt.subplot2grid函数建立坐标系时不需要先建立画布,只需要导
入plt库即可。导入plt库以后可以直接调用plt库的subplot2grid方法建立
坐标系,示例如下:

plt.subplot2grid((2,2),(0,0))

上面代码表示将图表的整个区域分成2行2列,且在(0,0)位置绘图,
坐标系如下图所示。

用这种方式建立坐标系时,具体的绘图代码需要跟在建立坐标系的
语句后面。将图表的整个区域分成2行2列,并在(0,0)位置做折线图,在
(0,1)位置做柱形图,具体实现如下所示。

import numpy as np
x = np.arange(6)
y = np.arange(6)
plt.subplot2grid((2,2),(0,0))
plt.plot(x,y)
plt.subplot2grid((2,2),(0,1))
plt.bar(x,y)

与plt.subplot2grid函数类似,plt.subplot也是plt库的一个函数,也表
示将区域分成几份,并指明在哪一块区域上绘图,两者的区别只是表现
形式不一样。

plt.subplot(2,2,1)

上面的代码表示将图表的整个区域分成2行2列,且在第1个坐标系
里面绘图,运行结果如下图所示。

用这种方式建立坐标系时同样需要将具体的绘图代码跟在建立坐标
系语句后面。将图表的整个区域分成2行2列,并在第1个坐标系上做折
线图,在第4个坐标系上做柱形图,具体实现如下所示。

plt.subplot(2,2,1)
plt.plot(x,y)
plt.subplot(2,2,4)
plt.bar(x,y)

plt.subplots函数也是plt库的一个函数,它与subplot2grid函数和
subplot函数的不同之处是,subplot2grid函数和subplot函数每次只返回一
个坐标系,而subplots函数一次可以返回多个坐标系。

fig,axes = plt.subplots(2,2)

上面代码表示将图表的整个区域分成2行2列,并将4个坐标系全部
返回,运行结果如下图所示。

你想在哪个坐标系里面绘图通过axes[x,y]指明即可。现在我们在上
例的图表中绘图,首先在[0,0]坐标系中绘制折线图,然后在[1,1]坐标系
中绘制折线图,具体实现如下所示。

axes[0,0].plot(x,y)
axes[1,1].bar(x,y)
fig

几种创建坐标系方法的区别

第一种创建坐标系的方法 add_subplot 属于对象式编程,所有的操
作都是针对某个对象进行的,比如先建立一块画布,然后在这块画布上
建立坐标系,进而在坐标系上绘图。而后三种建立坐标系的方法属于函
数式编程,都是直接调用 plt 库里面的某个函数或者方法达到创建坐标
系的目的。
对象式编程的代码比较烦琐,但是便于理解;函数式编程虽然代码
简洁,但是不利于新人掌握整体的绘图原理,所以建议大家刚开始的时
候多使用对象式编程,当大家对整个绘图原理很熟悉时,再尝试使用函
数式编程。
这两种编程方式不仅体现在创建坐标系中,在接下来的一些操作中
也会有涉及,有的时候两者会交叉使用,也就是在一段代码中既有函数
式编程,也有对象式编程。

本文摘自《对比Excel,轻松学习Python数据分析》张俊红 著,如有侵权,请告知,立删。

Python matplotlib 学习——建立画布和坐标系的更多相关文章

  1. 【划重点】Python matplotlib绘图建立画布和坐标系

    一.建立画布 import matplotlib.pyplot as plt import numpy as np x=np.arange(8) y=np.arange(8) print(x,y) # ...

  2. 小白学Python——Matplotlib 学习(2):pyplot 画图

    matplotlib.pyplot是一组命令样式函数,使matplotlib像MATLAB一样工作.每个pyplot函数都会对图形进行一些更改:例如,创建图形,在图形中创建绘图区域,在绘图区域中绘制一 ...

  3. 小白学Python——Matplotlib 学习(1)

    众所周知,通过数据绘图,我们可以将枯燥的数字转换成容易被人们接受的图表,从而让人留下更加深刻的印象.而大多数编程语言都有自己的绘图工具,matplotlib就是基于Python的绘图工具包,使用它我们 ...

  4. 小白学Python——Matplotlib 学习(3) 函数图形

    import matplotlib.pyplot as plt import numpy as np x = np.linspace(-1,1,50) y = 2*x + 1 plt.figure() ...

  5. Matplotlib学习---matplotlib的一些基本用法

    Matplotlib有两种接口,一种是matlab风格接口,一种是面向对象接口.在这里,统一使用面向对象接口.因为面向对象接口可以适应更复杂的场景,在多图之间进行切换将变得非常容易. 首先导入matp ...

  6. Python - matplotlib 数据可视化

    在许多实际问题中,经常要对给出的数据进行可视化,便于观察. 今天专门针对Python中的数据可视化模块--matplotlib这块内容系统的整理,方便查找使用. 本文来自于对<利用python进 ...

  7. Python matplotlib绘图设置图例

    一.语法简介 plt.legend(loc=2,edgecolor='red',facecolor='green',shadow='True',fontsize=10) #edgecolor 图例边框 ...

  8. Python matplotlib绘图设置坐标轴的标题

    一.语法简介 plt.xlabel("销售月份",fontsize=16,color='red',fontweight='bold',loc='center',background ...

  9. 【划重点】Python matplotlib绘图设置坐标轴的刻度

    一.语法简介 plt.xticks(ticks,labels,rotation=30,fontsize=10,color='red',fontweight='bold',backgroundcolor ...

  10. python matplotlib plot 数据中的中文无法正常显示的解决办法

    转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool python matplotlib pl ...

随机推荐

  1. Centos安装nodejs,npm (压缩包)

    下载node阿里云镜像(推荐) 地址:https://npm.taobao.org/mirrors/node/latest-v14.x/ 选择自己要下载的版本,这里我选择的v14.6.0 cd /us ...

  2. 第一个Django应用 - 第二部分:Django数据库配置,模型和后台

    汇总操作 注:polls为应用名 1.执行命令:python manage.py migrate,生成默认的数据库表等 2.修改应用的models.py文件,添加数据库表模型等 3.INSTALLED ...

  3. MySQL集群搭建(5)-MHA高可用架构

    1 概述 1.1 MHA 简介 MHA - Master High Availability 是由 Perl 实现的一款高可用程序,出现故障时,MHA 以最小的停机时间(通常10-30秒)执行 mas ...

  4. SCI论文写作指南

    目录 科技论文的特点 时态的使用 论文的逻辑结构 作者 选择期刊 写作 Title/论文题名 题名 题名的作用 题名基本要求 作者 作者姓名的拼音表达方式 作者单位名与地址的标署 摘要的写作与关键词 ...

  5. 移动端300ms延迟问题和点击穿透问题

    一.移动端300ms延迟问题: 一般情况下,如果没有经过特殊处理,移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟.也就是说,当我们点击页面的时候移动端浏览器并不是立即作出反应,而是会 ...

  6. PHP全栈开发(八):CSS Ⅷ border margin padding

    在CSS里面,所有的HTML元素都可以看成是一个盒子. 那么在设计和布局的时候,最常用的,也就是用来定义这个盒子的外边距的就是margin 定义这个盒子的内边距的就是padding 元素的内容所占的宽 ...

  7. 网络安全(一)主动进攻之DNS基础和ettercap实现DNS流量劫持

    alittlemc,个人原创,个人理解和观点.若有错误.不理解请与我联系,谢谢! 介绍了DNS的解析过程. DNS劫持的思路和实践. DNS 域名 以为live.bilibili.com为例子,从后到 ...

  8. struts2 标签总结

    <s:if>判断字符串的问题: 1.判断单个字符:<s:if test="#session.user.username=='c'"> 这样是从session ...

  9. .NET 5 设计 API (资源站)

    跟新于 2022-11日 数据抓取端 随着数据的增多,问题也越来越多 用redis 主要是为了 以后进行,多个数据库写入. 例如我搭建一个 别的数据库论坛,我直接拿数据去redis里面拿,就不用跨库查 ...

  10. GitHub 供应链安全已支持 Dart 开发者生态

    通过 Dart 和 GitHub 团队的共同努力,自 10 月 7 日起,GitHub 的 Advisory Database (安全咨询数据库).Dependency Graph (依赖项关系图) ...