百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

基于Python的matplotlib基础介绍(python语言中matplotlib基础包的作用)

off999 2024-10-12 06:10 26 浏览 0 评论

数据可视化非常重要,因为错误或不充分的数据表示方法可能会毁掉原本很出色的数据分析工作。


matplotlib 库是专门用于开发2D图表(包括3D图表)的,突出优点:


  • 使用起来极为简单。

  • 以渐进、交互式方式实现数据可视化。

  • 表达式和文本使用LaTeX排版。

  • 对图像元素控制力强。

  • 可输出PNG、PDF、SVG和EPS等多种格式。


安装

conda install matplotlib


或者

pip install matplotlib

matplotlib 架构


matplotlib 的主要任务之一,就是提供一套表示和操作图形对象(主要对象)以及它的内部对象的函数和工具。其不仅可以处理图形,还提供事件处理工具,具有为图形添加动画效果的能力。有了这些附加功能,matplotlib 就能生成以键盘按键或鼠标移动触发的事件的交互式图表。


从逻辑上来讲,matplotlib 的整体架构为3层,各层之间单向通信:


  • Scripting (脚本)层。

  • Artist (表现)层。


  • Backend (后端)层。

一、matplotlib的基本用法


import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 30) # 在区间内生成30个等差数
y = np.sin(x)
print('x = ', x)
print('y = ', y)

输出:

x =  [-3.14159265 -2.92493109 -2.70826953 -2.49160797 -2.2749464  -2.05828484
 -1.84162328 -1.62496172 -1.40830016 -1.19163859 -0.97497703 -0.75831547
 -0.54165391 -0.32499234 -0.10833078  0.10833078  0.32499234  0.54165391
  0.75831547  0.97497703  1.19163859  1.40830016  1.62496172  1.84162328
  2.05828484  2.2749464   2.49160797  2.70826953  2.92493109  3.14159265]
y =  [-1.22464680e-16 -2.14970440e-01 -4.19889102e-01 -6.05174215e-01
 -7.62162055e-01 -8.83512044e-01 -9.63549993e-01 -9.98533414e-01
 -9.86826523e-01 -9.28976720e-01 -8.27688998e-01 -6.87699459e-01
 -5.15553857e-01 -3.19301530e-01 -1.08119018e-01  1.08119018e-01
  3.19301530e-01  5.15553857e-01  6.87699459e-01  8.27688998e-01
  9.28976720e-01  9.86826523e-01  9.98533414e-01  9.63549993e-01
  8.83512044e-01  7.62162055e-01  6.05174215e-01  4.19889102e-01
  2.14970440e-01  1.22464680e-16]
  • 画一条曲线
plt.figure() # 创建一个新的窗口
plt.plot(x, y) # 画一个x与y相关的曲线
plt.show()# 显示图像
  • 画多条曲线以及添加坐标轴和标签
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100) # 在区间内生成21个等差数
y = np.sin(x)
linear_y = 0.2 * x + 0.1

plt.figure(figsize = (8, 6)) # 自定义窗口的大小

plt.plot(x, y)
plt.plot(x, linear_y, color = "red", linestyle = '--') # 自定义颜色和表示方式

plt.title('y = sin(x) and y = 0.2x + 0.1') # 定义该曲线的标题
plt.xlabel('x') # 定义横轴标签
plt.ylabel('y') # 定义纵轴标签

plt.show()
  • 指定坐标范围 and 设置坐标轴刻度
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100) # 在区间内生成21个等差数
y = np.sin(x)
linear_y = 0.2 * x + 0.1

plt.figure(figsize = (8, 6)) # 自定义窗口的大小

plt.plot(x, y)
plt.plot(x, linear_y, color = "red", linestyle = '--') # 自定义颜色和表示方式

plt.title('y = sin(x) and y = 0.2x + 0.1') # 定义该曲线的标题
plt.xlabel('x') # 定义横轴标签
plt.ylabel('y') # 定义纵轴标签
plt.xlim(-np.pi, np.pi)
plt.ylim(-1, 1)

