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实现抓取城市的PM2.5浓度和排名
Mar 19 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
Python中动态创建类实例的方法
Mar 24 Python
Python机器学习之决策树算法
Dec 22 Python
python中正则表达式的使用方法
Feb 25 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
python 画条形图(柱状图)实例
Apr 24 Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
如何更换python默认编辑器的背景色
Aug 10 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自动跳转中英文页面
2008/07/29 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
JQuery验证工具类搜集整理
2013/01/16 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
python实现查询苹果手机维修进度
2015/03/16 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Python中的super用法详解
2015/05/28 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
Tensorflow累加的实现案例
2020/02/05 Python
python爬虫实现获取下一页代码
2020/03/13 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
环保公益策划方案
2014/08/15 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
改进工作作风心得体会
2016/01/23 职场文书