python的matplotlib库

2023-10-31

目录

一、figure

二、plot

三、savefig

四、show

五、xticks

六、xlable和ylable

 七、title

八、grid

 九、plot绘制多条线

 十、legend

十一、scatter

 十二、bar

 十三、barh

十四、绘制直方图


Python的底层绘图库,主要做数据可视化图表

Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。

Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。

Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。

使用的时候,我们可以使用 import 导入 pyplot 库,并设置一个别名 plt:

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,24,22,18,15]

plt.plot(x,y)
plt.show()

一、figure

可以理解为绘图之前,布置一张合适的画板,设置图片的大小,分辨率

函数定义如下

figure(num=None,  # autoincrement if None, else integer from 1-N
           figsize=None,  # defaults to rc figure.figsize
           dpi=None,  # defaults to rc figure.dpi
           facecolor=None,  # defaults to rc figure.facecolor
           edgecolor=None,  # defaults to rc figure.edgecolor
           frameon=True,
           FigureClass=Figure,
           clear=False,
           **kwargs
           )

figsize:设置画板的长,宽。是一个元组

dpi:在图像模糊时可以传入dpi参数,使图像更清晰

代码实例

fig = plt.figure(figsize=(20,8),dpi=80)

二、plot

绘制图的形状

函数定义如下

def plot(*args, scalex=True, scaley=True, data=None, **kwargs):
# 画单条线
plot([x], y, [fmt], *, data=None, **kwargs)
# 画多条线
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

参数说明:

  • x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。
  • fmt:可选,定义基本格式(如颜色、标记和线条样式)。
  • **kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。
>>> plot(x, y)        # 创建 y 中数据与 x 中对应值的二维线图,使用默认样式
>>> plot(x, y, 'bo')  # 创建 y 中数据与 x 中对应值的二维线图,使用蓝色实心圈绘制
>>> plot(y)           # x 的值为 0..N-1
>>> plot(y, 'r+')     # 使用红色 + 号

颜色字符color:'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。

线型参数linestyle:'‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。

标记字符:'.' 点标记,',' 像素标记(极小点),'o' 实心圈标记,'v' 倒三角标记,'^' 上三角标记,'>' 右三角标记,'<' 左三角标记...等等。

三、savefig

将绘制的图保存到本地

plt.savefig("./img.png")   #保存图片

可以保存为svg矢量图格式,放大不会有锯齿

四、show

plt.show()    #显示绘制的图片

五、xticks

设置x轴的刻度

_xtick_label = [i/2 for i in  range(4,49)]
plt.xticks(_xtick_label)

from matplotlib.font_manager import FontProperties  # 导入FontProperties
my_font = FontProperties(fname="C:\Windows\Fonts\simkai.ttf", size=14)  # 设置中文字体


_xtick_labels = ["10点{}分".format(i) for i in  range(60)]
_xtick_labels += ["11点{}分".format(i) for i in  range(60)]

plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=270,fontproperties=my_font)

六、xlable和ylable

添加x和y轴的标签

plt.ylabel("温度",fontproperties=my_font)

 七、title

设置该图的标题

plt.title("10点到12点每分钟气温变化情况",fontproperties=my_font)

八、grid

设置图表中的网格线

def grid(visible=None, which='major', axis='both', **kwargs):
  • b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true。
  • which:可选,可选值有 'major'、'minor' 和 'both',默认为 'major',表示应用更改的网格线。
  • axis:可选,设置显示哪个方向的网格线,可以是取 'both'(默认),'x' 或 'y',分别表示两个方向,x 轴方向或 y 轴方向。
  • **kwargs:可选,设置网格样式,可以是 color='r', linestyle='-' 和 linewidth=2,分别表示网格线的颜色,样式和宽度。
  • color:'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。

    linestyle'‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。

    linewidth设置线的宽度,可以设置一个数字。

  • alpha:设置透明度

#绘制网格
plt.grid()

 九、plot绘制多条线

x1 = np.array([0, 1, 2, 3])
y1 = np.array([3, 7, 5, 9])
x2 = np.array([0, 1, 2, 3])
y2 = np.array([6, 2, 13, 10])

plt.plot(x1, y1, x2, y2)

 十、legend

添加图例

plt.plot(x1, y1,label="自己")
plt.plot(x2, y2,label="同桌")
#添加图例
plt.legend(prop=my_font,loc="upper right")

参数介绍:

prop:设置字体格式

loc:

===============   =============
Location String   Location Code
===============   =============
'best'            0
'upper right'     1
'upper left'      2
'lower left'      3
'lower right'     4
'right'           5
'center left'     6
'center right'    7
'lower center'    8
'upper center'    9
'center'          10
===============   =============

