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 pltp=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 pltp=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.hqwc.cn/news/469062.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剑指offer——二进制中1的个数

目录 1. 题目描述2. 可能引起死循环的想法3. 改进后的代码4. 给面试官惊喜的代码 1. 题目描述 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制位1001,有2位是1,因此如果输入9,该函数输…

C#,最长公共扩展(LCE,Longest Common Extention)的算法与源代码

一、最长公共扩展(LCE)问题 考虑一个字符串s,并为每对(L,R)计算从L和R开始的s的最长子字符串。 在LCE中,在每个查询中,我们必须回答从索引L和R开始的最长公共前缀的长度。 例子&am…

机器学习、深度学习、强化学习、迁移学习的关联与区别

Hi,大家好,我是半亩花海。本文主要了解并初步探究机器学习、深度学习、强化学习、迁移学习的关系与区别,通过清晰直观的关系图展现出四种“学习”之间的关系。虽然这四种“学习”方法在理论和应用上存在着一定的区别,但它们之间也…

什么是 Flet?

什么是 Flet? Flet 是一个框架,允许使用您喜欢的语言构建交互式多用户 Web、桌面和移动应用程序,而无需前端开发经验。 您可以使用基于 Google 的 Flutter 的 Flet 控件为程序构建 UI。Flet 不只是“包装”Flutter 小部件,而是…

51单片机编程基础(C语言):电子时钟(LED1602作为显示)

题目要求: 审题时这个题是用数码管来显示的,数码管显示时钟我完成了一个,只是要求跟他不一样,所以这次想用LCD1602来显示,所以我先用LCD1602完成,再用数码管完成(其实也只要在我之前的项目基础…

《数电》理论笔记-第3章-常用组合逻辑电路及MSI组合电路模块的应用

一,编码器和译码器 1,编码器 编码:用由0和1组成的代码表示不同的事物。 编码器:实现编码功能的电路, 常见编码器:普通编码器、优先编码器、二进制编码器二-十进制编码器等等 1.1 三位二进制普通编码器和三位二进制优先编码器 1分58秒开始 …

洛谷_P1923 【深基9.例4】求第 k 小的数_python写法

哪位大佬可以出一下这个的题解?????话说蓝桥杯可以用numpy库吗?????? 这道题有一个很简单的思路就是排序完成之后再访问。 but有很大的问题&…

近十年金融资产收益率

通过掌握大类资产的历年收益率数据,做基于数据的投资,提高胜率和收益率。 下面是同花顺梳理的2014至2023大类金融资产收益率: 基于这个数据,我们再统计两项指标: 1. 每种资产在近十年的投资胜率(收益率为…

哈希表 ?

哈希表 首先什么是 哈希表,哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hash table就可以了)。 哈希表是根据关键码的值而直接进行访问的数据结构。 这么这官方的解释…

每日一练——月落乌啼算钱

题目: 举例: 输入:6,输出:8.00 最开始看到这道题还有点蒙,但是看到他的公式想起了斐波那契数列 1,1,2,3,5,8...... 由前两个数相加得到第三个数,为An2An1An。 可以得出这个题目中所给的通项就…

Spark编程实验六:Spark机器学习库MLlib编程

目录 一、目的与要求 二、实验内容 三、实验步骤 1、数据导入 2、进行主成分分析(PCA) 3、训练分类模型并预测居民收入 4、超参数调优 四、结果分析与实验体会 一、目的与要求 1、通过实验掌握基本的MLLib编程方法; 2、掌握用MLLib…

《UE5_C++多人TPS完整教程》学习笔记3 ——《P4 测试多人游戏(Testing Mutiplayer)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P4 测试多人游戏(Testing Mutiplayer)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译…