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 相关文章推荐
详解用TensorFlow实现逻辑回归算法
May 02 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
对python中的float除法和整除法的实例详解
Jul 20 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
windows下的pycharm安装及其设置中文菜单
Apr 23 Python
详解Python中namedtuple的使用
Apr 27 Python
python使用openpyxl操作excel的方法步骤
May 28 Python
python中的时区问题
Jan 14 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
Js获取事件对象代码
2010/08/05 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
什么是接口(Interface)?
2013/02/01 面试题
金融专业大学生自我评价
2014/01/09 职场文书
信访工作者先进事迹
2014/01/17 职场文书
公司合作意向书
2014/04/01 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
物理学专业自荐信
2014/06/11 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
社会实践活动报告
2015/02/05 职场文书
运动会通讯稿100字
2015/07/20 职场文书
大学班长竞选稿
2015/11/20 职场文书
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技