十一、scatter

绘制散点图

def scatter(
        x, y, s=None, c=None, marker=None, cmap=None, norm=None,
        vmin=None, vmax=None, alpha=None, linewidths=None, *,
        edgecolors=None, plotnonfinite=False, data=None, **kwargs):

参数说明:

x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。

marker:点的样式,默认小圆圈 'o'。

cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。

norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

vmin,vmax::亮度设置,在 norm 参数存在时会忽略。

alpha::透明度设置,0-1 之间,默认 None,即不透明。

linewidths::标记点的长度。

edgecolors::颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。

plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

**kwargs::其他参数。

y_3 = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,23,24]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,3,13,17,10,11,10,10,5,3]

x_3 = range(1,32)
x_10 = range(51,82)
colors = [0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100,10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100,110,120,130,140,150,160]

plt.scatter(x_3,y_3,c=colors,cmap='viridis')
plt.scatter(x_10,y_10,c=colors,cmap='viridis')

 十二、bar

用来绘制条形图

from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties  # 导入FontProperties
my_font = FontProperties(fname="C:\Windows\Fonts\simkai.ttf", size=14)  # 设置字体

fig = plt.figure(figsize=(20,15),dpi=80)

a = ["战狼2","速度与激情8","功夫熊猫","西游伏魔篇"]
b = [56.01,26.94,17.54,16.49]

plt.bar(range(len(a)),b,width=0.3)

plt.xticks(range(len(a)),a,fontproperties=my_font,rotation=90)

plt.savefig("./img.png")

plt.show()

绘制多次条形图

from matplotlib import pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties  # 导入FontProperties
my_font = FontProperties(fname="C:\Windows\Fonts\simkai.ttf", size=14)  # 设置字体

fig = plt.figure(figsize=(20,8),dpi=80)

a = ["战狼2","速度与激情8","功夫熊猫","西游伏魔篇"]
b_14 = [2358,399,2358,362]
b_15 = [123457,156,2045,168]
b_16 = [15746,312,4497,319]

bar_width = 0.2

x_14 = list(range(len(a)))
x_15 = [i + bar_width for i in x_14]
x_16 = [i + bar_width * 2 for i in x_14]

plt.bar(range(len(a)),b_14,width=bar_width,label="9月14日")
plt.bar(x_15,b_15,width=bar_width,label="9月15日")
plt.bar(x_16,b_16,width=bar_width,label="9月16日")

plt.legend(prop=my_font)

plt.xticks(x_15,a,fontproperties=my_font)


plt.savefig("./img.png")

plt.show()

 

 十三、barh

绘制横向条形图

a = ["战狼2","速度与激情8","功夫熊猫","西游伏魔篇"]
b = [56.01,26.94,17.54,16.49]

plt.barh(range(len(a)),b,height=0.3,color="#EEEE00")

plt.yticks(range(len(a)),a,fontproperties=my_font)

plt.grid(alpha=0.3)

十四、绘制直方图

组距:指每个小组的两个端点间的距离

组数 \doteq 极差/组距 = (max(a) - min(a)) / bin_width 

def hist(
        x, bins=None, range=None, density=False, weights=None,
        cumulative=False, bottom=None, histtype='bar', align='mid',
        orientation='vertical', rwidth=None, log=False, color=None,
        label=None, stacked=False, *, data=None, **kwargs):
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties  # 导入FontProperties
my_font = FontProperties(fname="C:\Windows\Fonts\simkai.ttf", size=14)  # 设置字体

fig = plt.figure(figsize=(20,8),dpi=80)

a = [120,98,125,131,124,139,131,117,128,108,135,138,131,102,107,114,119,128,128,141]

d = 5 #组数
num_bins = (max(a) - min(a)) // d;

plt.hist(a,num_bins)

plt.xticks(range(min(a),max(a)+d,d))

plt.grid()

plt.savefig("./img.png")

plt.show()

频数图

 当d不能被整除时,会有一些偏移

绘制频率图

设置参数 normed=True

plt.hist(a,num_bins,normed=True)

 频率图

用bar绘制直方图

from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties  # 导入FontProperties
my_font = FontProperties(fname="C:\Windows\Fonts\simkai.ttf", size=14)  # 设置字体

fig = plt.figure(figsize=(20,8),dpi=80)

interval = [0,5,10,15,20,25,30,35,40,45,60,90]
width = [5,5,5,5,5,5,5,5,5,15,30,60]
quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]

plt.bar(range(len(interval)),quantity,width=1)

