Python Matplotlib绘图基础知识代码解析


Posted in Python onAugust 31, 2020

1.Figure和Subplot

import numpy as np
import matplotlib.pyplot as plt
#创建一个Figure
fig = plt.figure()
#不能通过空figure绘图,必须使用add_subplot创建一个或多个subplot
#图像为2x2,第三个参数为当前选中的第几个
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
#默认在最后一个subplot上绘制
#'k--'为线型选项,绘制黑色虚线
plt.plot(np.random.randn(50).cumsum(), 'k--')
print(type(ax1))#<class 'matplotlib.axes._subplots.AxesSubplot'>
#直接调用它们的实例方法就可以在其他格子绘图
_ = ax1.hist(np.random.randn(100), bins=20, color='k', alpha=0.3)
ax2.scatter(np.arange(30), np.arange(30) + 3 * np.random.randn(30))
plt.show()
fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)#创建一个新的Figure,并返回一个已创建subplot对象的NumPy数组
#可以索引axes[0,1],axes[0][1]

'''
plt.subplots的选项 
nrows:subplot的行数
ncols:subplot的列数
sharex:所有subplot应该使用相同的x轴刻度(调节xlim将会影响所有subplot)
sharey:所有subplot应该使用相同的y轴刻度(调节ylim将会影响所有subplot)
subplot_kw:用于创建各subplot的关键字字典
**fig_kw:创建figure时其他关键字,如plt.subplots(2,2,figsize=(8,6))
'''
for i in range(2):
	for j in range(2):
		axes[i,j].hist(np.random.randn(500),bins=50, color='k',alpha=0.5)
#调整subplot周围间距
#plt.subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None)
plt.subplots_adjust(wspace=0, hspace=0)
plt.show()

2.颜色、标记和线型

#ax.plot(x,y,'g--')
#ax.plot(x, y, linestyle='--', color='g')
#plt.plot(np.random.randn(30).cumsum(), 'ko--')
#plt.plot(np.random.randn(30).cumsum(), color='k', linestyle='dashed', marker='o')
#线型图中,非实际数据点默认是按线性方式插值的,可以通过drawstyle选项修改
data = np.random.randn(30).cumsum()
plt.plot(data, 'k--', label='Defalt')
plt.plot(data, 'k-', drawstyle='steps-post', label='steps-post')
plt.legend(loc='best')

3.刻度、标签和图例

xlim,xticks,xticklabels之类的方法。它们分别控制图表的范围、刻度位置、刻度标签等。

其使用方式有以下两种:

  • 调用时不带参数,则返回当前参数值。plt.xlim()
  • 调用时带参数,则设置参数值。plt.xlim([0,10])

这些方法对当前或最近创建的AxesSubplot起作用

对应在subplot对象上的两个方法,如ax.get_xlim和ax.set_xlim

3.1.设置标题、轴标签、刻度以及刻度标签

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(np.random.randn(1000).cumsum())
#改变X轴的刻度,最简单的方法是使用set_xticks和set_xticklabels。
#前者告诉刻度放在数据范围中的哪些位置,默认情况下,这些位置是刻度标签,可以用set_xticklabels设置。
a=ax.set_xticks([0,250,500,750,1000])
b=ax.set_xticklabels(['one','two','three','four','five'],rotation=30,fontsize='small')
ax.set_xlabel('Stages')
plt.show()

3.2.添加图例(legend)、注解以及在Subplot上绘图

两种方式,最简单的是在添加subplot的时候传入label参数

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.plot(np.random.randn(1000).cumsum(), 'k', label='one')
ax.plot(np.random.randn(1000).cumsum(), 'k--', label='two')
ax.plot(np.random.randn(1000).cumsum(), 'k.', label='three')

ax.legend(loc='best')
#loc表示将图例放在哪
#从图例中去除一个或多个元素,不传入label或label='_nolegend_'即可

#注解以及在Subplot上绘图
#注解可以通过text,arrow和annotate等函数进行添加。
#text可以将文本绘制在图标的指定坐标(x,y),还可以加上一些自定义格式
#ax.text(x ,y, 'Hello world!',family='monosapce',fontsize=10)

plt.show()

3.3.将图表保存到文件

plt.savefig('filepath.svg')
plt.savefig('filepath.svg', dpi=400,bbox_inches='tight')

Figure.savefig参数

  • fname:路径,包含设置文件格式(如.pdf等)
  • dpi:图像分辨率,默认100
  • facecolor、edgecolor:图像背景色,默认为'w'(白色)
  • format:显示设置文件格式
  • bbox_inches:图像需要保存的部分。'tight',将尝试剪除图像周围的空白部分

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单介绍Python中的struct模块
Apr 28 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
用Python计算三角函数之acos()方法的使用
May 15 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
python导入pandas具体步骤方法
Jun 23 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
Python基础详解之描述符
Apr 28 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 Python
一些关于python 装饰器的个人理解
Aug 31 #Python
Python常用模块函数代码汇总解析
Aug 31 #Python
PyTorch 导数应用的使用教程
Aug 31 #Python
PyTorch安装与基本使用详解
Aug 31 #Python
pycharm 添加解释器的方法步骤
Aug 31 #Python
解决Windows下python和pip命令无法使用的问题
Aug 31 #Python
Python函数__new__及__init__作用及区别解析
Aug 31 #Python
You might like
菜鸟修复电子管记
2021/03/02 无线电
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python 异常处理的实例详解
2017/09/11 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
如何撰写岗位职责
2014/02/01 职场文书
运动会跳远广播稿
2014/02/04 职场文书
服务质量承诺书
2014/03/27 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
三方协议书范本
2014/04/22 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
学校学期工作总结
2015/08/13 职场文书
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS