matplotlib画简单的论文图像

news2024/11/27 13:30:55

由于最近论文里需要插入绘图,因此写一篇博客记录一下

折曲线图

基本绘图

在matplotlib中折线和曲线图是最常用和最简单的图。只需要直接使用方法plot即可。

import matplotlib.pyplot as plt
plt.plot(x,y)
plt.show()

其中上述的代码中x,y分别是横坐标和纵坐标的值。作用是根据x,y提供的坐标描点,最后连线从而形成一条曲线。
同时如果只想要直接描点而不希望连线,可以在后面添加参数’o’表示直接描点而无需连线。例如以下代码

import matplotlib.pyplot as plt
plt.plot([i for i in range(0,100,10)],[i for i in range(0,100,10)],'o')
plt.show()

结果为
在这里插入图片描述

多条曲线绘图

在论文中经常会进行多个方法对比,此时会将多个方法结果放入一个图像中,同时通过对曲线使用不同标识标记,例如这种图像
在这里插入图片描述
绘制多种图像的方法和上述画一条曲线相同,通过对方法plot的多次调用,即可实现将多条曲线放入画布中。
这里的注意点是绘制多条曲线是通常需要对多条曲线使用不同标识标记。这里需要的主要是三个参数。分别是colormarkerlabel分别表示的是线段的颜色、标识(就是上面线段中每隔一段的图形)、线段标签。线段标签作用是可以使用方法legend在指定位置说明线段标签,以方便读者区分。例如以下代码

import matplotlib.pyplot as plt
plt.plot([i for i in range(10)],[2*i for i in range(10)],color='blue',marker='*',label='a')#添加第一个曲线
plt.plot([i for i in range(10)],[i for i in range(10)],color='orange',marker='>',label='b')#第二个曲线
plt.legend(loc='lower left')		#添加线段标签说明
plt.show()#显示图像

结果为
在这里插入图片描述
在方法legend中参数表示的是线段说明的位置,本代码中为‘lower left’就是左下位置,right就是右边,upper为上使用这四个参数可以将标签放在任意4个角。对于plot方法的参数marker,其值对应的图像可以参考这篇博客。

以上就是主要的曲线绘图,接下来就是柱状图。

绘制柱状图

基本柱状图

基本柱状图和曲线图类似,但是调用方法名不同,而且参数设置上由于柱状图有厚度,因此一般会添加厚度设置(可以不设置,有默认值)。
例如以下代码

import matplotlib.pyplot as plt
plt.bar([i for i in range(5)],[2*i+1 for i in range(5)],0.9)
plt.show()

效果为
在这里插入图片描述
在方法bar中参数分别是x轴位置,该位置高度,该柱体的宽度。

柱体标签设置

有的时候我们希望在x下面显示该柱体对应的内容,而不是文字,此时我们可以使用方法set_xticklabels
例如以下代码

import matplotlib.pyplot as plt

p=plt.subplot()
x=[i for i in range(5)]#x轴
y=[2*i+1 for i in range(5)]#y轴
show=['aaaa','bbbb','cccc','dddd','eeeee']#希望x轴显示的内容
p.bar(x,y,0.9)
p.set_xticks(x)   #获取位置
p.set_xticklabels(show)		#显示内容
plt.show()

效果为
在这里插入图片描述
这里的柱体不多,如果出现柱题较多的情况可以通过参数使文字竖着显示

import matplotlib.pyplot as plt

p=plt.subplot()    #创建一个图
x=[i for i in range(5)]#x轴
y=[2*i+1 for i in range(5)]#y轴
show=['aaaa','bbbb','cccc','dddd','eeeee']#希望x轴显示的内容
p.bar(x,y,0.9)
p.set_xticks(x)   #获取位置
p.set_xticklabels(show,rotation='vertical')		#显示内容
plt.show()

效果为
在这里插入图片描述

如果希望可以在柱体上面显示对应的值,可以使用方法text(x,y,text)该方法主要有三个参数分别是x轴坐标,y轴坐标和显示的内容。作用的将需要显示的内容在指定坐标显示

多柱柱状图

