matplotlib 入门教程

一. matplotlib 简介

Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。

Matplotlib试图让简单的事情变得更简单,让无法实现的事情变得可能实现。 只需几行代码即可生成绘图,直方图,功率谱,条形图,错误图,散点图等。

二. matplotlib 画图常见属性
1. 线条属性
  1. color:颜色

    ‘b’blue
    ‘g’green
    ‘y’yellow
    ‘r’red
    ‘w’white
    ‘k’black
  2. linestyle:线条风格

    ‘-’solid line style
    ‘–’dashed line style
    ‘-.’dash-dot line style
    ‘:’dotted line style
  3. linewidth:线宽

  4. marker:标记

    ‘.’point marker
    ‘,’pixel marker
    ‘o’circle marker
    ‘v’triangle_down marker
    import numpy as np
    import matplotlib.pyplot as pltif __name__ == '__main__':fig = plt.figure(figsize= (6,4))ax = fig.add_subplot()x = np.linspace(-10, 10, 200)y = np.sin(x)ax.plot(x,y, color = 'r', linewidth = 1, linestyle = '-', marker = 'o')plt.show()
    

    运行结果:
    在这里插入图片描述

2. 坐标轴刻度,坐标轴范围,坐标轴标签和图例
  1. 坐标轴刻度和范围

    • set_xticks:设置x轴刻度
    • set_yticks:设置y轴刻度
    • set_xlim:设置x轴范围
    • set_ylim:设置y轴范围
    import numpy as np
    import matplotlib.pyplot as pltif __name__ == '__main__':fig = plt.figure(figsize= (6,4))ax = fig.add_subplot()x = np.linspace(-10, 10, 200)y = np.sin(x)ax.plot(x,y)ax.set_xticks(np.arange(-10, 11, 1))ax.set_yticks(np.arange(-2, 3, 1))ax.set_xlim(-10, 10)ax.set_ylim(-2, 2)plt.show()
    

    运行结果:
    在这里插入图片描述

  2. 坐标轴标签和图例

    • set_xlabel:设置x轴标签
    • set_xlabel:设置y轴标签
    • plot方法的label属性可以设置图例
    • legend:显示图例
    import numpy as np
    import matplotlib.pyplot as pltif __name__ == '__main__':fig = plt.figure(figsize= (6,4))ax = fig.add_subplot()x = np.linspace(-10, 10, 200)y1 = np.sin(x)y2 = np.cos(x)ax.plot(x,y1, label = 'sin')ax.plot(x, y2, label = 'cos')ax.set_xlabel("x")ax.set_ylabel("y")ax.legend()plt.show()
    

    运行结果:
    在这里插入图片描述

3. 文本和注释
  1. text:设置文本

    import numpy as np
    import matplotlib.pyplot as pltif __name__ == '__main__':fig = plt.figure(figsize= (6,4))ax = fig.add_subplot()x = np.linspace(-10, 10, 200)y = np.sin(x)ax.plot(x, y)ax.set_ylim(-2, 3)ax.text(x = 0, y = 1.5, s = 'text')plt.show()
    

    运行结果:
    在这里插入图片描述

  2. annotate:设置注释

    import numpy as np
    import matplotlib.pyplot as pltif __name__ == '__main__':fig = plt.figure(figsize= (6,4))ax = fig.add_subplot()x = np.linspace(-10, 10, 200)y = np.sin(x)ax.plot(x, y)ax.set_ylim(-2, 3)ax.annotate('zero_point', xy = (0, 0), xytext = (0, 1), arrowprops= {'headwidth':4,'width':2})plt.show()
    

    运行结果:
    在这里插入图片描述

三. matplotlib 绘制多个子图

matplotlib的图像位于Figure对象中,空的Figure对象不能绘图,还需要在Figure对象上添加子图才能真正绘图,matplotlib中提供了两种方法可以添加子图。

1. add_subplot
import numpy as np
import matplotlib.pyplot as pltif __name__ == '__main__':fig = plt.figure(figsize= (6,4))ax1 = fig.add_subplot(2, 2, 1)ax2 = fig.add_subplot(2, 2, 2)ax3 = fig.add_subplot(2, 2, 3)ax4 = fig.add_subplot(2, 2, 4)x = np.linspace(-10, 10, 200)y1 = np.sin(x)y2 = np.cos(x)y3 = np.tan(x)y4 = 2 * x + 10ax1.plot(x, y1)ax2.plot(x, y2)ax3.plot(x, y3)ax4.plot(x, y4)plt.show()

运行结果:
在这里插入图片描述

2. subplots
import numpy as np
import matplotlib.pyplot as pltif __name__ == '__main__':fig,axes = plt.subplots(2, 2, figsize= (6,4))x = np.linspace(-10, 10, 200)y = np.sin(x)for i in range(0, 2):for j in range(0, 2):axes[i][j].plot(x,y)plt.show()

运行结果:
在这里插入图片描述

四. matplotlib 绘制常见图形
1. 折线图