_x = [i-0.5 for i in range(len(width)+1)]
_xtick_labels = interval+[150]

plt.xticks(_x,_xtick_labels)

plt.grid()

plt.savefig("./img.png")

plt.show()

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python的matplotlib库 的相关文章

  • 如何在多进程系统中实现锁定?

    我们正在并行运行许多詹金斯项目 我们使用 python 并且选择使用 pyenv 管理虚拟环境 不幸的是 pyenv 有一个众所周知的竞争条件 https github com yyuu pyenv issues 174 为了解决这个问题
  • 如何避免使用 python 处理空的标准输入?

    The sys stdin readline 返回之前等待 EOF 或新行 所以如果我有控制台输入 readline 等待用户输入 相反 我想打印帮助并在没有需要处理的情况下退出并显示错误 而不是等待用户输入 原因 我正在寻找一个Pytho
  • 使用python查找txt文件中字母出现的次数

    我需要从 txt 文件中读取该字母并打印 txt 文件中出现的次数 到目前为止 我已经能够在一行中打印内容 但计数有问题 有人可以指导吗 infile open grades txt content infile read for char
  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 从 Azure ML 实验中访问 Azure Blob 存储

    Azure ML 实验提供了通过以下方式读取 CSV 文件并将其写入 Azure Blob 存储的方法 Reader and Writer模块 但是 我需要将 JSON 文件写入 blob 存储 由于没有模块可以执行此操作 因此我尝试在Ex
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • 如何确保 re.findall() 停止在正确的位置?

    这是我的代码 a import re re findall r lt title gt lt title gt a 结果是 title aaa
  • 在Python上获取字典的前x个元素

    我是Python的新手 所以我尝试用Python获取字典的前50个元素 我有一本字典 它按值降序排列 k 0 l 0 for k in len dict d l 1 if l lt 51 print dict 举个小例子 dict d m
  • Python HMAC:类型错误:字符映射必须返回整数、None 或 unicode

    我在使用 HMAC 时遇到了一个小问题 运行这段代码时 signature hmac new key secret key msg string to sign digestmod sha1 我收到一个奇怪的错误 File usr loca
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • 给定一个排序数组,就地删除重复项,使每个元素仅出现一次并返回新长度

    完整的问题 我开始在线学习 python 但对这个标记为简单的问题有疑问 给定一个排序数组 就地删除重复项 使得每个 元素只出现一次并返回新的长度 不分配 另一个数组的额外空间 您必须通过修改输入来完成此操作 数组就地 具有 O 1 额外内
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 如何指示 urwid 列表框的项目数多于当前显示的项目数?

    有没有办法向用户显示 urwid 列表框在显示部分上方 下方有其他项目 我正在考虑类似滚动条的东西 它可以显示条目的数量 或者列表框顶部 底部的单独栏 如果这个行为无法实现 有哪些方法可以实现这个通知 在我的研究过程中 我发现这个问题 ht
  • 无法通过 Python 子进程进行 SSH

    我需要通过堡垒 ssh 进入机器 因此 该命令相当长 ssh i
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 如何获取pandas中groupby对象中的组数?

    我想知道有多少个独特的组需要执行计算 给定一个名为 groupby 的对象dfgroup 我们如何找到组的数量 简单 快速 Pandaic ngroups 较新版本的 groupby API pandas gt 0 23 提供了此 未记录的

