Python Matplotlib绘图基础详细教程
作者:飞行模式、 发布时间:2024-01-16 04:34:41
标签:python,绘图,Matplotlib
plt是最常用的接口
1. 画图的基本步骤
1.导入模块
import matplotlib as mpl
import matplotlib.pyplot as plt
2.创建画板,然后对画板进行调整
3.定义数据
4.绘制图形(包含坐标轴的设置,数据的导入,线条的样式,颜色,还有标题,图例,等等)
5.plt.show()
1.1一步一步看
1.1.1**(一)第一步:创建并定义一个"画板"**(你将要在你定义的画板上面进行画图操作).
fig=plt.figure()#定义一张画板命名为fig
在plt.figure()括号里面还有一些参数
例如:
huaban=plt.figure(figsize=(6,10),facecolor='b',dpi=500)
#figsize是调整你的图像的比例大小,上面所示就是:长/宽=6/10
#facecolor是设置画板的背景颜色,一般颜色代码为英文的首字母
#dpi设置图像的分辨率,分辨率越图像越清晰
#edgcolor是设置边框颜色的参数
1.1.2**(二).第二步:定义你的x,y数据**
这里我们使用numpy库函数来制造一些数据
所以我们还得导入numpy函数
import numpy as np
#设置xy的值
x=np.linspace(-5,5,11)#这里就是把-5到5平均分成十一份,(-5,-4,-3,.....)
y=[1,6,3,-3,6,8,3,6,9,1,-5]
1.1.3**(三).第三步:设置x,y轴的大小,刻度,…**
#添加p1到画板
p1=fig.add_subplot(111)#这里的111是指把画板分成一行一列,把p1添加到第一副图
#限制函数坐标轴的长度
p1.axis([-5,5,-10,10])#x轴长度为-5到5,y轴长度为-10到10
#设置x,y轴的刻度
plt.xticks(x)
plt.yticks(y)
#这里是指:x,y轴的刻度为之前定义的x,y数据列表
#设置坐标轴的上下限
plt.xlim(-5,5)
plt.ylim(-10,10)
1.1.4(四).绘制图像,导入x,y数据,设置线条样式,颜色,粗细,添加图例,标题…
#绘制图像
p1.plot(x,y,marker='o',ms=5,lw=2,ls='--',label='band')
#x,y就是最开始定义的数据
#marker是设置拐点样式:o/h/^/./+等等
#ms是设置拐点的标记大小
#lw就是设置线条粗细,数值越大线条越粗
#ls是设置线条样式,这里'--'为虚线
#label是设置此线条的名称标题
p1.legend(loc='best')#添加图例,其中best是指将图例的位置添加到最佳位置,
#你也可以自己设置位置,例如:upper left(左上角)
#添加标题
plt.title('NUM',fontsize=24)#设置图像的标题,fontsize是设置标题文字的大小
plt.xlabel('Value',fontsize=14)#设置x轴的标题
plt.ylabel('ARG',fontsize=14)#设置y轴的标题
现在基本上就设置好了,因为我是在脚本中画图,所以我需要在代码的最后添加一个:plt.show(),它会自动启用一个事件循环,并找到所有当前可用的图形对象,然后打开一个交互式窗口来显示图形.
1.1.5上述的完整的代码(有一些细节的添加):
import matplotlib.pyplot as plt
import numpy as np
#设置xy的值
x=np.linspace(-5,5,11)
y=[1,6,3,-3,6,8,3,6,9,1,-5]
#创建一张画板
huaban=plt.figure(figsize=(6,10))
#添加p1到画板
p1=huaban.add_subplot(111)
#限制函数坐标轴的长度
p1.axis([-5,5,-10,10])
#设置x,y轴的刻度
plt.xticks(x)
plt.yticks(y)
#去除右边边框
p1.spines['right'].set_color('none')
#去除顶部边框
p1.spines['top'].set_color('none')
#下面两行代码是将xy轴的交点改为(0,0)
p1.spines['bottom'].set_position(('data',0))
p1.spines['left'].set_position(('data',0))
#绘制图像
p1.plot(x,y,marker='^',ms=5,lw=2,ls='--',label='band')
p1.legend(loc='upper left')
#添加标题
plt.title('NUM',fontsize=24)
plt.xlabel('Value',fontsize=14)
plt.ylabel('ARG',fontsize=14)
#添加辅助虚线
for i in range(len(x)):
x1=[x[i],x[i]]
y1=[0,y[i]]
plt.plot(x1,y1,'r-.')
for i in range(len(x)):
x2=[0,x[i]]
y2=[y[i],y[i]]
p1.plot(x2,y2,'r-.')
#添加每个折点的坐标
for i in range(len(x)):
p1.text(x[i],y[i],(x[i],y[i]),c='green')
plt.grid(c='b',ls='--')#这个函数是生成网格的函数
plt.show()
输出结果:
2.散点图
散点图其实大部分语法和上述差不多,只需要将折线图中的plt.polt()改为plt.scatter()
这里我们只需要画一幅图来做个例子,就省去创建画板的步骤,创建画板的步骤在后面才会有用.
import numpy as np
import matplotlib.pyplot as plt
#随机生成一些数据
N=20
x=np.random.rand(N)
y=np.random.rand(N)
x1=np.random.rand(N)
y1=np.random.rand(N)
plt.scatter(x,y,s=100,c='red',marker='^',label='red')#c是color的简称,设置颜色
plt.legend(loc='best')
plt.scatter(x1,y1,s=50,c='blue',marker='o',label='blue')
plt.legend(loc='upper left')#在左上角添加图例
plt.xlabel('x')#给横坐标添加标签
plt.ylabel('y')#给纵坐标添加标签
plt.title('picture')#给图像添加标签
plt.show()#显示图像
输出结果:
3.条形图的绘制
使用plt.bar()进行绘制
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3,4,5]
y=np.random.rand(5)
plt.figure(figsize=(8,4))
plt.bar(x,y)
x_t=list(range(len(x)))
plt.xticks(x,x_t)
plt.show()
输出结果:
4.四幅子图的绘制
画子图就需要创建画板,然后对画板进行分割,然后在分出来的位置进行绘制不同的图像.
重点是这里:
p1 = huaban.add_subplot(221)p2=huaban.add_subplot(222)p3=huaban.add_subplot(223)p4=huaban.add_subplot(224)#这些数字的意思就是,把画板分成两行两列,四个位置,然后p1在位置1,p2在位置2,p3在位置3.......
import numpy as np
import matplotlib.pyplot as plt
x=range(-10,10,1)
y=np.random.rand(20)
huaban=plt.figure(facecolor='pink',figsize=(8,8),dpi=100)
p1 = huaban.add_subplot(221)
p1.plot(x,y,label="sinx",marker='o')
plt.legend(loc='best')
plt.grid(c='r',linestyle=':')
p2=huaban.add_subplot(222)
x1=np.linspace(-np.pi*2,np.pi*2,1000)
y1=np.sin(x1)
p2.plot(x1,y1,label="sinx",color='blue')
plt.legend(loc='best')
plt.grid(c='b',linestyle='--')
p3=huaban.add_subplot(223)
x2=np.random.rand(10)
y2=np.random.rand(10)
x3=np.random.rand(10)
y3=np.random.rand(10)
p3.scatter(x2,y2,c='red',marker='o',label="散点图")
p3.scatter(x3,y3,c='red',marker='^',label="散1")
p4=huaban.add_subplot(2,2,4)
p4.plot(x1,np.cos(x1),label="cosx")
plt.legend('best')
plt.grid(c='c',linestyle=':')
plt.show()
输出结果:
5.饼状图的绘制
import matplotlib.pyplot as plt
x=[35,25,25,15]
colors=["#14615E", "#F46C40", "#3E95C0", "#A17D3B"]
name=['A','B','C','D']
label=['35.00%','25.00%','25.00%','15.00%']
huaban=plt.figure()
p1=huaban.add_subplot(111)
p1.pie(x,labels=name,colors=colors,autopct='%1.2f%%',explode = (0, 0.2, 0, 0))
plt.axis('equal')
plt.show()
输出结果:
6.热力图的绘制
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(4,4))
# Fixing random state for reproducibility
#np.random.seed(19680801)
#创建子图1
plt.subplot(211)
plt.imshow(np.random.random((10, 10)), cmap="hot")
#创建子图2
plt.subplot(212)
plt.imshow(np.random.random((5, 5)), cmap="winter")
plt.subplots_adjust(bottom=0.09, right=0.5, top=0.9)
cax = plt.axes([0.75, 0.1, 0.065, 0.8])
plt.colorbar(cax=cax)
plt.show()
输出结果:
来源:https://blog.csdn.net/m0_62844645/article/details/122869174


