Python 绘图与可视化 matplotlib(下)
详细的参考链接:更详细的:https://www.cnblogs.com/zhizhan/p/5615947.html
图像、子图、坐标轴以及记号
Matplotlib中图像的意思是打开的整个画图窗口,【图像】里有所谓的【子图】,子图的位置是有坐标网格确定的,而【坐标轴】的位置却不受任何限制,可以放在图像中的任何位置
上篇中是使用隐式的方法来绘制图像以及坐标轴,当我们使用plot()时,matplotlib调用gca()函数以及gcf()函数获取当前的坐标轴和图像,如果获取不到图像,则会调用figure函数来创建一个--准确来说,是使用subplot(1,1,1,)创建一个只用一个子图的图像。在快速绘图中,这样是很方便的,我们也可以显示的控制图像、子图、坐标轴及记号。
图像
当我们运行程序,会打开一个以figure*命名的窗口,这一整个窗口就是【图像】,图像的编号从1开始,和MATLAB的风格保持一致,不与Python从0开始编号的风格。
| 参数 | 默认值 | 描述 |
|---|---|---|
| num | 1 | 图像的数量 |
| figsize | figure.figsize | 图像的长和宽(英寸) |
| dpi | figure.dpi | 分辨率(点/英寸) |
| facecolor | figure.facecolor | 绘图区域的背景颜色 |
| edgecolor | figure.edgecolor | 绘图区域边缘的颜色 |
| frameon | True | 是否绘制图像边缘 |
我们可以在源文件中指明这些默认值,不过一般除了图像数量这个参数,其他一般很少修改。
可以使用close()这个命令关闭图像,这个图像有几个可选参数
close()#关闭当前窗口
close()#传入当前实例或者图像编号关闭指定窗口
close(all)关闭全部窗口
使用如下语句,关闭失败
#plt.draw()
plt.show()
time.sleep(1)
plt.close('all')
(不理解),和其他对象一样,你也可以使用setp或者set_something来设置图像的属性
子图
你可以使用【子图】来将图样(plot)放置在均匀的坐标网格中,使用subplot函数,需要指明网格的行列数量,以及你需要将【图样】放置在哪一个区域中。另外还可以使用功能同样强大的gridspec()来实现同样的功能。
使用subplot绘制没有嵌套的网格:
#绘制3行4列一共12个网格,按照先从左到右,后从上到下的顺序,左上角为1,右下角为12
plt.subplot(3,4,3)#将图样放在第三个中
使用gridspec()绘制嵌套坐标网格
from pylab import *
import matplotlib.gridspec as gridspec G = gridspec.GridSpec(3, 3) axes_1 = subplot(G[0, :])
xticks([]), yticks([])
text(0.5,0.5, 'Axes 1',ha='center',va='center',size=24,alpha=.5) axes_2 = subplot(G[1,:-1])
xticks([]), yticks([])
text(0.5,0.5, 'Axes 2',ha='center',va='center',size=24,alpha=.5) axes_3 = subplot(G[1:, -1])
xticks([]), yticks([])
text(0.5,0.5, 'Axes 3',ha='center',va='center',size=24,alpha=.5) axes_4 = subplot(G[-1,0])
xticks([]), yticks([])
text(0.5,0.5, 'Axes 4',ha='center',va='center',size=24,alpha=.5) axes_5 = subplot(G[-1,-2])
xticks([]), yticks([])
text(0.5,0.5, 'Axes 5',ha='center',va='center',size=24,alpha=.5) #plt.savefig('../figures/gridspec.png', dpi=64)
show()
效果:

坐标轴axes
我们先来看什么是Figure和Axes对象。在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个,或者多个Axes对象。每个Axes对象都是一个拥有自己坐标系统的绘图区域。其逻辑关系如下:

其中Axis是确定坐标范围的:
plt.axis([xmin, xmax, ymin, ymax])
上面例子里的axis()命令给定了坐标范围。
axes的官方文档:
- axes() by itself creates a default full subplot(111) window axis.(axes()会单独创建一个默认的窗口)
- axes(rect, axisbg=’w’) where rect = [left, bottom, width, height] in normalized (0, 1) units. axisbg is the background color for the axis, default white.(其中rect=[left,bottom,width,height]是标量范围为0-1,,axisbgsi 这个axis的背景色)
- axes(h) where h is an axes instance makes h the current axis. An Axes instance is returned.(返回一个Axes实例,其中的h是当前axis?)
rect=[左, 下, 宽, 高] 规定的矩形区域,rect矩形简写,这里的数值都是以figure大小为比例,因此,若是要两个axes并排显示,那么axes[2]的左=axes[1].左+axes[1].宽,这样axes[2]才不会和axes[1]重叠。
这个坐标轴的意思并不是坐标系中的那个坐标轴,而是一种防止图样位置的一种定位方式,坐标轴表示的定位可以放在图像的任何位置,如果你想要在一副大图中添加一副小图,就可以使用这样的方法。
import matplotlib.pyplot as plt plt.axes([0.1,0.1,.8,.8])
plt.xticks([]), plt.yticks([])
plt.text(0.6,0.6, 'axes([0.1,0.1,.8,.8])',ha='center',va='center',size=20,alpha=.5) axes([0.2,0.2,.3,.3])
xticks([]), yticks([])
text(0.5,0.5, 'axes([0.2,0.2,.3,.3])',ha='center',va='center',size=16,alpha=.5) plt.savefig("../figures/axes.png",dpi=64)
show()
效果:

plt.axes([0,0,1,1])
#plt.axes([a,b,c,d])四个都是标量,0-1
#a代表图像左边与窗口边缘的距离为窗口宽的a倍
#b-----上边
#c宽度
#d高度为窗口高的d倍

