Matplotlib绘图基础详细教程

news2024/9/28 21:19:27

1、GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图高级培训班

2、全流程R语言Meta分析核心技术

3、最新基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法

导入模块

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 pltimport 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()

输出结果:

散点图

散点图其实大部分语法和上述差不多,只需要将折线图中的plt.polt()改为plt.scatter()

这里我们只需要画一幅图来做个例子,就省去创建画板的步骤,创建画板的步骤在后面才会有用.

import numpy as npimport matplotlib.pyplot as plt#随机生成一些数据N=20x=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()#显示图像

输出结果:

图片

条形图的绘制

使用plt.bar()进行绘制

import numpy as npimport 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()

输出结果:

图片

四幅子图的绘制

画子图就需要创建画板,然后对画板进行分割,然后在分出来的位置进行绘制不同的图像.

重点是这里:

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 npimport 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()

输出结果:

图片

饼状图的绘制

import matplotlib.pyplot as pltx=[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()

输出结果:

图片

热力图的绘制

import matplotlib.pyplot as pltimport numpy as npplt.figure(figsize=(4,4))# Fixing random state for reproducibility#np.random.seed(19680801)#创建子图1plt.subplot(211)plt.imshow(np.random.random((10, 10)), cmap="hot")#创建子图2plt.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()

输出结果:

————————————————

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1073515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云架构师学习------云存储白皮书深入理解

云架构师学习------云存储白皮书深入理解 云架构师学习------云存储白皮书深入理解行业描述数字经济时代的到来1、基础设施的云化2、核心技术互联网化3、应用数据化和智能化 存储行业的变革1、存储服务网络的巨变2、云原生对云存储的新要求3、智能与存储的交相辉映 技术产品&am…

使用CountDownLatch解决接口循环网络请求造成的耗时问题

背景:由于查询接口调用第三方平台,需要通过http请求获得设备数据,但由于第三方接口获取数据的限制,只能通过某些接口获取机柜与机房、机柜与设备关系后再查询对应设备的信息,单线程执行效果慢造成了网络io耗时较长的问…

高并发 发送请求(asyncio)

在接手这个项目之前,关于数据存储的代码逻辑如上图,看起来按部就班,也很合理。(本人觉得这就像个玩具车) 在最后一步发送HTTP request响应足够快的话,其实速度说不上快但稳定,可以接受。但偏偏…

segment方案解决VXLAN分布式网关DCI间互联

segment概念: segment方案是在需要互联的两个DCI间建立3条VXLAN隧道实现两个DCI间的二层和三层间互通需求,常用于大型的DCI间互联,无需考虑两个DCI内的VXLAN参数规划的不同,其中二层互通可以采用映射VNI或局部VNI的方式进行解决&…

运营商大数据,三网融合大数据,联通大数据,移动大数据

有许多公司和企业依靠电话营销和短信营销。对于他们来说,客户资源就是维生素和维生素,客户资源的及时性和准确性是这些公司和企业最关心的问题。长期使用低质量、大量无效的客户资源,是对时间的浪费,是对人力物力财力的浪费&#…

基于Springboot实现房屋租赁租房平台系统项目【项目源码+论文说明】

基于Springboot实现房屋租赁租房平台系统演示 摘要 在网络高速发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,房东只能以用户为导向,所以开发租房网…

基于springboot实现准妈妈孕期交流平台项目【项目源码+论文说明】分享

基于springboot实现准妈妈孕期交流平台演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,准妈妈孕期交流平台当然也不能排除在外。准妈妈孕期交流平台是以实际运用为开…

加密的重要性,MySQL加密有哪些好处?

加密是一种将信息转化为无法直接读取的格式的技术,从而保护信息安全。在当今数字化的世界中,数据已成为企业的重要资产,因此加密的重要性不言而喻。在这篇文章中,我们将探讨MySQL加密的好处以及如何选择合适的加密算法。 MySQL加密…

Windows系统安装

安装Windows系统有很多方法、而Windows系统也有不同的版本,下面主要介绍两种方法安装系统,第一种是使用微软官方提供的镜像文件安装Win10系统,第二种是使用微PE工具箱来安装Win10系统 准备工作:内存大于8G的空U盘,Win1…

软件测试「转行」答疑(未完更新中)

⭐ 专栏简介 软件测试行业「转行」答疑: 如果你对于互联网的职业了解一知半解!不知道行业的前景如何?对于众说纷纭的引流博主说法不知所措!不确定这个行业到底适不适合自己? 那么这一篇文章可以告诉你所有真实答案&a…

10-Node.js入门

01.什么是 Node.js 目标 什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来…

使用docker搭建nacos单机、集群 + mysql

单机搭建 1 拉取mysql镜像 docker pull mysql:5.7.40 2 启动mysql容器 docker run -d --namemysql-server -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 mysql:5.7.40 3 执行nacos的数据库脚本 /* * Copyright 1999-2018 Alibaba Group Holding L…

树的基本概念及二叉树

目录 一、树的基本概念 (1)树的结点 (2)度 (3)结点层次 (4)树的高度 树的特点: 二、二叉树 (1)满二叉树 (2)完…

nodejs 16版本

Index of /download/release/latest-v16.x/

医院内网多台主机中毒流量分析案例

背景 最近医院的医生多次反馈网络出现慢和卡顿现象。医院十分重视这个问题,并将之反馈给网络部门同事进行处理。经过多次排查和分析,并没有发现网络中的异常情况。为了更好地解决这一问题,我们推荐安装NetInside流量分析系统。这个系统可以对…

c++视觉图像----扩充边界

图像扩充边界 #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg", cv::IMREAD_COLOR);if (image.empty()) {std::cerr << "Could not open or find the imag…

【JVM--StringTable字符串常量池】

文章目录 1. String 的基本特性2. 字符串拼接操作3. intern()的使用4. StringTable 的垃圾回收 1. String 的基本特性 String 声明为 final 的&#xff0c;不可被继承String 实现了 Serializable 接口&#xff1a;表示字符串是支持序列化的。String 实现了 Comparable 接口&am…

求臻人故事 | 在求臻医学的沃土中,我像竹子般茁壮成长

在这个快节奏的社会中&#xff0c;我们时常忽略了身边的“小人物”&#xff0c;他们或许默默无闻&#xff0c;或许平凡无奇&#xff0c;但他们的经历、奋斗和成就&#xff0c;却能给我们带来深深的启示。让我们一起走进每个平凡的求臻人世界&#xff0c;聆听他们的“大故事”&a…

Direct3D网格(一)

创建网格 我们可以用D3DXCreateMeshFVF函数创建一个"空"网格对象 &#xff0c;空网格对象是指我们指定了网格的面片总数和顶点总数&#xff0c;然后由该函数为顶点缓存、索引缓存和属性缓存分配大小合适的内存&#xff0c;之后即可手工填入网格数据。 HRESULT WINA…

供水管网监测系统

随着城市人口的不断增长和经济的快速发展&#xff0c;供水管网的安全和可靠性变得尤为重要。在过去&#xff0c;供水管网的监测往往是依靠人工巡查&#xff0c;这种方式不仅费时费力&#xff0c;而且容易出现疏漏和盲区。然而&#xff0c;随着科技的进步&#xff0c;供水管网监…