matplotlib绘图

介绍

在官网上有更多种类的图型的绘制方法

matpoltlib中文官方文档:例子_Matplotlib 中文网

matpoltlib英文官方文档:Examples — Matplotlib 3.8.1 documentation

分类

一、折线图

1、要实现的功能:

2、实例:

# 导入包
from matplotlib import pyplot as plt
#这句话还可以用:from matplotlib import pyplot as plt# 创建数据
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]
y2 = [1, 0, 11, 12, 13, 14, 3, 10, 1, 1, 1, 2]# 设置图片尺寸和清晰度,dpi表示分辨率,即每英寸的点数,默认80
plt.figure(figsize=(20, 8), dpi=200)# 绘制折线图
plt.plot(x, y, label='line_1')
plt.plot(x, y2, label='line_2', color='r', linestyle="--", linewidth=5, alpha=0.5)#设置线颜色、线条样式、线条宽度、线条透明度# 设置曲线标签;需要先在plot函数中设置label参数,
plt.legend()  # 默认标签显示在右上角;对参数loc赋值可使label显示在不同位置# 设置x、y轴刻度(数字的情况下)
xticks_labels = [i/2 for i in range(2, 50)]
plt.xticks(xticks_labels)
plt.yticks(range(0, max(y)+1))
# 设置x、y刻度(字符串情况下);传入两个参数,都为列表形式,两个列表对应;rotation代表旋转角度
plt.xticks(xticks_labels, [f"No.{i}" for i in xticks_labels], rotation = 45)# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')# 设置网格
plt.grid()
#  plt.grid(alpha = 0.2)  #参数alpha表示网格透明度# 保存图片
plt.savefig("./t1.png")
plt.savefig("./t2.svg")   # .svg矢量图格式,放大不会有锯齿# 显示图形
plt.show()

3、逐句解释:

(1)导入包

# 导入包
from matplotlib import pyplot as plt
#这句话还可以用:from matplotlib import pyplot as plt

(2)创建数据

# 创建数据
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]
y2 = [1, 0, 11, 12, 13, 14, 3, 10, 1, 1, 1, 2]

(3)设置图片尺寸和清晰度,dpi表示分辨率,即每英寸的点数,默认80

# 设置图片尺寸和清晰度,dpi表示分辨率,即每英寸的点数,默认80
plt.figure(figsize=(20, 8), dpi=200)

(4)绘制折线图,plot中,参数可以设置:“ 线条颜色、线条样式、线条宽度、线条透明度 ”

# 绘制折线图
plt.plot(x, y, label='line_1')
plt.plot(x, y2, label='line_2', color='r', linestyle="--", linewidth=5, alpha=0.5)#设置线颜色、线条样式、线条宽度、线条透明度

(5)在一个表中显示多个折线图,多次调用plot函数绘图即可,可用 legend 生成图例,不同折线标签是由 plot 中的 label 参数设置,legend 中参数可设置标签的各项特点。

# 设置曲线标签;需要先在plot函数中设置label参数,
plt.legend()  # 默认标签显示在右上角;对参数loc赋值可使label显示在不同位置

(6)设置x、y轴的刻度,数字情况是传入一个列表参数,字符串情况是传入两个相互对应的列表参数

# 设置x、y轴刻度(数字的情况下)
xticks_labels = [i/2 for i in range(2, 50)]
plt.xticks(xticks_labels)
plt.yticks(range(0, max(y)+1))
# 设置x、y刻度(字符串情况下);传入两个参数,都为列表形式,两个列表对应;rotation代表旋转角度
plt.xticks(xticks_labels, [f"No.{i}" for i in xticks_labels], rotation = 45)

(7)设置标题和x、y轴标签

# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

(8)设置网格,alpha参数代表网格透明度,范围0-1

# 设置网格
plt.grid()
#  plt.grid(alpha = 0.2)  #参数alpha表示网格透明度

(9)保存图片,svg矢量图格式可以防止放大图线后出现模糊

# 保存图片
plt.savefig("./t1.png")
plt.savefig("./t2.svg")   # .svg矢量图格式,放大不会有锯齿

(10)显示图线

# 显示图形
plt.show()

二、散点图

将  plot()  换成  scatter()  即可。其余与折线图完全一样。

三、条形图

1、竖着的条形图

from matplotlib import pyplot as plta = ["no1", "no2", "no3", "no4", "no5", "no6", "no7", "no8", "no9"]
b = [56.1, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11]# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)# 绘制条形图
plt.bar(range(len(a)), b, width=0.3)# 设置字符串到x轴
plt.xticks(range(len(a)), a, rotation=90)plt.show()

2、横着的条形图

from matplotlib import pyplot as plta = ["no1", "no2", "no3", "no4", "no5", "no6", "no7", "no8", "no9"]
b = [56.1, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11]# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)# 绘制条形图
plt.barh(range(len(a)), b, height=0.3)# 设置字符串到x轴
plt.yticks(range(len(a)), a)plt.show()

3,区别

(1)竖图和横图用的绘图函数分别为 bar() 和 barh() ,

(2)若竖图设置的是x轴,其对应的横图就应该设置y轴。

(3)竖图设置条的宽度用width参数,横图用height参数

四、直方图

用 hist() 绘制直方图,参数density默认为False,表示绘制频率分布直方图,设置为True 表示绘制概率分布直方图(面积归一化)