猜你喜欢
- 一、php事务处理概述:事务:是若干事件的集合事务处理:当所有事件执行成功,事务才执行;若有任何一个事件不能成功执行,事务的其它事件也不被执
- 这个符合设计标准的三 级向上弹出菜单,纯css代码控制,没有使用javascript脚本,绿色环保,呵呵。兼容性应该更好。截图:<!D
- —— 八数码难题 ——1.题目描述八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字
- 随着MYSQL版本的更新以及电脑系统的变化,我们给大家整理了各种电脑环境下安装MYSQL的图解过程,希望我们整理的内容能够帮助到大家:mys
- instr函数为字符查找函数,其功能是查找一个字符串在另一个字符串中首次出现的位置。instr函数在Oracle/PLSQL中是返回要截取的
- 使用jmail组件发送邮件:Function JMail(Send_From,Send_To,Send_Subject,Send_
- 简介Part1:写在最前 OneProxy平民软件完全自主开发的分布式数据访问层,帮助用户在MySQL/
- 本文实例为大家分享了python实现定时发送邮件的具体代码,供大家参考,具体内容如下一、发送邮件import smtplib from em
- 目前可以实现简单的计算。计算前请重置,设计的时候默认数字是0,学了半天就做出来个这么个结果,bug不少。 python3.5 + PyQt5
- form无论是在网站的制作中,还是在网站的重构中,我们都会频繁地“碰面”,当“碰面”的次数多了,反而觉得他更让人迷茫,有种熟悉的“陌生”,越
- endswith()方法返回true,如果字符串以指定后缀结尾,否则返回(False可选限制的匹配从给定的索引开始和结束)。语法
- 文 | 某某白米饭来源:Python 技术「ID: pythonall」微信和 QQ 都有一个存放缓存文件的文件夹,微信在设置 -
- 概述做日志分析工作的经常需要跟成千上万的日志条目打交道,为了在庞大的数据量中找到特定模式的数据,常常需要编写很多复杂的正则表达式。例如枚举出
- 其实老早之前就已经做完了,这次稍微改进一下浏览地址:http://www.healdream.com/upload/html/autocli
- 通常人们使用以下两种方法来执行SQL语句: Set Rs=Conn.Execute(SqlStr) 和&nbs
- 目录总体思路:判断链接是否指向文件:下载文件:获取 url 下的所有链接:最近维基 jie mi 彻底公开了网站的全部文件,我就在想如何使用
- 本文实例讲述了Python用于学习重要算法的模块pygorithm。分享给大家供大家参考,具体如下:这是一个能够随时学习重要算法的Pytho
- 有个简单的方法,使用display:table, display:table-row and display:table-cell 就可以实
- 我之前想写路由器的密码暴力破解器,我手上只有极路由,发现极路由有安全限制,只能允许连续10密码错误,所以我改拿博客园练手。博客园的博客有个功
- 一、目录权限设置很重要:可以有效防范黑客上传木马文件. 如果通过 chmod 644 * -R 的话,php文件就没有权限访问了。 如果通过