# 重新设置x轴的刻度
# plt.xticks(np.linspace(-np.pi, np.pi, 5))
x_value_range = np.linspace(-np.pi, np.pi, 5)
x_value_strs = [r'$\pi#39;, r'$-\frac{\pi}{2}#39;, r'$0#39;, r'$\frac{\pi}{2}#39;, r'$\pi#39;]
plt.xticks(x_value_range, x_value_strs)
plt.show() # 显示图像
  • 定义原点在中心的坐标轴
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
linear_y = 0.2 * x + 0.1

plt.figure(figsize = (8, 6)) 

plt.plot(x, y)
plt.plot(x, linear_y, color = "red", linestyle = '--') 

plt.title('y = sin(x) and y = 0.2x + 0.1')
plt.xlabel('x') 
plt.ylabel('y') 
plt.xlim(-np.pi, np.pi)
plt.ylim(-1, 1)

# plt.xticks(np.linspace(-np.pi, np.pi, 5))
x_value_range = np.linspace(-np.pi, np.pi, 5)
x_value_strs = [r'$\pi#39;, r'$-\frac{\pi}{2}#39;, r'$0#39;, r'$\frac{\pi}{2}#39;, r'$\pi#39;]
plt.xticks(x_value_range, x_value_strs)

ax = plt.gca() # 获取坐标轴
ax.spines['right'].set_color('none') # 隐藏上方和右方的坐标轴
ax.spines['top'].set_color('none')

# 设置左方和下方坐标轴的位置
ax.spines['bottom'].set_position(('data', 0)) # 将下方的坐标轴设置到y = 0的位置
ax.spines['left'].set_position(('data', 0)) # 将左方的坐标轴设置到 x = 0 的位置

plt.show() # 显示图像

  • legend图例

使用xticks()和yticks()函数替换轴标签,分别为每个函数传入两列数值。第一个列表存储刻度的位置,第二个列表存储刻度的标签

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
linear_y = 0.2 * x + 0.1

plt.figure(figsize = (8, 6)) 

# 为曲线加上标签
plt.plot(x, y, label = "y = sin(x)")
plt.plot(x, linear_y, color = "red", linestyle = '--', label = 'y = 0.2x + 0.1') 

plt.title('y = sin(x) and y = 0.2x + 0.1')
plt.xlabel('x') 
plt.ylabel('y') 
plt.xlim(-np.pi, np.pi)
plt.ylim(-1, 1)

# plt.xticks(np.linspace(-np.pi, np.pi, 5))
x_value_range = np.linspace(-np.pi, np.pi, 5)
x_value_strs = [r'$\pi#39;, r'$-\frac{\pi}{2}#39;, r'$0#39;, r'$\frac{\pi}{2}#39;, r'$\pi#39;]
plt.xticks(x_value_range, x_value_strs)

ax = plt.gca() 
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')


ax.spines['bottom'].set_position(('data', 0)) 
ax.spines['left'].set_position(('data', 0)) 

# 将曲线的信息标识出来
plt.legend(loc = 'lower right', fontsize = 12)
plt.show() 

legend方法中的loc 参数可选设置

位置字符串

位置编号

位置表述

‘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

正中间

二、柱状图

使用的方法:plt.bar

import numpy as np
import matplotlib.pyplot as plt

plt.figure(figsize = (16, 12))
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([3, 5, 7, 6, 2, 6, 10, 15])
plt.plot(x, y, 'r', lw = 5) # 指定线的颜色和宽度

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([13, 25, 17, 36, 21, 16, 10, 15])
plt.bar(x, y, 0.2, alpha = 1, color='b') # 生成柱状图,指明图的宽度,透明度和颜色
plt.show()

有的时候柱状图会出现在x轴的俩侧,方便进行比较,代码实现如下:

import numpy as np
import matplotlib.pyplot as plt

plt.figure(figsize = (16, 12))
n = 12
x = np.arange(n) # 按顺序生成从12以内的数字
y1 = (1 - x / float(n)) * np.random.uniform(0.5, 1.0, n)
y2 = (1 - x / float(n)) * np.random.uniform(0.5, 1.0, n)

# 设置柱状图的颜色以及边界颜色
#+y表示在x轴的上方 -y表示在x轴的下方
plt.bar(x, +y1, facecolor = '#9999ff', edgecolor = 'white')
plt.bar(x, -y2, facecolor = '#ff9999', edgecolor = 'white')

plt.xlim(-0.5, n) # 设置x轴的范围,
plt.xticks(()) # 可以通过设置刻度为空,消除刻度
plt.ylim(-1.25, 1.25) # 设置y轴的范围
plt.yticks(())

# plt.text()在图像中写入文本,设置位置,设置文本,ha设置水平方向对其方式,va设置垂直方向对齐方式
for x1, y in zip(x, y2):
    plt.text(x1, -y - 0.05, '%.2f' % y, ha = 'center', va = 'top')
for x1, y in zip(x, y1):
    plt.text(x1, y + 0.05, '%.2f' % y, ha = 'center', va = 'bottom')
plt.show()

三、散点图

import numpy as np
import matplotlib.pyplot as plt
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2
plt.scatter(x, y, s = area,c = colors, alpha = 0.8)

plt.show()

四、等高线图


import matplotlib.pyplot as plt
import numpy as np

def f(x, y):
    return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)

n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)
X, Y = np.meshgrid(x, y)  # 生成网格坐标 将x轴与y轴正方形区域的点全部获取
line_num = 10 # 等高线的数量

plt.figure(figsize = (16, 12))

#contour 生成等高线的函数
#前俩个参数表示点的坐标,第三个参数表示等成等高线的函数,第四个参数表示生成多少个等高线
C = plt.contour(X, Y, f(X, Y), line_num, colors = 'black', linewidths = 0.5) # 设置颜色和线段的宽度
plt.clabel(C, inline = True, fontsize = 12) # 得到每条等高线确切的值

# 填充颜色, cmap 表示以什么方式填充,hot表示填充热量的颜色
plt.contourf(X, Y, f(X, Y), line_num, alpha = 0.75, cmap = plt.cm.hot)

plt.show()

五、处理图片


import matplotlib.pyplot as plt
import matplotlib.image as mpimg # 导入处理图片的库
import matplotlib.cm as cm # 导入处理颜色的库colormap

plt.figure(figsize = (16, 12))
img = mpimg.imread('image/fuli.jpg')# 读取图片
print(img) # numpy数据
print(img.shape) # 

plt.imshow(img, cmap = 'hot')
plt.colorbar() # 得到颜色多对应的数值
plt.show()
[[[ 11  23  63]
  [ 12  24  64]
  [  1  13  55]
  ...
  [  1  12  42]
  [  1  12  42]
  [  1  12  42]]

 [[ 19  31  71]
  [  3  15  55]
  [  0  10  52]
  ...
  [  0  11  39]
  [  0  11  39]
  [  0  11  39]]

 [[ 22  34  74]
  [  3  15  55]
  [  7  19  61]
  ...
  [  0  11  39]
  [  0  11  39]
  [  0  11  39]]

 ...

 [[ 84 125 217]
  [ 80 121 213]
  [ 78 118 214]
  ...
  [ 58  90 191]
  [ 54  86 187]
  [ 53  85 186]]

 [[ 84 124 220]
  [ 79 119 215]
  [ 78 117 218]
  ...
  [ 55  87 188]
  [ 55  87 188]
  [ 55  87 188]]

 [[ 83 121 220]
  [ 80 118 219]
  [ 83 120 224]
  ...
  [ 56  88 189]
  [ 58  90 191]
  [ 59  91 192]]]
(728, 516, 3)

利用numpy矩阵得到图片

import matplotlib.pyplot as plt
import matplotlib.cm as cm # 导入处理颜色的库colormap
import numpy as np

size =  8
# 得到一个8*8数值在(0, 1)之间的矩阵
a = np.linspace(0, 1, size ** 2).reshape(size, size)

plt.figure(figsize = (16, 12))
plt.imshow(a)
plt.show()

六、3D图


import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D # 导入Axes3D对象

fig = plt.figure(figsize = (16, 12))
ax = fig.add_subplot(111, projection = '3d') # 得到3d图像

x = np.arange(-4, 4, 0.25)
y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(x, y) # 生成网格
Z = np.sqrt(X ** 2 + Y ** 2)

# 画曲面图              # 行和列对应的跨度         # 设置颜色
ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, cmap = plt.get_cmap('rainbow'))
plt.show()


