1.pyplot基础语法

(1)创建画布

figure()创建一个空白画布,可以指定画布的大小figsize和设置分辨率dpi

plt.figure()
plt.figure(figsize=(8,6),dpi=80) #(8,6)代表图像的长和宽单位是英寸,dpi代表分辨率

(2)创建子图

figure.add_subplot方法用来创建子图,也可以直接使用subplot.

fig=plt.figure()
fig.add_subplot(2,2,1)

subplot(2,2,1)
例如:
plt.figure()
x=np.linspace(-np.pi,np.pi,100)
y1=np.sin(x)
y2=np.cos(x)
plt.subplot(211) #表示2x1的画布中的第一个
plt.plot(x,y1,'-r')
plt.title('sin')
plt.subplot(212) #等同 fig.add_subplot(212) 2x1画布中第二个
plt.title('cos')
plt.plot(x,y2,'-.b')
plt.show()



(3)添加画布内容

注意:

对于中文乱码问题,可以在作图之前添加如下代码:

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

添加图例一定是在绘图(plot)之后,设置标签等和绘图没有先后顺序,并且图例中的顺序和绘图的顺序一致。

函数 作用
plt.title 添加标题
plt.xlabel 设置x轴的名称
plt.ylabel 设置y轴的名称
plt.xlim 设置x轴的范围(参数是上下限的tuple)
plt.ylim 设置y轴的范围
plt.xticks 设置x轴的刻度数目和取值(参数是list)【其参数rotation代表倾斜角度】
plt.yticks 设置y轴的刻度数目和取值
plt.legend 设置图例
plt.grid 设置网格线

示例(应用上面的全部设置):

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
fig=plt.figure()
plt.title('sin&cos')
x=np.linspace(-np.pi,np.pi,100,endpoint=False)
y1=np.sin(x)
y2=np.cos(x)
plt.plot(x,y1,'-r') #实线
plt.plot(x,y2,'-.b') #虚线
a=[-np.pi,-1/2*np.pi,0,1/2*np.pi,np.pi]
label=[r'$-\pi$',r'$-\pi/2$',0,r'$\pi/2$',r'$\pi$'] #使用laTex
plt.xticks(a,label) #设置x轴的记号,如果仅有a,则为设置x轴的ticks,其还有个参数rotation代表倾斜角度,如果x轴的刻度标签太长可以设置角度让其倾斜,例如rotation=45,代表倾斜45度
plt.xlim((0,np.pi)) #设置x轴的显示范围[0,pi)
plt.xlabel('x的取值')
plt.ylabel('y的值')
plt.grid(linestyle=':',color='y')#添加背景网格线
plt.legend(['sin','cos'],loc='lower left') #调整图例的位置在左下,注意图例中的sin,与cos对应绘图时的顺序
plt.show()

结果:



(4)保存与显示图形

savefig可以用来保存绘制的图形

show()用来显示图形

plt.savefig('1.png') #可以添加路径

2.散点图与折线图

散点图可以利用scatter函数来绘制,这个是专门绘制散点图的,也可以使用plot函数来绘制。

利用plot直接将关于连接线的部分去掉,加上marker部分就可以了就由折线图变成了散点图,对于上面例子中的:

plt.plot(x,y1,'-r')
将其改为 plt.plot(x,y1,'ro') 就变成了散点图(用o代表点)
也可以通过scatter函数
plt.scatter(x,y1,c='r',marker='o')

结果:

3.3D图与等高线图

对于3D图的绘制需要引入from mpl_toolkits.mplot3d import Axes3D

3D图和2D图的区别就是将x和y进行了meshgrid操作

对于meshgrid函数的作用是将x,y向量 编织成二维的栅格.

例如:

二维坐标系中X轴的取值是1,2,3,而Y轴的取值是4,5,那么可以获得(1,4)(1,5)

(2,4)(2,5)

(3,4)(3,5)这些坐标,这就构成了一个二维的网格,而meshgrid的作用就是这个。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
a=np.array([1,2,3])
b=np.array([4,5])
c,d=np.meshgrid(a,b) #c[[1,2,3],[1,2,3]] d[[4,4,4],[5,5,5]]
e=np.array([[1,2,1],[7,8,9]])
fig=plt.figure()
#在画布上添加3D坐标轴
ax=Axes3D(fig)
#画出3d图:rstride 和 cstride 分别代表 row 和 column 的跨度,一般选择默认就行,不设置。
ax.plot_surface(c,d,e,rstride=1,cstride=1,cmap='rainbow')
ax.scatter(c, d,e, c = 'g', marker = '^') #将点标出来

结果:



我感觉对于3D图的绘制,因为此时x轴和y轴都是二维数组,按照2d中二维数组绘图时,会对以对其进行横向分割的方式,然后去进行连接。对于3d中,首先就是根据横向分割,然后按照构成点的顺序进行连接,然后再根据纵向分割,然后按照构成点的顺序进行连接,这样就连接成了3d图。对于3D图的绘制只需要做的就是构成网格矩阵,然后根据x,y的值去求z的值,这样x,y,z全部有了后就可以对其绘制三维图。

注意:

当x和y是二维数组时,会对以对其进行横向分割的方式,然后去进行连接。

x=np.array([[0,0.5,1],[0,0.5,1],[2,1,4]])
y=np.array([[0,0,0],[1,1,1],[3,3,4]])
plt.plot(x,y,'-rx')
按照(0,0)(0,1)(2,3)连接,然后再(0.5,0)(0.5,1)(1,3)以此类推.

2D的结果:

