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 查找文件夹下所有文件 实现代码
Jul 01 Python
使用cx_freeze把python打包exe示例
Jan 24 Python
通过代码实例展示Python中列表生成式的用法
Mar 31 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
python3实现域名查询和whois查询功能
Jun 21 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 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
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
PHP 中dirname(_file_)讲解
2007/03/18 PHP
PHP ajax 分页类代码
2008/11/13 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
深入密码加salt原理的分析
2013/06/06 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
php如何连接sql server
2015/10/16 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
jquery之empty()与remove()区别说明
2010/09/10 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
Python类定义和类继承详解
2015/05/08 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
介绍一下你对SOA的认识
2016/04/24 面试题
清明节扫墓活动总结
2015/02/09 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python