记号
matplotlib中记号中的各个细节都是可以由用户自己配置的。Ticks Locators指定在哪些位置放置记号、Ticks Formatters来调整记号的样式。主要的记号和次要的记号可以以不同的方式来显示、默认情况下、每个记号都是隐藏的、也就是说默认情况下、次要记号的列表都是空的 NullLocator
Tick Locators
下面有为不同需求设计的一些 Locators。
| 类型 | 说明 |
|---|---|
| NullLocator | No ticks.![]() |
| IndexLocator | Place a tick on every multiple of some base number of points plotted. ![]() |
| FixedLocator | Tick locations are fixed. ![]() |
| LinearLocator | Determine the tick locations. ![]() |
| MultipleLocator | Set a tick on every integer that is multiple of some base. ![]() |
| AutoLocator | Select no more than n intervals at nice locations. ![]() |
| LogLocator | Determine the tick locations for log axes. ![]() |
这些 Locators 都是 matplotlib.ticker.Locator 的子类,你可以据此定义自己的 Locator。以日期为 ticks 特别复杂,因此 Matplotlib 提供了 matplotlib.dates 来实现这一功能。
Python 绘图与可视化 matplotlib(下)的更多相关文章
- Python 绘图与可视化 matplotlib(上)
参考链接:https://www.cnblogs.com/dudududu/p/9149762.html 更详细的:https://www.cnblogs.com/zhizhan/p/5615947. ...
- Python 绘图与可视化 matplotlib 制作Gif动图
参考链接:https://blog.csdn.net/theonegis/article/details/51037850 官方文档:https://matplotlib.org/3.1.0/api/ ...
- Python 绘图与可视化 matplotlib 动态条形图 bar
bar的参考链接:https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.bar.html 第一种办法 一种方法是每次都重新画,包括清除f ...
- Python 绘图与可视化 matplotlib text 与transform
Text 为plots添加文本或者公式,反正就是添加文本了 参考链接:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.text.html#ma ...
- Python 绘图与可视化 matplotlib 散点图、numpy模块的random()
效果: 代码: def scatter_curve(): # plt.subplot(1,1,1) n=1024 X=np.random.normal(0,1,n) Y=np.random.norma ...
- Python 绘图与可视化 matplotlib 填充fill和fill_between
参考链接:https://blog.csdn.net/You_are_my_dream/article/details/53457960 fill()填充函数曲线与坐标轴之间的区域: x = np.l ...
- Python绘图与可视化
Python有很多可视化工具,本篇只介绍Matplotlib. Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本.IPython的交互环境下.Web应用 ...
- IPython绘图和可视化---matplotlib 入门
最近总是需要用matplotlib绘制一些图,由于是新手,所以总是需要去翻书来找怎么用,即使刚用过的,也总是忘.所以,想写一个入门的教程,一方面帮助我自己熟悉这些函数,另一方面有比我还小白的新手可以借 ...
- Python 绘图与可视化 seaborn
Seaborn是一个基于matplotlib的Python数据可视化库.它提供了一个高级界面,用于绘制有吸引力且信息丰富的统计图形. 主页:http://seaborn.pydata.org/ 官方教 ...
随机推荐
- 在android平台打印C语言日志
在android平台打印C语言日志 1.操作平台:AS2.0 2.步骤如下: 在C代码中添加如下代码: #define LOG_TAG "我的C语言日志:" #define LOG ...
- JavaScript(DOM编程三)
节点的移动,insertBefore <body> <p>你喜欢哪个城市?</p> <ul id="city"><li id= ...
- POJ 3050 Hopscotch 水~
http://poj.org/problem?id=3050 题目大意: 在一个5*5的格子中走,每一个格子有个数值,每次能够往上下左右走一格,问走了5次后得到的6个数的序列一共同拥有多少种?(一開始 ...
- 数据挖掘算法学习(一)K-Means算法
博主近期实习開始接触数据挖掘,将学习笔记分享给大家.眼下用的软件是weka.下篇文章会着重解说. 转载请附上链接http://blog.csdn.net/iemyxie/article/details ...
- logstash tcp multihost output(多目标主机输出,保证TCP输出链路的稳定性)
在清洗日志时,有一个应用场景,就是TCP输出时,须要在一个主机挂了的情况下,自已切换到下一个可用入口.而原tcp output仅支持单个目标主机设定.故本人在原tcp的基础上,开发出tcp_multi ...
- MongodDB用GridFS方式存取文件
在实现GridFS方式前我先讲讲它的原理,为什么可以存大文件.驱动首先会在当前数据库创建两个集合:"fs.files"和"fs.chunks"集合,前者记录了文 ...
- Drupal 自己定义主题实体 Theming Custom Entities
在自己定义主题中输出结果时,有三个部分或很多其它特殊的函数.如 hook_menu,Page Callback.MODULE_theme 钩子 1.hook_menu 为了使用自己定义的实体.像创建. ...
- DB-MySql:MySQL 及 SQL 注入
ylbtech-DB-MySQL:MySQL 及 SQL 注入 1.返回顶部 1. MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL ...
- BZOJ 2821 分块+二分
题意: N个数,M组询问,每次问[l,r]中有多少个数出现正偶数次. 思路: 把N个数分成sqrt(n)块,预处理d[i][j]表示第i块起点到第j块末尾的答案 枚举起点i,并维护一个数组记录每个数到 ...
- GreenDao 3.X之基本使用
在GreenDao 3.X之注解已经了解到GreenDao 3.0的改动及注解.对于数据库的操作,无异于增删改查等四个操作.下面我们将了解GreenDao 3.X如何使用? AbstractDao 所 ...