三维的话就相当于多了个z,设z=np.array([[0,1,2],[1,2,3],[4,5,6]])
那么绘图可以理解为:
按照(0,0,1)(0.5,1,1)(2,3,4)连结,然后再(0.5,0,1)(0.5,1,2)(1,3,5)以此类推,然后再横向(0,0,1)(0.5,0,1)(1,0,2)连接,以此类推。
可以理解成横向分割后连接,然后再纵向分割后连接。

等高线图:

plt.figure()
plt.xlabel(r'$\theta_0$')
plt.ylabel(r'$\theta_1$')
theta0_val=np.linspace(-10,10,100)
theta1_val=np.linspace(-1,4,100)
xs,ys=np.meshgrid(theta0_val,theta1_val)
#使用contour生成三维结构表面的等值线图, np.logspace(-2,3,20)代表z值10^-2到10^3的20元素的等比数列,即那些等高线
CS = plt.contour(xs, ys, J_val, np.logspace(-2,3,20))
#最后加入Label,inline控制是否将Label画在线里面,字体大小为10。
plt.clabel(CS, inline=1, fontsize=10)
# 绘制最优解
plt.plot(theta[0,0], theta[1,0], 'rx', markersize=10, linewidth=2)
#theta[0,0], theta[1,0]为最优解的值
plt.show()

结果:

Matplotlib的使用的更多相关文章

  1. python安装numpy、scipy和matplotlib等whl包的方法

    最近装了python和PyCharm开发环境,但是在安装numpy和matplotlib等包时出现了问题,现总结一下在windows平台下的安装方法. 由于现在找不到了工具包新版本的exe文件,所以采 ...

  2. matplotlib 高级用法实例--共享x轴

    http://localhost:8888/notebooks/duanqs/matplotlib_advanced_example.ipynb 我不会弄呀, 刚才从matplotlib文档里吧示例用 ...

  3. Python matplotlib笔记

    可视化的工具有很多,如Tableau,各种JS框架,我个人感觉应该是学JS最好,因为JS不需要环境,每个电脑都有浏览器,而像matplotlib需要Python这样的开发环境,还是比较麻烦的,但是毕竟 ...

  4. Matplotlib——第一章轻松画个图

    首先安装matplotlib,使用pip install matplotlib.安装完成后在python的命令行敲入import matplotlib,如果没问题,说明安装成功可以开始画图了. 看好了 ...

  5. win7系统下python安装numpy,matplotlib,scipy和scikit-learn

    1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...

  6. 【转】使用Python matplotlib绘制股票走势图

    转载出处 一.前言 matplotlib[1]是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图.本人在工作过程中涉及到股票数据的处理如绘制K线等,因此将matplotlib的使 ...

  7. 【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用

    最近获得了一些四级成绩数据,大概500多个,于是突发奇想是否能够看看这些成绩数据是否满足所谓的正态分布呢?说干就干,于是有了这篇文章.文章顺带介绍了xlrd模块的一些用法和matplotlib画自定义 ...

  8. 【Matplotlib】详解图像各个部分

    首先一幅Matplotlib的图像组成部分介绍. 在matplotlib中,整个图像为一个Figure对象.在Figure对象中可以包含一个或者多个Axes对象.每个Axes(ax)对象都是一个拥有自 ...

  9. Matplotlib 学习笔记

    注:该文是上了开智学堂数据科学基础班的课后做的笔记,主讲人是肖凯老师. 数据绘图 数据可视化的原则 为什么要做数据可视化? 为什么要做数据可视化?因为可视化后获取信息的效率高.为什么可视化后获取信息的 ...

  10. python 下 tinker、matplotlib 混合编程示例一个

    该例是实现了 Tinker 嵌入 matplotlib 所绘制的蜡烛图(k 线),数据是从 csv 读入的.花一下午做的,还很粗糙,仅供参考.python 代码如下: import matplotli ...

随机推荐

  1. 影响ES相关度算分的因素

    相关性算分 指文档与查询语句间的相关度,通过倒排索引可以获取与查询语句相匹配的文档列表   如何将最符合用户查询需求的文档放到前列呢? 本质问题是一个排序的问题,排序的依据是相关性算分,确定倒排索引哪 ...

  2. SpringCloud Alibaba微服务实战三 - 服务调用

    导读:通过前面两篇文章我们准备好了微服务的基础环境并让accout-service 和 product-service对外提供了增删改查的能力,本篇我们的内容是让order-service作为消费者远 ...

  3. python logging模块小记

    1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info messa ...

  4. 补习系列(20)-大话 WebSocket 与 "尬聊"的实现

    目录 一.聊聊 WebSocket 二.Stomp 是个什么鬼 三.SpringBoot 整合 WebSocket A. 引入依赖 B. WebSocket 配置 C. 控制器 D. 前端实现 四.参 ...

  5. 转:ETL讲解(很详细!!!)

    ETL讲解(很详细!!!) ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要 ...

  6. 压缩感知重构算法之CoSaMP算法python实现

    压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...

  7. Ubuntu 18.04 环境下 kubernetes v1.16.2 单机部署说明

    一.安装环境 本次部署使用阿里云ECS 操作系统: Ubuntu  18.04 64位 实例规格: ecs.c6.large 2U4G 二.kubernetes 版本 k8s.gcr.io/kube- ...

  8. HDU5973 Game of Geting Stone(威佐夫博弈)

    Two people face two piles of stones and make a game. They take turns to take stones. As game rules, ...

  9. CodeForces 5C Longest Regular Backet sequence

    This is yet another problem dealing with regular bracket sequences. We should remind you that a brac ...

  10. 一些demo

    绑定端口demo: #include <stdio.h> #include <sys/socket.h> #include <stdlib.h> #include ...