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 相关文章推荐
Pyramid将models.py文件的内容分布到多个文件的方法
Nov 27 Python
Python遍历pandas数据方法总结
Feb 09 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
python实现简单日期工具类
Apr 24 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
python滑块验证码的破解实现
Nov 10 Python
详解pycharm连接不上mysql数据库的解决办法
Jan 10 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
Python requests设置代理的方法步骤
Feb 23 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 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
PHP5+UTF8多文件上传类
2008/10/17 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
node.js中的http.request方法使用说明
2014/12/14 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
Python深入学习之闭包
2014/08/31 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
django query模块
2019/04/20 Python
基于python实现对文件进行切分行
2020/04/26 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
协议书模板
2014/04/23 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
体育教师个人工作总结
2015/02/09 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技