以上是matplotlib基于测试数据的数据可视化,结合实际项目中数据,代码稍加修改,即可有让人印象深刻的效果

相关推荐

大文件传不动?WinRAR/7-Zip 入门到高手,这 5 个技巧让你效率翻倍

“这200张照片怎么传给女儿?微信发不了,邮箱附件又超限……”62岁的张阿姨对着电脑犯愁时,儿子只用了3分钟就把照片压缩成一个文件,还教她:“以后用压缩软件,比打包行李还方便!”职场人更懂这...

电脑解压缩软件推荐——7-Zip:免费、高效、简洁的文件管理神器

在日常工作中,我们经常需要处理压缩文件。无论是下载软件包、接收文件,还是存储大量数据,压缩和解压缩文件都成为了我们日常操作的一部分。而说到压缩解压软件,7-Zip绝对是一个不可忽视的名字。今天,我就来...

设置了加密密码zip文件要如何打开?这几个方法可以试试~

Zip是一种常见的压缩格式文件,文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢?不清楚的小伙伴一起来看看吧。当我们知道密码想要打开带密码的Zip文件,我们需要用到适用于Zip格式的解压缩...

大文件想要传输成功,怎么把ZIP文件分卷压缩

不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置?方法一:使用7-Zip免费且强大的文件管理工具7...

