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 相关文章推荐
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
Python合并多个Excel数据的方法
Jul 16 Python
Flask Web开发入门之文件上传(八)
Aug 17 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
python做反被爬保护的方法
Jul 01 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
python实现从ftp服务器下载文件
Mar 03 Python
python中def是做什么的
Jun 10 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 Python
Django如何在不停机的情况下创建索引
Aug 02 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 修改、增加xml结点属性的实现代码
2013/10/22 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
php绘制一条直线的方法
2015/01/24 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
python验证码识别实例代码
2018/02/03 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
Python实现按中文排序的方法示例
2018/04/25 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
节电标语大全
2014/06/23 职场文书
2014年设计师工作总结
2014/11/25 职场文书
创业计划书之游泳馆
2019/09/16 职场文书