随机推荐

  • java水仙花数(详解)

    水仙花数 就是 有一个三位数 它的每一位上的数字的平方的和等于它本身 例如 153 1 1 5 5 3 3 也就是int i a a a b b b c c c 底层逻辑清楚了 代码也就清楚了 如下 public class shuixia
  • idea服务器与项目连接数据库连接,idea和服务器连接数据库连接

    idea和服务器连接数据库连接 内容精选 换一换 用户通过psycopy2连接GaussDB for openGauss 服务器时 可以通过开启SSL加密客户端和服务器之间的通讯 在使用SSL时 默认用户已经获取了服务端和客户端所需要的证书
  • 浅析互联网+的定义及核心

    互联网 和O2O在本质上十分接近 都是强调互联网 Online 与实体经济 Offline 融合互动并促进后者的转型升级 但 互联网 被赋予了更广的意义 从现状来看 互联网 处于初级阶段 是个都在热谈但是没有落实的理论阶段 各领域针对 互联
  • 基础数学知识

    1 希尔伯特空间是欧几里得空间的推广 即希尔伯特空间不再局限于有限维的情形而是无限维的欧几里得空间 向量内积 点乘 和外积 叉乘 的区别 https www cnblogs com gxcdream p 7597865 html 2 张量积
  • transE

    文章来源 http chuansong me n 2553541 我们为什么要关注表示学习这个问题呢 我们可以看关于机器学习的一个重要公式 这个公式有三个部分组成 第一部分是关于数据或者问题的表示 在表示的基础上我们要去设计或者构建一个目标
  • c++中的智能指针unique_ptr中get()的用法

    bar是一个智能指针 p是一个普通指针 p bar get 后 bar并非被释放 也就相当于指针p和智能指针bar共同管理一个对象 所以就 p做的一切 都会反应到bar指向的对象上
  • python实现人脸关键部位检测(附源码)

    人脸特征提取 本文主要使用dlib库中的人脸特征识别功能 dlib库使用68个特征点标注出人脸特征 通过对应序列的特征点 获得对应的脸部特征 下图展示了68个特征点 比如我们要提 取眼睛特征 获取37到46这几个特征点即可 在代码中增加类似
  • 非对称式加密(RSA算法案例)

    一 非对称式加密 非对称密码指的是加密和解密使用的不是相同的钥匙 用户A密钥加密后的信息只有他自己用解密密钥才能解密 如果知道了其中一个密钥 并不能计算另一个 因此公开一对密钥中的一个 并不会危害到另一个的秘密性质 我们将公开是密钥称为公钥
  • Altium Designer 3D封装下载及导入教程

    本帖最后由 绝影 于 2013 9 27 17 01 编辑 首先 先晒几个图 是不是很逼真啊 教程 我们常用的3D封装可以在这个网站下载 http www 3dcontentcentral cn Search aspx arg 0805 下
  • csharp: Data binding in WPF DataGrid control

  • docker - 安装(ubuntu20.04+cuda11.1)

    docker安装 ubuntu20 04 1 安装docker 替换国内源 apt get install vim 安装vim编辑器 vim etc apt sources list 编辑源文件 删掉内容 换成以下的国内源 添加阿里源 de
  • 算法笔记——二分查找

    算法笔记 二分查找 二分查找 用于在有序数列中查找目标元素的位置 关于区间边界的问题 二分法 区间的定义一般为两种 左闭右闭即 left right 或者左闭右开即 left right 左闭右闭 while left lt right 要
  • Tcpdump抓包实操

    文章目录 1 常用命令 抓取一个固定主机ip的端口号 并保存在本地 后台抓取多个主机的数据包 按抓包的时间保存数据包 2 自定义操作 自定义网络接口 自定义端口 自定义抓取数据包的个数 自定义指定协议 参考链接 刚从wireshark转到t
  • Python遇见的AttributeError: module 'random' has no attribute 'uniform'问题

    在使用python的random库的时候出现了以下错误 Traceback most recent call last File F python脚本 random py line 1 in
  • Nacos 开源版的使用测评

    文章目录 一 Nacos的使用 二 Nacos和Eureka在性能 功能 控制台体验 上下游生态和社区体验的对比 三 记使使用Nacos中容易犯的错误 四 对Nacos开源提出的一些需求 一 Nacos的使用 这里配置mysql的连接方式
  • PicList 文件上传+云存储管理工具

    前言 PicGo是一个非常好的图片上传工具 对于写博客的人来说十分实用 但我在使用的时候 发现了一些痛点 比如图片上传后 无法在相册内云同步删除 这样需要更换图片的时候就比较麻烦 另外PicGo不能获取使用软件前上传的图片列表 也不太方便
  • Redis订阅了一段时间后订阅失效了( redisTemplate.convertAndSend)

    有时候 有些服务长时间运行后 对redis的订阅失效了 但是只要重启服务器又可以了 这个原因如下 引起这一原因是redis conf中的tcp keepalive影响的 这个配置默认是0 官方建议值为60 单位是秒 此配置的作用是检查健康的
  • 【持续更新】Markdown中数学公式及符号整理

    Markdown中数学公式及符号整理 在写博客 写文档中经常需要编辑各种形式的数学公式 对于简单的公式 可以在word中编辑 对于复杂的公式一般以截图 粘贴的方式 利用Markdown中的LaTeX插件 公式均以代码形式编辑 写文档时十分方
  • 合成模式代码示例

    package com example hecheng public interface IFile 返回自己的实例 IFile getComposite 某个商业方法 void sampleOperation 获取深度 int getDe
  • python的matplotlib库

    目录 一 figure 二 plot 三 savefig 四 show 五 xticks 六 xlable和ylable 七 title 八 grid 九 plot绘制多条线 十 legend 十一 scatter 十二 bar 十三 ba