高效处理 RAR 分卷压缩包:合并解压操作全攻略

在文件传输和存储过程中,当遇到大文件时,我们常常会使用分卷压缩的方式将其拆分成多个较小的压缩包,方便存储和传输。RAR作为一种常见的压缩格式,分卷压缩包的使用频率也很高。但很多人在拿到RAR分卷...

2个方法教你如何删除ZIP压缩包密码

zip压缩包设置了加密密码,每次解压文件都需要输入密码才能够顺利解压出文件,当压缩包文件不再需要加密的时候,大家肯定想删除压缩包密码,或是忘记了压缩包密码,想要通过删除操作将压缩包密码删除,就能够顺利...

速转!漏洞预警丨压缩软件Winrar目录穿越漏洞

WinRAR是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它类...

文件解压方法和工具分享_文件解压工具下载

压缩文件减少文件大小,降低文件失效的概率,总得来说好处很多。所以很多文件我们下载下来都是压缩软件,很多小伙伴不知道怎么解压,或者不知道什么工具更好,所以今天做了文件解压方法和工具的分享给大家。一、解压...

[python]《Python编程快速上手:让繁琐工作自动化》学习笔记3

1.组织文件笔记(第9章)(代码下载)1.1文件与文件路径通过importshutil调用shutil模块操作目录,shutil模块能够在Python程序中实现文件复制、移动、改名和删除;同时...

Python内置tarfile模块:读写 tar 归档文件详解

一、学习目标1.1学习目标掌握Python内置模块tarfile的核心功能,包括:理解tar归档文件的原理与常见压缩格式(gzip/bz2/lzma)掌握tar文件的读写操作(创建、解压、查看、过滤...

使用python展开tar包_python拓展

类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不...

银狐钓鱼再升级:白文件脚本化实现GO语言后门持久驻留

近期,火绒威胁情报中心监测到一批相对更为活跃的“银狐”系列变种木马。火绒安全工程师第一时间获取样本并进行分析。分析发现,该样本通过阿里云存储桶下发恶意文件,采用AppDomainManager进行白利...

ZIP文件怎么打开?2个简单方法教你轻松搞定!

在日常工作和生活中,我们经常会遇到各种压缩文件,其中最常见的格式之一就是ZIP。ZIP文件通过压缩数据来减少文件大小,方便我们进行存储和传输。然而,对于初学者来说,如何打开ZIP文件可能会成为一个小小...

Ubuntu—解压多个zip压缩文件.zip .z01 .z02

方法将所有zip文件放在同一目录中:zip_file.z01,zip_file.z02,zip_file.z03,...,zip_file.zip。在Zip3.0版本及以上,使用下列命令:将所有zi...

如何使用7-Zip对文件进行加密压缩

7-Zip是一款开源的文件归档工具,支持多种压缩格式,并提供了对压缩文件进行加密的功能。使用7-Zip可以轻松创建和解压.7z、.zip等格式的压缩文件,并且可以通过设置密码来保护压缩包中的...

取消回复欢迎 发表评论: