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工程师面试题 与Python基础语法相关
Jan 14 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
python socket网络编程之粘包问题详解
Apr 28 Python
python实现朴素贝叶斯算法
Nov 19 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
Python3实现建造者模式的示例代码
Jun 28 Python
Python中return函数返回值实例用法
Nov 19 Python
Python爬虫制作翻译程序的示例代码
Feb 22 Python
Python echarts实现数据可视化实例详解
Mar 03 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 session 预定义数组
2009/03/16 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
php格式化电话号码的方法
2015/04/24 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
Python实现单词拼写检查
2015/04/25 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
同学聚会欢迎辞
2014/01/14 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
学生党员公开承诺书
2014/05/28 职场文书
妇女工作先进事迹
2014/08/17 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
学校隐患排查制度
2015/08/05 职场文书
保外就医申请书范文
2015/08/06 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
python使用pymysql模块操作MySQL
2021/06/16 Python
压缩Redis里的字符串大对象操作
2021/06/23 Redis
python开发的自动化运维工具ansible详解
2021/08/07 Python