将每个数据点连接起来就构成折线图,折线图可以直观显示数据的值和变化趋势。

import numpy as np
import matplotlib.pyplot as plt#中文格式
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseif __name__ == '__main__':fig = plt.figure(figsize=(15, 8))ax = fig.add_subplot()x = np.linspace(-10, 10, 200)y = np.sin(x)ax.plot(x, y, label='sin')ax.legend()plt.show()

运行结果:
在这里插入图片描述

2. 散点图

散点图一般用于分析两个变量之间是否存在某种关联。

import numpy as np
import matplotlib.pyplot as plt#中文格式
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseif __name__ == '__main__':fig = plt.figure(figsize=(15, 8))ax = fig.add_subplot()x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01, 20.67, 288.64,163.56, 120.06, 207.83, 342.75, 147.9, 53.06, 224.72, 29.51,21.61, 483.21, 245.25, 399.25, 343.35]y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61, 24.9, 239.34,140.32, 104.15, 176.84, 288.23, 128.79, 49.64, 191.74, 33.1,30.74, 400.02, 205.35, 330.64, 283.45]ax.scatter(x, y)plt.show()

运行结果:
在这里插入图片描述

2. 直方图

直方图由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用来展示数据的分布。

import numpy as np
import matplotlib.pyplot as plt#中文格式
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseif __name__ == '__main__':fig = plt.figure(figsize=(15, 8))ax = fig.add_subplot()students_score = [22, 87, 5, 43, 56, 73, 55, 54, 11, 20, 51, 5, 79, 31, 27, 67]ax.hist(students_score, bins=[0, 20, 40, 60, 80, 100], density=True)ax.set_xlabel("分数")ax.set_ylabel("数量")ax.set_xticks([0, 20, 40, 60, 80, 100])plt.show()

运行结果:
在这里插入图片描述

3. 柱状图

柱状图使用柱状显示数据,能够一眼看出各个数据的大小,比较数据之间的差别。

import numpy as np
import matplotlib.pyplot as plt#中文格式
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseif __name__ == '__main__':fig = plt.figure(figsize=(15, 8))ax = fig.add_subplot()movie_name = ['雷神3:诸神黄昏', '正义联盟', '东方快车谋杀案', '寻梦环游记', '全球风暴', '降魔传','追捕', '七十七天', '密战', '狂兽', '其它']# 横坐标x = range(len(movie_name))# 票房数据y = [73853, 57767, 22354, 15969, 14839, 8725, 8716, 8318, 7916, 6764, 52222]ax.bar(x, y, width=0.5, color=['b', 'r', 'g', 'y', 'c', 'm', 'y', 'k', 'c', 'g', 'b'])ax.set_xticks(x, movie_name, fontsize=10)plt.show()

运行结果:
在这里插入图片描述

4. 饼图

饼图由不同类别数据所占的比例构成,一般用来展示不同类别的数据所占总体的比例。

import numpy as np
import matplotlib.pyplot as plt#中文格式
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseif __name__ == '__main__':fig = plt.figure(figsize=(15,8))ax = fig.add_subplot()data = [23, 17, 35, 29, 12]data_label = ['C', 'C++', 'Java', 'Python', 'PHP']ax.pie(data, labels=data_label, autopct='%1.2f%%', colors=['red', 'blue', 'yellow', 'green', 'orange'])plt.show()

运行结果:
在这里插入图片描述

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

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

相关文章

求购EV代码签名证书,看看性价比最优选项要多少钱?

在当今的数字化时代,EV代码签名证书作为一种强化软件安全防线的顶级数字证书,承担着验证软件源码真伪和完整性的重要任务。对于软件开发者和公司来说,购置EV代码签名证书无疑是必不可少的,而其年度费用也成为各方密切关注的核心议…

【计算机网络】DNS/ICMP协议/NAT技术

文章目录 一、DNS(Domain Name System)1.DNS背景2.域名3.浏览器中输入url后,发生的事情 二、ICMP协议1.什么是ICMP协议2.ICM功能3.ICMP的报文格式4.ping命令5.traceroute命令 三、NAT技术1.NAT技术背景2.NAT IP转换过程3.NAPT4.NAT技术的缺陷5.NAT和代理服务器 四、TCP/IP五层模…

React PureComponent 和 React.memo()区别

1 注意 ● PureComponent和memo仅作为性能优化的方式存在 ● 不要依赖它来阻止渲染,会产生BUG ● PureComponnet 和memo 都是通过对 props 值的浅比较来决定该组件是否需要更新的。 2 PureComponent 和React.memo() 区别 PureComponent 和React.memo()都是React优化…

Idea安装gideabrowser插件

Idea安装gideabrowser插件 一、安装二、设置教程 一、安装 gideabrowser链接地址 二、设置教程 在人生的舞台上,奋力拼搏,才能演绎出最精彩的人生之歌。面对挑战和困难,不妥协、不气馁,只争朝夕,方显坚韧与智慧。努…

