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 相关文章推荐
Unicode和Python的中文处理
Mar 19 Python
python操作oracle的完整教程分享
Jan 30 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
利用python将pdf输出为txt的实例讲解
Apr 23 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
Python嵌套式数据结构实例浅析
Mar 05 Python
Django发送邮件功能实例详解
Sep 02 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
Feb 03 Python
pandas求平均数和中位数的方法实例
Aug 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
浅谈PHP语法(1)
2006/10/09 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
PHP模块化安装教程
2016/06/01 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
jquery 上下滚动广告
2009/06/17 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
vue组件的写法汇总
2018/04/12 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
详解Vue中的自定义指令
2020/12/07 Vue.js
Python中断言Assertion的一些改进方案
2016/10/27 Python
Python实战购物车项目的实现参考
2019/02/20 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
使用Django清空数据库并重新生成
2020/04/03 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
销售高级职员求职信
2013/10/29 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
使用python绘制横竖条形图
2022/04/21 Python