Matplotlib的使用
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的使用的更多相关文章
- python安装numpy、scipy和matplotlib等whl包的方法
最近装了python和PyCharm开发环境,但是在安装numpy和matplotlib等包时出现了问题,现总结一下在windows平台下的安装方法. 由于现在找不到了工具包新版本的exe文件,所以采 ...
- matplotlib 高级用法实例--共享x轴
http://localhost:8888/notebooks/duanqs/matplotlib_advanced_example.ipynb 我不会弄呀, 刚才从matplotlib文档里吧示例用 ...
- Python matplotlib笔记
可视化的工具有很多,如Tableau,各种JS框架,我个人感觉应该是学JS最好,因为JS不需要环境,每个电脑都有浏览器,而像matplotlib需要Python这样的开发环境,还是比较麻烦的,但是毕竟 ...
- Matplotlib——第一章轻松画个图
首先安装matplotlib,使用pip install matplotlib.安装完成后在python的命令行敲入import matplotlib,如果没问题,说明安装成功可以开始画图了. 看好了 ...
- win7系统下python安装numpy,matplotlib,scipy和scikit-learn
1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...
- 【转】使用Python matplotlib绘制股票走势图
转载出处 一.前言 matplotlib[1]是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图.本人在工作过程中涉及到股票数据的处理如绘制K线等,因此将matplotlib的使 ...
- 【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用
最近获得了一些四级成绩数据,大概500多个,于是突发奇想是否能够看看这些成绩数据是否满足所谓的正态分布呢?说干就干,于是有了这篇文章.文章顺带介绍了xlrd模块的一些用法和matplotlib画自定义 ...
- 【Matplotlib】详解图像各个部分
首先一幅Matplotlib的图像组成部分介绍. 在matplotlib中,整个图像为一个Figure对象.在Figure对象中可以包含一个或者多个Axes对象.每个Axes(ax)对象都是一个拥有自 ...
- Matplotlib 学习笔记
注:该文是上了开智学堂数据科学基础班的课后做的笔记,主讲人是肖凯老师. 数据绘图 数据可视化的原则 为什么要做数据可视化? 为什么要做数据可视化?因为可视化后获取信息的效率高.为什么可视化后获取信息的 ...
- python 下 tinker、matplotlib 混合编程示例一个
该例是实现了 Tinker 嵌入 matplotlib 所绘制的蜡烛图(k 线),数据是从 csv 读入的.花一下午做的,还很粗糙,仅供参考.python 代码如下: import matplotli ...
随机推荐
- 关于JMeter原子性相关探究
1.背景 最近宝路遇到个项目,在使用JMeter过程中引发了一些思考,宝路尝试用各种方式去验证,进而有了今天"JMeter原子性"相关主题. 2.目的 探究JMeter的事务的原子 ...
- Spring Boot2 系列教程(二十八)Spring Boot 整合 Session 共享
这篇文章是松哥的原创,但是在第一次发布的时候,忘了标记原创,结果被好多号转发,导致我后来整理的时候自己没法标记原创了.写了几百篇原创技术干货了,有一两篇忘记标记原创进而造成的一点点小小损失也能接受,不 ...
- 华为云ModelArts2.0来袭
[摘要] modelarts自发布以来,不断地更新增加新的功能来为AI工程师们带来新的服务,在这次的全联接大会上EI服务产品部总经理贾永利宣布--华为云AI重装升级,并重磅发布一站式AI开发管理平台M ...
- 华为eNSP路由交换-静态路由
静态路由 一. 静态路由及默认路由基本配置 1.1实验内容 在由三台路由器所组成的简单网络中,R1和R3各连着一台PC,现在要求能够实现PC-1和PC-2之间的通信.本实验将通过配置基本的静态路由和默 ...
- Prometheus笔记(二)监控go项目实时给grafana展示
欢迎加入go语言学习交流群 636728449 Prometheus笔记(二)监控go项目实时给grafana展示 Prometheus笔记(一)metric type 文章目录 一.promethe ...
- Word表格斜线怎么弄?这里有三种方法很实用
有些时候我们也会在Word文档中插入表格,因为这样可以准确的表达出文档中的内容.大家应该都知道Excel表格斜线怎么弄,那么Word表格斜线怎么弄吗?今天呢小编就帮大家总结了三种方法哦,有需要的小伙伴 ...
- UESTC-1975弗吉桑(回文串,manacher算法)
弗吉桑 Time Limit: 3000 MS Memory Limit: 64 MB Submit Status 弗吉桑是一座横跨清水河大草原的活火山,位于子科技大学主楼东北方约 80km ...
- WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研
大家好,本文整理了现代图形API的技术要点,重点研究了并行和GPU Driven Render Pipeline相关的知识点,调查了WebGPU的相关支持情况. 另外,本文对实时光线追踪也进行了简要的 ...
- 基于FPGA+USB2.0的图像采集系统测试小结-mt9m001
基于FPGA+USB2.0的图像采集系统测试小结-mt9m001 该系统采用层层惊涛出品的FPGA_VIP_USB_V102板卡测试 板卡分为:核心板.底板.摄像头板 核心板采用:ep4ce10e22 ...
- elasticsearch搜索QueryStringQueryBuilder时的一些问题记录
首先看下原始数据 但是 如果使用英文查询的时候又和上面有点区别了,感觉还是分词器的问题