如何使用Docker部署WBO容器并实现固定公网地址访问本地白板界面

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

fpmarkets澳福归类总结不同十字星K线的含义

不同的十字星K线代表了不同的含义,各位投资者你们知道这些十字星K线的含义吗?今天fpmarkets澳福就归类总结一下。 首先墓碑十字星和蜻蜓十字星归为一类,重点以墓碑十字星作为参考: 墓碑十字星是一种熊市反转烛台模式,当…

MySQL:错误ERROR 1045 (28000)详解

1.问题说明 有时候我们登录Mysql输入密码的时候,会出现这种情况: mysql -u root -p Enter Password > ‘密码’ 错误:ERROR 1045 (28000): Access denied for user ‘root’‘localhost’ (using password: YES) 或者:错误…

备战蓝桥杯Day17 - 链表

链表 基本概念 链表是由一系列节点组成的元素集合。 每个节点包含两部分:数据域 item 、指向下一个节点的指针 next 通过节点之间的相互链接,形成一个链表 1. 链表的初始化 # 手动建立链表 # 链表的初始化 class Node(object):def __init__(self, …

[图论] 树上不重复权值的路径数

解题思路 整体思路,枚举路径上每个点,记录这个点 u 可以向上延伸到多远,如果可延伸到 x 点,则这个点对答案的贡献为 dep[u] - dep[x](下文的maxx) 1 为什么枚举是向上延伸?因为可以记录已走过路径中已有的权值&…

【k8s配置与存储--配置管理】

1、ConfigMap的配置 1.1 ConfigMap介绍 ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pod 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 ConfigMap 将你的环境配置信息和容器镜像解耦,便于应用配…

STM32 I2C学习

IIC总线协议介绍 IIC:Inter Integrated Circuit,集成电路总线,是一种同步、串行、半双工通信总线。 同步:需要时钟线 串行:数据一位一位地发送 半双工:同一时间只能接受或发送,不能同时发送或…

input框 自动获取焦点

<el-input style"width:200px" autofocus v-model"leftListname"></el-input> element-ui 的 el-input 组件的 autofocus 属性在某些情况下不能实现自动聚焦,有几个可能的原因: 1. autofocus 在移动设备上不被支持。如果是在移动设备上访问,au…

Redis 发布订阅详解

Redis 发布订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。 Redis 有两种发布订阅模式 基于频道&#xff08;Channel&#xff09;的发布订阅基于模式&#xff…

ChatGPT学习第三周

&#x1f4d6; 学习目标 ChatGPT在各行各业的应用 探索ChatGPT在不同领域&#xff08;如教育、客户服务等&#xff09;的实际应用案例。 ChatGPT的局限性和挑战 讨论ChatGPT面临的挑战&#xff0c;包括偏见、误解及其限制。 ✍️ 学习活动 学习资料 《人工智能通用大模型(…

Vue3学习——路由prop配置、replace

写法一 在路由中可直接写prop: true&#xff0c;即可在页面中defineProps使用 相当于&#xff08;<Detail id“1” name“2” />&#xff09;,但只能是params {path: /service,name: 服务,component: () > import(../views/Service/index)&#xff0c;props: true}…

SQLlabs46关

看看源码 最终我们的id是放到order by后面了 如果我们直接用列去排序 ?sortusername/password username&#xff1a; passward 可以看到顺序是不同的&#xff0c;当然第一列第二列第三列也可以&#xff0c;基本上都是这个原理&#xff0c;那怎么去实现注入呢&#xff0c;我…

本地复制文本无法在Ubuntu终端中粘贴问题

在公司&#xff0c;安装Ubuntu环境后无法粘贴。 查询并自己实践后&#xff0c;解决方法如下&#xff1a; 1. sudo apt-get autoremove open-vm-tools 2. sudo apt-get install open-vm-tools-desktop 3.重启虚拟机 又可以愉快的复制粘贴了

【GPTs分享】GPTs分享之Write For Me

Write For Me 是一个专门定制的GPT版本&#xff0c;旨在为用户提供高质量的文本内容创作服务。它适用于各种写作需求&#xff0c;从商业计划、学术文章到创意故事等。下面是从简介、主要功能、使用案例、优点和局限性几个方面对Write For Me 的详细介绍。 简介 Write For Me …

Java 学习和实践笔记(22):package(包机制)、JDK常见的包、类的导入

前面学的类&#xff0c;每创建一个类&#xff0c;在电脑上就是创建了一个对应的类文件。而package 相当于文件夹对文件的管理作用。主要用于管理类、用于解决类的重名问题。这个含义很简单。因为实际的程序&#xff0c;类可能有成千上万个&#xff0c;这样就需要把不同功能的类…

「连载」边缘计算(十九)02-22:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; 从启动函数Start(&#xff09;中可以看到&#xff0c;其以go routine的方式启动很多后台处理服务&#xff0c;具体如下。 1&#xff09;初始化edged的kubeClient&#xff0c;具体如下所示。 // use self defined client to replace fake kube…