from matplotlib import pyplot as plta = [112,134,173,156,88,93,140,150,130,133,122,123,132,145,154,154,154,123,165,147,99,95,149,120,123,93,92,154,123,134,135,154,153,133,122,123,154,145,134,145,164,163,162,166,126,134,143,155,156,167,133,134,155,159,158,138,139,134,137,147,148,149,133,134,144,134,143,133,170,167,145,123,134,165,122,102,101,100,102,103,103,104,105,106,107,148,109,112,113,114,115,112,111,111,110,114,113,123,133,116]d = 5    # 组距
num_bins = (max(a)-min(a))//d
print(len(a), max(a), min(a), max(a)-min(a))
print(num_bins)# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)
plt.hist(a, num_bins, density=True) # density设置为True表示概率分布直方图(面积归一化),默认density为False,为频率分别直方图# 设置x轴刻度
plt.xticks(range(min(a), max(a)+d, d))plt.grid()plt.show()

hist() 中第二个参数若为一个数字num,则代表平均分为num组,若为一个列表,则可以按照列表分组,这个列表中的数代表的并不是比例,而是横坐标的数字,如将上代码中的 hist() 的第二个参数改为 [60,70,80,90,100,125,155,160,170,180],可得到:

此时应更改横坐标也为[60,70,80,90,100,125,155,160,170,180]

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

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

相关文章

每天学习一点点之从 SonarQube Bug 看对线程中断异常的处理

最近在基于 SonarQube 对代码进行质量优化,说实话,之前觉得 SonarQube 这种很无聊,但最近静下心来看了一些扫描出来的问题后,发现这种工具作用还是挺大的,能够帮助我们找到代码中的隐藏缺陷,从而夯实基础。…

三菱FX3U系列—小项目

目录 一、项目描述 二、IO口分配 三、运动功能图 四、项目程序 五、总结 一、项目描述 有些工作台,在工作台身上安装4个行程开关SQ1~SQ4,其中,SQ1、SQ2用来自动换向,当工作台运动到换向位置时,挡铁撞击行程开关&a…

网络超时检测-11.9

应用场景 在网络通信中,很多操作会使得进程阻塞: TCP套接字中的recv/acceptUDP套接字中的recvfrom超时检测的必要性 避免进程在没有数据时无限制地阻塞实现某些特定协议要求,比如某些设备规定,发送请求数据后,如果多长…

阿里云99元VS腾讯云88元,双11云服务器价格战,谁胜谁负?

在2023年的双十一优惠活动中,阿里云推出了一系列令人惊喜的优惠活动,其中包括99元一年的超值云服务器。本文将带您了解这些优惠活动的具体内容,以及与竞争对手腾讯云的价格对比,助您轻松选择最适合的云服务器。 99元一年服务器优…

23000 个恶意流量代理的 IPStorm 僵尸网络被拆除

美国司法部今天宣布,联邦调查局取缔了名为 IPStorm 的僵尸网络代理服务的网络和基础设施。 IPStorm 使网络犯罪分子能够通过世界各地的 Windows、Linux、Mac 和 Android 设备匿名运行恶意流量。 与此案相关的俄罗斯裔摩尔多瓦籍公民谢尔盖马基宁 (Sergei Makinin)…

儿童水杯上架亚马逊美国站CPC认证办理 ,常见儿童产品CPC认证测试要求

美国CPSC从2021/03/22开始改革,凡是他们管辖范围内的产品,都会被标记审查,如有相关产品请提前准备好相关文件比如CPC检测报告、认证等等,以备目的港海关审查。 CPC认证介绍 CPC证书即儿童产品证书,适用于12岁以下的儿…

【ArcGIS Pro二次开发】(76):面积平差工具

之前做过一个【三调土地利用现状分类面积汇总】的工具,在流程中使用了面积平差的方法。 考虑了在其它场合可能也需要进行面积平差,因此单独提取出来作为一个工具。 平差实现的方法如下图: 主要的计算过程如上图所示,算出总面积差…

DM8数据守护集群安装部署_手动切换

一.安装前准备 1.1 硬件环境建议 数据守护集群安装部署前需要额外注意网络环境和磁盘 IO 配置情况,其他环境配置项建议请参考安装前准备工作。 1.1.1 网络环境 心跳网络对 mal 通讯系统的影响非常大,如果网络丢包或者延迟较大,则会严重影…

前后端分离项目为什么很火?有什么优势?

目录 一、什么是前后端分离 二、前后端分离项目的技术栈 三、前后端分离项目有什么优势 一、什么是前后端分离 前后端分离是一种软件架构的设计模式,它将应用程序的前端(即用户界面)和后端(即服务器端)进行解耦,使得它们可以独…

pipeline + node +jenkins+kubernetes部署yarn前端项目

1、编写Dockerfile文件 # Set the base image FROM node:16.10.0# WORKDIR /usr/src/app/ WORKDIR /home/option# Copy files COPY ./ /home/option/# Build arguments LABEL branch${BRANCH} LABEL commit${COMMIT} LABEL date${BUILD_DATE} ARG ENV# Set ENV variables ENV …

Django(六、模板层)

文章目录 模板传值模板语法传值特性 模板语法之过滤器常用的过滤器模板层之标签模板中的标签的格式为标签之if判断 标签之for循环模板的继承与导入模板导入导入格式 模板传值 """ 模板层三种语法 {{}}:主要与数据值相关 {%%}:主要与逻辑相关 {##}:模…

Java-绘图

文章目录 Java绘图Java绘图类绘图颜色与画笔属性设置颜色设置画笔 绘制文本显示图片图像处理1、放大与缩小2、图像翻转3、图像旋转4、图像倾斜 End Java绘图 Java绘图是指在Java程序中创建和显示图形的过程。Java提供了许多类和方法来支持绘图。 Java绘图类 Java中主要的绘图类…