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中的列表知识点汇总
Apr 14 Python
python实现类的静态变量用法实例
May 08 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
Django实现文件上传下载功能
Oct 06 Python
使用apiDoc实现python接口文档编写
Nov 19 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
自定义Django默认的sitemap站点地图样式
Mar 04 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 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 常用算法和时间复杂度
2013/07/01 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
python和C语言混合编程实例
2014/06/04 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
企业演讲稿范文
2013/12/28 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
记者岗位职责
2014/01/06 职场文书
预备党员综合考察材料
2014/05/31 职场文书
询价采购方案
2014/06/09 职场文书
商场促销活动策划方案
2014/08/18 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python
php实例化对象的实例方法
2021/11/17 PHP
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS
CentOS MySql8 远程连接实战
2022/04/19 MySQL