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中的lstrip()方法使用简介
May 19 Python
浅谈Python的Django框架中的缓存控制
Jul 24 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
Python 12306抢火车票脚本
Feb 07 Python
浅谈python可视化包Bokeh
Feb 07 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
学Python 3的理由和必要性
Nov 19 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
python制作微博图片爬取工具
Jan 16 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/02/28 无线电
PHP个人网站架设连环讲(四)
2006/10/09 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
php使用百度天气接口示例
2014/04/22 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
一个JavaScript变量声明的知识点
2013/10/28 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
使用python实现strcmp函数功能示例
2014/03/25 Python
python运行时间的几种方法
2016/06/17 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
5款实用的python 工具推荐
2020/10/13 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
css3发光搜索表单分享
2014/04/11 HTML / CSS
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
与UNIX有关的几个名词
2015/09/17 面试题
公司门卫岗位职责范本
2014/07/08 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
python字典进行运算原理及实例分享
2021/08/02 Python
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers