初学者一看就懂的入门python3(多种绘图类型)
初学者一看就懂的入门python3(多种绘图类型)
如果你之前从未接触过python,为了方便你更好理解,麻烦先去看我的
初学者一看就懂的入门python1和2
基本绘图类型
什么是matplotlib?
matplotlib是一个Python模块,用于生成二维和三维绘图
它基于MATLAB中的绘图工具
它非常灵活-绘图的所有方面都可以通过编程进行控制
它可以生成图形、条形图、散点图、等高线和曲面图等
它可以生成多种格式(png、pdf、svg等)的高质量输出
什么是SVG?
JPEG和PNG等图像格式是位图或光栅图像:它们仅由像素的行和列组成,最适合于照片或复杂的计算机生成的艺术品。**SVG完全不同,因为它是一种矢量图形格式(SVG代表可缩放矢量图形)。**图像由形状(矩形、圆等)、线条、文本等单个元素组成,而不是像素。
这使得它更适合于简单的图像,如图形、图表或徽标。
%matplotlib inline
%config InlineBackend.figure_format='svg'
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,5,10)
y = x ** 2
plt.plot(x, y)
linspace(start、stop、num=50、endpoint=True、retstep=False、dtype=None、axis=0)
返回指定间隔内的等距数字。
返回在[start,stop]间隔内计算的等距采样数。
参数
序列的起始值。
停止数组
序列的结束值,除非端点设置为False。在这种情况下,序列由除最后一个num+1等距采样外的所有采样组成,因此停止被排除。请注意,当端点为False时,步长会更改。
numint,可选:要生成的样本数。默认值为50。必须是非负的。
端点布尔,可选:如果为True,则停止为最后一个样本。否则,不包括在内。默认值为True。
retstepbool,可选:如果为True,则返回(样本,步长),其中步长是样本之间的间距。
数据类型,可选:输出数组的类型。如果未给出数据类型,则从开始和停止推断数据类型。推断出的数据类型永远不会是整数;即使参数将生成整数数组,也会选择float。
Axismint,可选:结果中用于存储样本的轴。仅当“启动”或“停止”类似于数组时才相关。默认情况下(0),采样将沿着在开始处插入的新轴。使用-1在末端获得一个轴。
样本阵列:闭合间隔[start,stop]或半开放间隔[start,stop]中有num个等距采样(取决于端点是真还是假)。
语法np.linspace(start、stop、num)将是您可能使用最多的语法。
默认情况下,np.linspace()函数在生成的数组中同时包含开始端点和停止端点。如果不希望包含停止端点,请将False传递给端点参数。例如,让我们在2和20之间创建10个等距值,其中不包括20。
plt.figure()
plt.plot(x, y, 'b-')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Plot of y = 2^x')
在Python里figure类似于画布
matplotlib.pyplot.plot() 方法接受以下描述的参数(args, scalex=True, scaley=True, data=None):
x、 y:这些参数是数据点的水平和垂直坐标。x值是可选的。
fmt:此参数是可选参数,包含字符串值。
数据:此参数是可选参数,是带有标记数据的对象。
返回以下内容:
lines:返回表示打印数据的Line2D对象列表。
fig = plt.figure()
axes = fig.add_axes([0.1, 0.1, 0.9, 0.9])
axes.plot(x, y, 'r-')
axes.set_xlabel('x')
axes.set_ylabel('y')
axes.set_title('y = 2^x')
Matplotlib.figure.Figure.add_axes() in Python
此选项接受以下描述的参数:
rect:此参数是新轴的尺寸[左、下、宽、高]。
投影:此参数是轴的投影类型。
sharex,sharey:这些参数与sharex和/或sharey共享x轴或y轴。
标签:此参数是返回轴的标签。
返回:此方法返回Axis类,具体取决于所使用的投影。
fig = plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8])
axes1.plot(x, y, 'r-')
axes2 = fig.add_axes([0.2, 0.5, 0.2, 0.2])
axes2.plot(x,-y, 'g-')
图形中的多个轴
fig, axes = plt.subplots(nrows=2, ncols=3)
for ax in axes.reshape(-1): #axes返回一个2x4 numpy数组;重塑为向量ax.plot(x, y, 'r')ax.set_ylabel('y axis')ax.set_xlabel('x axis')
fig.tight_layout()
axes 没有固定的类型,如果n 只有一位,那么axes就是完全的一个普通的数字
如果n>1 且 plt.subplots(n, 1) 中括号里边的数字是1 那么就是一个一维数组,那么引用的时候,就应该ax=ax[i]
如果n>1 且 plt.subplots(n, 2) 中括号里边的数字是2 或者是大于2的数字,那么就是一个二维数组,引用的时候,应该ax=ax[1][1] 类型这样
子图中的轴标签彼此重叠,这在视觉上没有吸引力。
如果将plt.tight_layout()语句添加到此代码块的末尾,此问题将自行解决。
写入文件(许多格式可用)
Matplotlib.pyplot.savefig()
顾名思义,savefig()方法用于保存打印数据后创建的图形。使用此方法可以将创建的图形保存到本地计算机。
fig.savefig('myplot.png')
fig.savefig('myplot.pdf', dpi=200) # 设置“每英寸点数”
fig, ax = plt.subplots() # 默认情况下,返回单个轴
ax.plot(x, x*2, label='x*2')
ax.plot(x, x*x, label='x^2')
ax.plot(x, 2**x, label='2^x')
ax.legend(loc=0) # 1=UR, 2=UL, 3=LL, 4=LR, 0=matplotlib decides
这是添加图例的一个很好的示例
fig, ax = plt.subplots()
ax.plot(x, y, color='purple', linewidth=2, linestyle='-', marker='o', markersize=8)
ax.plot(x, y*2, lw=2, ls='-', marker='o', c='red', ms=8)
ax.plot(x, y*3, lw=2, ls='-.', marker='s', ms=10, mfc='red', mec='blue', mew=2)
ax.plot(x, y*4, lw=2, ls=':', marker='o', c='#ff9915', ms=8)
标记符号可以是“+”、“s”、“*”、“o”和许多其他符号
这是显示不同颜色、线条样式的一个很好的示例
fig, ax = plt.subplots()
ax.plot(x, 2**x)
ax.set_xlim([1, 4])
ax.set_ylim([2, 16])
ax.set_yscale('linear') # can be 'linear' or 'log'
ax.set_yticks([2, 4, 8, 16])
ax.set_xticks([1, 2, 3, 4])
ax.set_xticklabels(['one', 'two', 'three', 'four'], fontsize=12)
ax.grid(color='red', linewidth=2, linestyle='dashed')
如果是log整个图形会形成大小一样的网状格,而linear则会按照设定的X和Y来画线
x = np.linspace(-5, 5, 50)
fig, ax = plt.subplots()
ax.plot(x, x**3)
ax.plot(x, x**2 * 5)
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.axis('tight')
ax.spines是限制绘图区域的线。根据具体情况,我们可能需要移除部分(或全部)它们、更改它们的颜色、降低它们的可视性、调整它们的宽度/样式或更改它们的位置。
我们要从轴上移除顶部脊椎。为此,我们可以使用面向对象API接口的set_visible()方法
语法如下:ax.spines[‘top’].set_visible(False)。要移除多个脊椎,使用For循环是有意义的
否则,我们可以将其颜色设置为“无”
总而言之,spin 有点像图形中的分割线,但是它的作用是限制区域
x = np.linspace(-5, 5, 10)
fig, ax = plt.subplots()
ax.plot(x, x * 2 + 1)
ax.axis('tight')
ax.text(0, -2, 'The line is blue', fontsize=16)
ax.text(-2, 5, '$y=2x+1$', fontsize=16)
在原本的图像上加上文字描述
其他绘图类型
fig, ax = plt.subplots(nrows=1, ncols=2)# Shade the region between two curves
x = np.linspace(-5,5,50)
ax[0].fill_between(x, 0, x**2 * 2, color='purple')
ax[0].axis('tight')# Draw a bar chart (i.e. histogram)
y = np.linspace(-5, 5, 10)
ax[1].bar(y, y**2, color='green')
绘制数据-直方图
x = np.random.randn(100000)
fig, ax = plt.subplots(nrows=1, ncols=2)
ax[0].hist(x, bins=100)
ax[0].set_title('a normal distribution')
ax[1].hist(x, cumulative=True, bins=20)
ax[1].set_title('cumulative distribution')
fig.tight_layout()
绘制数据-散点图
x = np.random.randn(1000)
y = 15 * x + 10 * np.random.randn(1000)
fig, ax = plt.subplots()
ax.scatter(x, y)
三维绘图
例如,将“z=cos(x)+sin(y)”绘制为强度贴图
axis=np.linspace(-5, 5, 100)
(X,Y) = np.meshgrid(axis, axis)
# outputs matrices X and Y storing grid of pixel coordinates
Z = np.cos(X) + np.sin(Y) # perform some operation on the coordinate values
fig, ax = plt.subplots()
ax.imshow(Z, extent=[-5, 5, -5, 5]) # 'extent' used to set axes labels correctly
都看到这里了,麻烦关注一下勤耕的小K或者是点个赞吧
初学者一看就懂的入门python3(多种绘图类型)相关推荐
- 【学生角度--一篇初学者绝对看得懂的mos分析】
前言 我们在模电中学习了MOS和BJT,进入数电的学习后,二者又重新出现在我们的视野之中,二者是怎样相互渗透的呢? 一.MOS是什么 全名绝缘栅型场效应管,栅极(以后就简称g–gate极了,方便好记) ...
- 【C语言】数组详解,初学者一看就懂
你每天都在做很多看起来毫无意义的决定,但某天你的某个决定就能改变你的一生.--<西雅图不眠夜> 目录 什么是C语言数组? 1.一维数组的创建与初始化 1.1数组的创建格式 1.2数组的初 ...
- 单片机编程好学吗?单片机初学者怎样看懂代码?
单片机在很多人看来好像门槛很高,在某些人看来很简单. 所以,单片机编程好不好学,这取决于谁去学,有没有基础,有没有兴趣. 我自己是通过自学学会的,我个人认为相对java那些纯软件,单片机比较好学. 单 ...
- 《零基础看得懂的C++入门教程 》——(1)第一个C++程序就让你知其所以然
一.学习目标 了解第一个C++程序 了解第一个C++程序结构 了解什么是注释 了解什么是命名空间 了解C语言的输出(如何在程序运行时显示内容) 了解语句结束后需要使用什么符号表示结束 了解程序入口 目 ...
- 小学生都看得懂的C语言入门(1): 基础/判别/循环
c基础入门, 小学生也可以都看得懂!!!! 安装一个编译器, 这方面我不太懂, 安装了DEV-C++ ,体积不大,30M左右吧, 感觉挺好用,初学者够了. 介绍下DEV 的快键键: 恢复 Ctrl+ ...
- c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事
一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...
- python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程
原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...
- 《零基础看得懂的C++入门教程 》——(10)面向对象
一.学习目标 了解C++类是什么 了解类对象与类型修饰一样进行创建 了解了类的属性如何使用 了解了类方法的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可: ...
- 《零基础看得懂的C++入门教程 》——(9)结构体原来如此
一.学习目标 了解C++语言的结构体的使用方法 了解C++语言结构体的结构的赋值 了解多种C++语言结构体变量的赋值方法和取值方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的 ...
最新文章
- php手册常用的函数
- 5.Xilinx RapidIO核例子工程源码分析
- python代码壁纸-python实现壁纸批量下载代码实例
- python3源码精要(1)-C源代码取得与基本特征
- mysql批量更新后返回id_如何批量插入Mysql并取得各自的递增ID
- 本地分发_2020年分发Python应用程序的12个热门途径
- 找出有序数组X和Y中所有元素的中位数(X,Y分别含n个元素)(算法导论第三版9.3-8)
- mac mysql的初始密码_MAC版修改MySQL初始密码的方法
- 最邻近插值、双线性插值、三次卷积插值最通俗入门理论解析,论文材料
- PostgreSQL 插入、删除、更新、事务
- Delphi面向对象学习随笔一:类与对象的关系
- eclipse快捷键 自动生成get set方法,转到所调用的方法
- UE4【C++】子弹伤害系统使用
- jsp页面中插入jsp代码片段
- error LNK2005 原理及解决办法
- 利用vtk实现管状模型沿中心线切割平面
- DB2导出 mysql导入_db2数据库导入导出数据
- 联想计算机怎么开启网络共享,联想笔记本开启Wi-Fi共享图文教程
- 运维工程师种种尴尬的瞬间情景,你有无?
- ipvs 导致syn 重传问题