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脚本日志功能
Aug 14 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
Python 基础教程之str和repr的详解
Aug 20 Python
python代码实现ID3决策树算法
Dec 20 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
使用Python写一个小游戏
Apr 02 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
Python3 集合set入门基础
Feb 10 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
OpenCV 之按位运算举例解析
Jun 19 Python
解析目标检测之IoU
Jun 26 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
图解上海144收音机
2021/03/02 无线电
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
Python 字典中的所有方法及用法
2020/06/10 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
物业经理求职自我评价
2013/09/22 职场文书
建筑投标担保书
2014/05/20 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
幼儿园见习总结
2015/06/23 职场文书
财务人员入职担保书
2015/09/22 职场文书
人生感悟经典句子
2019/08/20 职场文书
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