Matplotlib光速入门-从安装到绘图实战
文章目录
- 简介
- 安装
- 实战
- 画框
- 线图
- 散点图
- 柱状图
- 饼状图
- 等高线图
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
Matplotlib是Python一个强大的绘图库,搭配NumPy库的使用,可以满足绝大部分的绘图需求,各种你能想到的图表基本都支持,使用代码即可进行绘制,如果画不出来那一定是你的问题(doge)。
本文主要参考Matplotlib文档,归纳总结Matplotlib常用方法,只举例了部分,所有函数和相关参数不能遍举,更多可参考Matplotlib文档。
安装
如果使用pip安装:
pip install matplotlib
如果使用conda安装:
conda install matplotlib
如果使用的是Pycham,可以直接打开File->settings->Project:->Python Interpreter中安装库。
搜索matplotlib,点击安装即可。
实战
画框
fig
是Figure缩写,即外框,可以包含多个内框。ax
是Axes缩写,即内框,里面可以画各种图。plt
是导入Matplotlib库时的重命名缩写,可以理解为一整张画布,直接添加即可,但细节修改用ax
更好。
两种方法都可,比如以下代码是等价的:
import matplotlib.pyplot as plt
fig, ax = plt.subplots() # 创建一个外框(默认含一个内框),返回两个参数
ax.plot([1, 2], [1, 2]) # 在内框上画一条直线,点(1,1)到(2,2)
plt.show() # 显示绘图
import matplotlib.pyplot as plt
plt.plot([1, 2], [1, 2]) # 分别是x和y
plt.show()
如一张画布上多个画框:
from matplotlib import pyplot as plt# subplot三个参数:垂直方向画几张图,水平方向画几张图,当前是第几张图
plt.subplot(2, 2, 1) # 即划分1×2个画框,当前是第1个
plt.title("1")
plt.subplot(2, 2, 2) # 当前为第2个
plt.title("2")
plt.subplot(2, 2, 3) # 当前为第3个
plt.title("3")
plt.subplot(2, 2, 4) # 当前为第4个
plt.title("4")
plt.subplots_adjust(wspace=0.5, hspace=0.5) # 调整间距plt.show()
引用官网的一张图,除了数据外,一张图表还包含了很多元素,如标题(Title)、说明(Legend)、刻度(Minor tick)、刻度名(Minor tick label)、网格(Grid)、标记(Marker)、x轴y轴等。
相关元素的设置可以参考上图或文档,举个栗子:
import numpy as np
from matplotlib import pyplot as pltplt.title("我的图表") # 设置图表名
plt.xlabel("X轴[mm]") # 设置x轴名
plt.ylabel("Y轴[cm]") # 设置y轴名
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字符编码
plt.rcParams['axes.unicode_minus'] = False # 编码正常显示负号
plt.xticks(np.arange(0, 60, 5)) # x刻度,从0-60,间隔5
plt.yticks(np.arange(0, 15, 1)) # y刻度,从0-15,间隔1
# x和y的值,即连接点(10,2)、(25,7)、(50,13),设置颜色等可选参数
plt.plot([10, 25, 50], [2, 7, 13], label="折线", color="#FF0000")
plt.legend() # 显示说明
plt.grid() # 显示网格
plt.show() # 显示绘图
(插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/
线图
使用plot()函数。
import numpy as np
from matplotlib import pyplot as plt# ------直线------
plt.plot([0, 10], [0, 5], label="直线", linewidth="3") # 线宽设置3
# ------抛物线------
x = np.linspace(0, 10, 100) # 1-10均匀序列
plt.plot(x, 0.05*x*x, label="抛物线")
# ------三角函数------
plt.plot(x, np.sin(x), label="正弦曲线")
plt.plot(x, np.cos(x), label="余弦曲线")
# 其他的举一反三,给出函数和定义域即可
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.legend()
plt.show()
各种线条格式:
import numpy as np
from matplotlib import pyplot as pltx = np.linspace(1, 10, 30)
plt.plot(x, x, '-')
plt.plot(x, x+1, '--')
plt.plot(x, x+2, '-.')
plt.plot(x, x+3, 'o')
plt.plot(x, x+4, ',')
plt.plot(x, x+5, 'x')
plt.plot(x, x+6, 'd')
plt.plot(x, x+7, '<')
plt.plot(x, x+8, '>')
plt.plot(x, x+9, 'v')
plt.plot(x, x+10, '+')
plt.plot(x, x+11, '*')
plt.plot(x, x+12, '-')
plt.plot(x, x+13, 'h')
plt.plot(x, x+14, '|')
plt.plot(x, x+15, '1')
plt.plot(x, x+16, '2')
plt.plot(x, x+17, '3')
plt.plot(x, x+18, '4')
plt.plot(x, x+19, '8')plt.show()
散点图
使用scatter()函数。
import numpy as np
from matplotlib import pyplot as plt
plt.figure(figsize=(10, 5))
# ------均匀分布------
plt.subplot(1, 2, 1)
plt.title("均匀分布")
n = 800 # 样本数
x = np.random.rand(n) # 随机坐标点
y = np.random.rand(n)
colors = np.random.rand(n) # 随机颜色
size = np.random.rand(n)*100 # 随机大小
plt.scatter(x, y, c=colors, s=size, alpha=0.3) # alpha是透明度
# ------正态分布------
plt.subplot(1, 2, 2) # 第二个画框
plt.title("正态分布")
x = np.random.randn(n)
y = np.random.randn(n)
plt.scatter(x, y, c=colors, s=size, alpha=0.3)plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()
柱状图
使用bar()函数。
import numpy as np
from matplotlib import pyplot as plt
plt.figure(figsize=(10, 5))
# ------图1------
plt.subplot(1, 2, 1)
x = np.arange(8) # 0-7
y = np.random.randint(-3, 5, 8) # -3到5随机8个数
plt.bar(x, y, width=0.6)
plt.title('图2')
plt.axhline(0) # 水平线
# ------图2------
plt.subplot(1, 2, 2)
x = np.arange(3) # 1-3
width = 0.2 # 设置柱宽
plt.bar(x, [4, 6, 2], color='green', width=width, label="A")
plt.bar([i+width for i in x], [3, 7, 4], color='blue', width=width, label="B")
plt.bar([i+2*width for i in x], [5, 6, 4], color='red', width=width, label="C")
plt.xticks([i+width for i in x], ["2020", "2021", "2022"]) # 设置刻度
plt.title('图2')plt.legend()
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()
还可以使用hist()函数。
import numpy as np
from matplotlib import pyplot as pltx1 = np.random.normal(2.5, 0.5, 1000) # 期望2.5,标准差0.5,输出大小1000
x2 = np.random.normal(5, 2, 1000)
x3 = np.random.normal(7.5, 1, 1000)
plt.hist(x1, bins=100, alpha=0.5, label="A") # 100个数据,透明的0.5,标签A
plt.hist(x2, bins=100, alpha=0.5, label="B")
plt.hist(x3, bins=100, alpha=0.5, label="C")plt.legend()
plt.show()
饼状图
使用pie()函数。
from matplotlib import pyplot as plt# explode分裂,autopct百分比格式
plt.pie([0.4, 0.6], labels=["A", "B"], explode=(0, 0.05), autopct='%0.0f%%')
plt.legend()
plt.show()
等高线图
使用contourf函数。
import numpy as np
from matplotlib import pyplot as plt
# ------数据------
x = np.linspace(-3, 3, 256) # -3到3等差256个点
y = np.linspace(-3, 3, 256)
X, Y = np.meshgrid(x, y) # 计算x和y的相交点
Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 - Y**2) # 计算Z的坐标
levels = np.linspace(Z.min(), Z.max(), 7)
# ------图1------
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.contour(X, Y, Z)
# ------图2------
plt.subplot(1, 2, 2)
plt.contourf(X, Y, Z)plt.show()
原创不易,请勿转载(本不富裕的访问量雪上加霜 )
博主首页:https://wzlodq.blog.csdn.net/
来都来了,不评论两句吗Matplotlib光速入门-从安装到绘图实战相关推荐
- 246.三元图的应用与绘图实战
三元图在微生物组研究中的应用 本节作者:吴一磊,中科院微生物所 版本1.0.5,更新日期:2020年6月28日 本项目永久地址:https://github.com/YongxinLiu/Microb ...
- p5.js 光速入门中文教程
本文简介 点赞 + 关注 + 收藏 = 学会了 本文的目标是和各位工友一起有序的快速上手 p5.js ,会讲解 p5.js 的基础用法. 本文会涉及到的内容包括: 项目搭建 p5.js 基础2D图形 ...
- Matplotlib快速入门
1. Matplotlib 常用模块 Matplotlib 库中主要包含两个重要模块 pyplob 和 pylab.pyplot 是 Matplotlib 中的一个重要模块,在后续教程中,我们会经常使 ...
- 用python画大白_[Python][可视化]matplotlib基础入门
Python包matplotlib画图入门,以折线图为例. 在使用之前,导入matplotlib包,设置中文字体 import matplotlib.pyplot as plt %matplotlib ...
- python网络爬虫开发从入门到精通_Python突击-从入门到精通到项目实战
原标题:Python突击-从入门到精通到项目实战 python语言近年来越来越被程序相关人员喜欢和使用,因为其不仅简单容易学习和掌握,而且还有丰富的第三方程序库和相应完善的管理工具:从命令行脚本程序到 ...
- [MySQL光速入门]020 事务
TCL 事务控制语言 SQL的四种语言 DDL(Data Definition Language)数据库定义语言 建表, 建库, 修改表结构 DML(Data Manipulation Languag ...
- Matplotlib从入门到精通05-样式色彩秀芳华
Matplotlib从入门到精通05-样式色彩秀芳华 总结 Matplotlib从入门到精通05-样式色彩秀芳华 导入依赖 一.matplotlib的绘图样式(style)¶ 1.matplotlib ...
- AI绘图实战(一):制作购物车图标icon | Stable Diffusion成为设计师生产力工具
S:你安装stable diffusion就是为了看小姐姐么? I :当然不是,当然是为了公司的发展谋出路~~ 预先学习: 安装及其问题解决参考:<Windows安装Stable Diffusi ...
- AI绘图实战(十):制作线稿矢量图之包头巾的女人,画矢量图/生成矢量图/导出矢量图/直出svg/vector studio插件使用 | Stable Diffusion成为设计师生产力工具
S:AI能取代设计师么? I :至少在设计行业,目前AI扮演的主要角色还是超级工具,要顶替?除非甲方对设计效果无所畏惧~~ 预先学习: 安装及其问题解决参考:<Windows安装Stable D ...
最新文章
- python适合做后端开发吗-Python后端开发是什么职位?
- mongodb 默认端口号_快2020年了,该如何面对BATJM对MongoDB灵魂式的拷问呢?
- 产品团队的批判性思维:如何通过合理的决策带来合理的结果?
- python win10 桌面_Python3如何实现Win10桌面自动切换
- vue 2个方法先后执行_有效快速制作工资条的2个方法
- FreeSWITCH 下载地址
- webpack 编译完成执行代码
- java 基础做增删改查教学_Java Mybatis 增删改查 简单使用 入门 简版
- 3.linux(ubuntu)常用服务器搭建
- 如何使用Visual Studio 2017建立一个C语言项目
- 小程序apkg还原_谈一谈还原解包后小程序页面wxss样式的若干方法
- Kafka拉取某一个时间段內的消息
- 烽火戏诸侯用460万字写出最好的小说江湖,《雪中悍刀行》你服吗
- Could not initialize class com.fasterxml.jackson
- 【渝粤教育】电大中专电子商务网站建设与维护 (18)作业 题库
- 【红日靶场系列】ATTCK红队评估3
- 超分重建数据集 DIV2K Flickr2K 下载地址【有效分享】
- 徐徐落地 2009年云计算五大趋势盘点
- 怎么画系统用例图?(内含图例)
- dfs算法详解(n皇问题实现)
热门文章
- 时间间隔感测试器2.0
- Javascript深入浅出理解----汤姆大叔博客(二)
- python getattr和getattribute_Python的__getattr__和__getattribute__
- selinux中Enforcing, Permissive 和Disable这三种模式的区别
- windows命令行(Command Prompt / Console)字体设置
- 一文搞懂 MySQL 索引
- 浅析景区慢直播的需求与基于视频技术的解决方案
- 聊聊如何进行代码混淆
- mysql select查询字段_MySQL基础:SELECT查询语句
- 设备兼容性 -Device Compatibility