matplotlib画简单的论文图像

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

折曲线图

基本绘图

在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')将实际值作为值,可以使得柱体间隔均匀美观。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI视野·今日CV 计算机视觉论文速览 第293期】Fri, 19 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Fri, 19 Jan 2024 Totally 103 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers ParaHome: Parameterizing Everyday Home Activities Towards 3D Generative Modeling of Human-Object Interactions Aut…

矩阵特征值分解(EVD)

关于求解特征值和特征向量参考《特征值和特征向量-CSDN博客》

vscode 代码调试from IPython import embed

一、讲解 这种代码调试方法非常的好用。 from IPython import embed上面的代码片段是用于Python中嵌入一个交互式IPython shell的方法。这可以在任何Python脚本或程序中实现,允许在执行到该点时暂停程序,并提供一个交互式环境,以便于检查、…

HIS系统架构设计与实现的经验总结

随着信息技术的快速发展,医疗行业也在不断迎来新的变革。医院信息化系统(HIS)作为医疗信息化的重要组成部分,扮演着连接医院各个部门、优化医疗流程、提升服务质量的关键角色。在设计与实现HIS系统架构时,需要考虑到系…

【运维测试】移动测试自动化知识总结第1篇:移动端测试介绍(md文档已分享)

本系列文章md笔记(已分享)主要讨论移动测试相关知识。主要知识点包括:移动测试分类及android环境搭建,adb常用命令,appium环境搭建及使用,pytest框架学习,PO模式,数据驱动&#xff0…

计算机组成原理 2 数据表示

机器数 研究机器内的数据表示,目的在于组织数据,方便计算机硬件直接使用。 需要考虑: 支持的数据类型; 能表示的数据精度; 是否有利于软件的移植 能表示的数据范围; 存储和处理的代价; ... 真值…

Kotlin基本语法1到函数

1.range表达式 fun main() {var age 12.3if (age in 0.0..3.3){println("婴幼儿")}else if (age in 4.0..12.2){println("少儿")}else{println("未知")}/*** in 后面还可以接 list set 都可以*/if (age !in 0.0..3.3){println("婴幼儿&quo…

如何使用idea连通服务器上的Redis(详细版本)

这里我使用的是阿里云的服务器 打开阿里云的安全组,设置端口为6379 在redis.conf文件中,注释bind 127.0.0.1 将protected-mode设置为no,即关闭保护模式 更改服务器中的防火墙,放行6379端口 # 放行端口 firewall-cmd --zo…

Java+SpringBoot构建智能捐赠管理平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

七天入门大模型 :提示词工程 Prompt Engineering,最全的总结来了!

文章目录 技术交流群用通俗易懂方式讲解系列引 言LLM 的超参配置Prompt Engineering指令主要内容少样本学习更加明确的提示善用分隔符思维链提示对输出格式的明确要求 最佳实践案例1. Agent场景:使用prompt实现agent create2. Agent场景:使用system mess…

AIGC | AI提示词构建

文章目录 📚BARD提示词构建法🐇前言🐇第一步:阐述背景Background🐇第二步:定义目标Aim🐇第三步:设定角色Role🐇第四步:设置要求Demand 📚测试与迭…

黑马程序员微信小程序学习总结7.工具脚本、自定义组件、data和properties的区别

目录 工具脚本(utils中的wxs)自定义组件组件的引用方式局部引用全局引用组件和页面的区别组件样式隔离data数据组件method事件处理函数自定义组件添加属性 data和properties的区别使用setData修改properties的值 工具脚本(utils中的wxs&#…

[缓存] - 1.缓存共性问题

1. 缓存的作用 为什么需要缓存呢?缓存主要解决两个问题,一个是提高应用程序的性能,降低请求响应的延时;一个是提高应用程序的并发性。 1.1 高并发 一般来说, 如果 10Wqps,或者20Wqps ,可使用分布…

Linux命令行全景指南:从入门到实践,掌握命令行的力量

目录 知识梳理思维导图: linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…

【Python网络编程之Ping命令的实现】

🚀 作者 :“码上有前” 🚀 文章简介 :Python开发技术 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 Python网络编程之Ping命令的实现 代码见资源,效果图如下一、实验要求二、协议原理2…

P1990 覆盖墙壁题解

题目 有一个长为N宽为2的墙壁,给你两种砖头:一个长2宽1,另一个是L型覆盖3个单元的砖头。如下图: 0 0 0 00砖头可以旋转,两种砖头可以无限制提供。你的任务是计算用这两种来覆盖N2的墙壁的覆盖方法。例如一个23的墙…

petalinux2018.3安装步骤

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

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

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

Mysql中关于on,in,as,where的区别

目录 Mysql on,in,as,where的区别 Mysql语句问题解决 1、left join数据筛选问题 2、相同数据重复筛选使用问题 3、根据某个字段排序取每个类别最后三条数据或前三条数据 4、业务逻辑书写位置问题 5、查找另一表内和本表相关字段的数量 6、关于union的使用 7、limit的巧…

2019年通信工程师初级 实务 真题

文章目录 一、第9章 通信动力与环境通信电源系统的主要功能:“供”、“配”、“储”、“发”、“变” 二、第2章 传输网三、第3章 接入网四、第4章 互联网 一、第9章 通信动力与环境 【问题一】 网络通信设备对动力与环境的质量要求可以归纳为 (1&#…