多柱柱状图和上面的思路相同,不过这里需要注意的是如果是为了对比,例如对比两年每月份的销售额,虽然在实际上x轴相同但是表现在图上时,还是需要x轴有差异,因为如果x轴相同会导致一些图形覆盖。例如以下代码

import matplotlib.pyplot as plt
import random
y1=[random.randint(0,100) for i in range(10)]  #随机生成第一个
y2=[random.randint(0,100) for i in range(10)]	#随机生成第二个
x=[i for i in range(10)]#x轴位置
p=plt.subplot()
p.bar(x,y1,color='orange')
p.bar(x,y2,color='blue')
plt.show()

效果是
在这里插入图片描述
可以看到有些柱体被覆盖无法看到,因此有多有柱体时,需要根据上一个柱体的x位置和柱体宽度设置下一个柱体的位置
例如将上述代码修改为

import matplotlib.pyplot as plt
import random
y1=[random.randint(0,100) for i in range(10)]
y2=[random.randint(0,100) for i in range(10)]
x=[i for i in range(10)]
x2=[i+0.3 for i in x]    #第一个柱体x位置=前一个柱体位置+前一个柱体厚度
p=plt.subplot()
p.bar(x,y1,0.3,color='orange')
p.bar(x2,y2,0.3,color='blue')
plt.show()

效果为
在这里插入图片描述
这里将宽度和x轴设置好后柱体不在重叠。

x轴y轴标签

x,y轴标签也是图表中重要的一部分,对于读者理解内容有较大重要作用。
设置方法较为简单,通过方法xlabel 、ylabel分别用来设置x轴y轴标签名
例如以下代码

import matplotlib.pyplot as plt
plt.plot([i for i in range(10)],[2*i for i in range(10)],color='blue',marker='*',label='a')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
plt.show()

效果为
在这里插入图片描述

使间隔不均匀的柱图间隔均匀

在画一个图片时,遇到一个问题就是需要一个柱状图,但是每个柱体间隔不同,而且不均匀,为了美观需要将柱体间隔均匀方便阅读。这里的思路主要是通过对x值修改。将传入bar方法的x设置为均匀的,再通过方法p.set_xticklabels(show,rotation='vertical')将实际值作为值,可以使得柱体间隔均匀美观。

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

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

相关文章

langchain==win11搭建使用GPU

annaconda安装Python 3.11.7 下载代码: GitHub - chatchat-space/Langchain-Chatchat: Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM)…

【Tomcat】:One or more listeners failed to start.报错解决方案

报错信息:One or more listeners failed to start. Full details will be found in the appropriate container log file. 具体就是web.xml此配置报错: 服务器启动错误Tomcat:One or more listeners failed to start.报错解决方案 IDEA:在使用IDEA运行SSM项目的时候 , Tomcat运…

基于SSM的教材管理系统

文章目录 教材管理系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码(9.9¥) 教材管理系统 一、项目演示 基于SSM的教材管理系统 二、项目介绍 有三个角色 1、管理员 功能模块:用户管理、教…

