当前位置: 首页 > news >正文

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.lryc.cn/news/230901.html

相关文章:

  • QT使用Socket与安卓Socket互发消息
  • Redis05-集群方案
  • 故障演练的关键要素及重要性
  • 11月15日,每日信息差
  • java-关于alibaba的JSON.parseArray注意事项
  • 软文推广中媒体矩阵的优势在哪儿
  • xss总结
  • 【MySQL学习】常见命令
  • 汽车ECU的虚拟化技术初探(二)
  • vue3 el-menu初始化时选中没有高亮的问题(default-active和index的问题)
  • Vue的class、style绑定
  • day22_mysql
  • 【VBA】基于EXCEL生成Insert语句工具
  • 算法与数据结构--前缀和
  • 高频CSS面试题
  • electron 内部api capturePage实现webview截图
  • sql9(Leetcode197上升的温度)
  • 物联网AI MicroPython学习之语法 umqtt客户端
  • SQLite3 数据库学习(二):SQLite 中的 SQL 语句详解
  • 基础课4——客服中心管理者面临的挑战
  • RFID技术在危险废物管理中的应用解决方案
  • 二百零三、Flume——Flume实时采集数据频率为1s的高频率Kafka数据直接写入ODS层表的HDFS文件路径下
  • Word或者WPS批量调整文中图片大小的快捷方法
  • url在api测试工具可以访问,但在浏览器不能访问
  • k8s之Helm
  • ElasticSearch 增删改查操作
  • ctfshow sql171-179
  • Mysql 自带分页异常
  • MySQL MVCC机制详解
  • 搭建成功simulink-stm32硬件在环开发环境