初学者一看就懂的入门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(多种绘图类型)相关推荐

  1. 【学生角度--一篇初学者绝对看得懂的mos分析】

    前言 我们在模电中学习了MOS和BJT,进入数电的学习后,二者又重新出现在我们的视野之中,二者是怎样相互渗透的呢? 一.MOS是什么 全名绝缘栅型场效应管,栅极(以后就简称g–gate极了,方便好记) ...

  2. 【C语言】数组详解,初学者一看就懂

    你每天都在做很多看起来毫无意义的决定,但某天你的某个决定就能改变你的一生.--<西雅图不眠夜>  目录 什么是C语言数组? 1.一维数组的创建与初始化 1.1数组的创建格式 1.2数组的初 ...

  3. 单片机编程好学吗?单片机初学者怎样看懂代码?

    单片机在很多人看来好像门槛很高,在某些人看来很简单. 所以,单片机编程好不好学,这取决于谁去学,有没有基础,有没有兴趣. 我自己是通过自学学会的,我个人认为相对java那些纯软件,单片机比较好学. 单 ...

  4. 《零基础看得懂的C++入门教程 》——(1)第一个C++程序就让你知其所以然

    一.学习目标 了解第一个C++程序 了解第一个C++程序结构 了解什么是注释 了解什么是命名空间 了解C语言的输出(如何在程序运行时显示内容) 了解语句结束后需要使用什么符号表示结束 了解程序入口 目 ...

  5. 小学生都看得懂的C语言入门(1): 基础/判别/循环

    c基础入门, 小学生也可以都看得懂!!!! 安装一个编译器, 这方面我不太懂, 安装了DEV-C++  ,体积不大,30M左右吧, 感觉挺好用,初学者够了. 介绍下DEV 的快键键: 恢复 Ctrl+ ...

  6. c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事

    一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...

  7. python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程

    原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...

  8. 《零基础看得懂的C++入门教程 》——(10)面向对象

    一.学习目标 了解C++类是什么 了解类对象与类型修饰一样进行创建 了解了类的属性如何使用 了解了类方法的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可: ...

  9. 《零基础看得懂的C++入门教程 》——(9)结构体原来如此

    一.学习目标 了解C++语言的结构体的使用方法 了解C++语言结构体的结构的赋值 了解多种C++语言结构体变量的赋值方法和取值方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的 ...

最新文章

  1. php手册常用的函数
  2. 5.Xilinx RapidIO核例子工程源码分析
  3. python代码壁纸-python实现壁纸批量下载代码实例
  4. python3源码精要(1)-C源代码取得与基本特征
  5. mysql批量更新后返回id_如何批量插入Mysql并取得各自的递增ID
  6. 本地分发_2020年分发Python应用程序的12个热门途径
  7. 找出有序数组X和Y中所有元素的中位数(X,Y分别含n个元素)(算法导论第三版9.3-8)
  8. mac mysql的初始密码_MAC版修改MySQL初始密码的方法
  9. 最邻近插值、双线性插值、三次卷积插值最通俗入门理论解析,论文材料
  10. PostgreSQL 插入、删除、更新、事务
  11. Delphi面向对象学习随笔一:类与对象的关系
  12. eclipse快捷键 自动生成get set方法,转到所调用的方法
  13. UE4【C++】子弹伤害系统使用
  14. jsp页面中插入jsp代码片段
  15. error LNK2005 原理及解决办法
  16. 利用vtk实现管状模型沿中心线切割平面
  17. DB2导出 mysql导入_db2数据库导入导出数据
  18. 联想计算机怎么开启网络共享,联想笔记本开启Wi-Fi共享图文教程
  19. 运维工程师种种尴尬的瞬间情景,你有无?
  20. ipvs 导致syn 重传问题

热门文章

  1. python读取视频分辨率_opencv设置采集视频分辨率方式
  2. python 绘制花瓣_怎么用python画花朵
  3. HTML5移动的代码,HTML5实现一个能够移动的小坦克示例代码
  4. 【贪心算法】舞蹈室安排
  5. oracle数据库建表
  6. oracle error 439,JDBC使用INSERT RETURN语句报错ORA-439
  7. A-Level经济真题每期一练(18)
  8. Unity自定义日志系统
  9. 名侦探柯南 侦探们的镇魂歌
  10. 猴导师(C++练习题)