【数据结构】链表OJ面试题3《判断是否有环》(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 记录每天的刷题,继续坚持! 2.OJ题目训练 9. 给定一个链表,判断链表中是否有环。 力扣(LeetCode)官网 - 全球极客挚爱的技术成…

幻兽帕鲁Palworld服务器设置参数(汉化)

创建幻兽帕鲁服务器配置参数说明,Palworld服务器配置参数与解释,阿腾云atengyun.com分享: 自建幻兽帕鲁服务器教程: 阿里云教程 https://t.aliyun.com/U/bLynLC腾讯云教程 https://curl.qcloud.com/oRMoSucP 幻兽帕鲁服务器 幻…

《数字图像处理-OpenCV/Python》连载:形态学图像处理

《数字图像处理-OpenCV/Python》连载:形态学图像处理 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第 12 章 形态学图像处理 形态学图像处理是基于形状的图像处理&…

《Git 简易速速上手小册》第9章:Git 工作流程定制(2024 最新版)

文章目录 9.1 选择合适的工作流9.1.1 基础知识讲解9.1.2 重点案例:为中等规模的 Python 项目选择 Feature Branch 工作流9.1.3 拓展案例 1:适应 Gitflow 工作流的大型项目9.1.4 拓展案例 2:使用 Forking 工作流的开源 Python 项目 9.2 定制化…

JavaScript 的点击劫持(Clickjacking)

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 点击劫持是一种恶意攻击,攻击者会在用户不知情的情况下诱…

HGAME 2024 WEEK2 Web方向题解 全

---------【WEEK-2】--------- What the cow say? 题目描述:the cow want to tell you something 注意title,Python的flask漏洞可多呢 版本310 先测一下SSTI 正常情况下 SSTI测试 变量渲染测试,被waf了,说明方向对了 单单过滤…

EL表达式和JSTL标签

1.1. EL表达式概述 EL&#xff08;Expression Language&#xff09;是一门表达式语言&#xff0c;它对应<%…%>。我们知道在JSP中&#xff0c;表达式会被输出&#xff0c;所以EL表达式也会被输出。 EL表达式的格式&#xff1a;${…}&#xff0c;例如&#xff1a;${12}…

petalinux2018.3安装步骤

1、虚拟机安装ubuntu-16.04.7-desktop-amd64.iso &#xff08;注意&#xff1a;安装ubuntu-18.04.6-desktop-amd64.iso和ubuntu-16.04.6-desktop-i386.iso会报以下错误&#xff09; environment: line 314: ((: 10 #15~1 > 10 #3: syntax error in expression (error toke…

Java 基于springboot+vue在线外卖点餐系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

正态分布-形状与特点

更多AI技术入门知识与工具使用请看下面链接&#xff1a; https://student-api.iyincaishijiao.com/t/iNSVmUE8/

JavaScript中有哪些不同的数据类型

在 JavaScript 中&#xff0c;数据类型是一种用来表示数据的分类&#xff0c;它决定了我们可以对这个数据类型执行哪些操作。在 JavaScript 中有以下几种不同的数据类型&#xff1a; 基本数据类型 字符串 (String)&#xff1a;表示一组字符&#xff0c;可以使用引号&#xff08…

缓慢变化维 常用的处理方法

什么是缓慢变化维 维度 在数仓中&#xff0c;表往往会被划分成两种类型&#xff0c;一种是 事实表&#xff0c;另一种是维度表&#xff0c;举个例子&#xff0c;比如说&#xff1a; ❝ 2024年2月14日&#xff0c;健鑫在12306上买了两张火车票&#xff0c;每张火车票400元&…

系统架构26 - 软件架构设计(5)

特定领域软件体系结构 定义不同定义必备特征领域 基本活动领域分析领域设计领域实现 参与人员建立过程 特定领域软件体系结构的主要目的是在一组相关的应用中共享软件体系结构。 定义 DSSA (Domain Specific Software Architecture) 就是在一个特定应用领域中为一组应用提供组…

基于BitVM的乐观 BTC bridge

1. 引言 前序博客&#xff1a; 区块链互操作协议Bitcoin Bridge&#xff1a;治愈还是诅咒&#xff1f;BitVM&#xff1a;Bitcoin的链下合约 基于BitVM的乐观 BTC bridge&#xff1a; Trust-minimized two-way peg 机制 BitVM BTC bridge背后的主要思想是&#xff1a; 为比…

【芯片设计- RTL 数字逻辑设计入门 12 -- verilog 有符号数加减法】

文章目录 多功能数据处理器描述verilog 无符号数与有符号数8d100 8d1558d100 8d1568d100 8d157verilog 代码实现TestBench 代码VCS 仿真结果 多功能数据处理器描述 根据指示信号select的不同&#xff0c;对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数&#xff1…

ucosIII下创建任务读取DS18B20采集到的温度数据

学习链接&#xff1a;ucosIII下创建任务读取并输出DHT11采集到的温湿度数据 相关代码及事项&#xff1a; 首先&#xff0c;需要添加下面两个文件&#xff0c; 其次&#xff0c;main.c 中如下的代码&#xff1a; #include "led.h" #include "delay.h" #…

CPython:表达式的求值顺序(evaluation order)

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 C中表达式的求值 C语言针对表达式的计算&#xff0c;设置了操作符的优先级和结合性这两个特性&#xff0c;优先级用于解析不同优先级的符号&#xff0c;结合性用于解析…