IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python 绘图库Matplotlib总结 -> 正文阅读

[Python知识库]python 绘图库Matplotlib总结

本节导图:https://www.processon.com/view/link/5fde0dbfe0b34d66b824203b

绘图库Matplotlib

  • matplotib是Python最著名的绘图库,它提供了一套可以与MATLAB媲美的绘图函数集,非常适合几行代码就可以快速绘图
  • matplottib内部使用面向对象实现,组成图标的各个元素都是对象。

面向对象接口使用起来比较复杂,matplotib提供了pyplot模块来实现快速绘图,它的API非常类似于MATLAB,它将复杂的对象关系隐藏起来,方便我们快速使用。

简单例子

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']#显示中文字体标签
plt.rcParams['axes.unicode_minus']=False

x = np.linspace(0, 10, 1000)
y = np.sin(x)
z = np.cos(x**2)

plt.figure(figsize= (12, 4))#设置图像高宽比
plt.plot(x, y, label= "$sin(x)$",color = "red", linewidth= 2)#线属性
plt.plot(x, z, label = "$cos(x^2)$", color = "blue")

plt.xlabel("横轴")#图属性:横纵坐标,标题横纵坐标显示属性
plt.ylabel("纵轴")
plt.title("demo")
plt.ylim(-1.5, 1.5)#纵坐标范围
plt.xlim(0, 11)
plt.legend(loc ="upper right")

plt.show()

image-20211119111802433

绘图对象的理解

matplotib内部全部使用面向对象实现,组成图标的各个元素都是对象。

虽然可以通过pyplot快速绘图,但是在编写大型应用程序时,通过面向对象的方式调用将更加有效;

另外,如果理解了matplotb内的对象含义及其关系,这将更有助于我们更好的用好pyplot。

类关系

  • 所有可渲染的对象都有一个基类,为Artist类,它是一个抽象类;
  • 可渲染对象包括两种类型:简单类型和容器类型;
  • 简单类型是标准的绘图组件,例如:Line2D,Rectangle、Text,Axes Image等;
  • 容器类型可以包含多个组牛,主要将这些组件组织起来,例如:Axis、Axes、Figure等;
  • 在matplotib中,整个图像为一个figure对象。在Figure对象中可以包含一个,或者多个Axes对象。每个Axes对象都是一个拥有自己坐标系统的绘图区域,并且包含多个Axis坐标轴。逻辑关系如下:

image-20211121195715315

Axes内部可以细分,下面是一个具体的直线图中,我们看到还有如下对象:

image-20211121195809151

Axis就是前一个图上的Axis;Title为标题,你可以为你的图起一个标题;Label为坐标轴标签;Tick为刻度线:Tick Label为刻度注释;中间是Line;

完整对象树参考下图:

image-20211121200855586

绘图流程

1.创建Fiqure对象;
2.为Fiqure对象创建一个或多个Axes对象;
3,调用Axes对象的方法,创建一些Axis ,Title ,Line2D等简单类型组件,并设置其相关属性;(无需自己去手动创建这些简单组件对象)
4,通过Figure对象展示图像;

import matplotlib.pyplot as plt 
import numpy as np
#准备数据
xs = np.arange(150)
ys = xs  ** 2
zs = np.cos(xs)


figure = plt.figure() #通过plt.figure(),生成rigure对象

#创建第一个axes(左上角)
axesl = figure.add_subplot(221) #调用figure.add subplot((),创建第一个axes对象;
                                    #声明2*2布局,选第1块
axesl.set_xlabel('x') #设置xaxis对象的 label 
axes1.set_ylabel('y') #设置yaxis对象的1abel 
axesl.set title('plot1') #设置axes对象的title 
axesl.plot(xs,ys) #通过plot方法,声明data,创建Line2D对象

#创建第二个axes(右下角)
axes2 = figure.add_subplot(224*沿用2*2布局,选第4块
axes2.set xlabel('x')
axes2.set ylabel('z')
axes2.set_title('plot2')
axes2.plot(xs,zs)
figure.show()
image-20211121213457732

当你仅需要一张子图时,全部基于plt的方法调用,已经帮你隐藏了axes对象的创建;

类似上面一般流程的例子中,axes对象也在尝试帮我们隐藏axis ,label等对象的创建,简化我们的使用;

一些常用类型图的例子

散点图

import numpy as np 
import matplot1ib.pyplot as plt
# 定义50个点
N = 50
x = np.random.rand(N) #随机产生x坐标
y = np.random.rand(N) #随机产生y坐标
area = np.pi*(15*np.random.rand(N))**2 #随机产生面积
colors = np.random.rand(N) #随机产生顾色(matplotlib可以自动将0-1的浮点数转为颜色)
plt.scatter(x,y,a = area, colors,alpha = 0.5) #声明每个点的:xy坐标、面积、颜色,以及透明度为0.5
plt.show()
image-20211121215409370

条形图

import matplotlib.pyplot as plt
import numpy as np

xs = np.arange(0, 10)
ys = np.random.randint(100, 200, 10)

plt.bar(xs, ys) #绘制条形图
plt.xticks(xsm ['x_{}'.format(x+1) for x in xs]) #设置xtick
plt.show()
image-20211121223112706

饼图

import matplotlib.pyplot as plt
labels = ['apple', 'orange', 'pear', 'peach'] #四个label
sizes = [15, 20, 17, 35] #四个size
explode = [0, 0.1, 0, 0] #四个偏移量
fig1, ax1 = plt.subplots() #通过无参的subplots方法,同时获得figure对象和axes对象
ax1.pie(sizes, explode = explode ,labels = labels, autopct = '%1.1f%%',
		shadow = True, startangle = 90) #绘制饼图 autopct:自动根据数值进行百分比运算
plt.show()
image-20211121223524978

matplotib官方提供了一个gallery页面,展示了各种缩略图及对应代码,在画图前,可以快速浏览、从里面找到想要的图,然后点击进入代码界面,然后复制修改样例代码即可,非常方便。

高级封装Seaborn

基于Matplotib核心库进行了更高阶的API封装,可以让你轻松地画出更漂亮的统计图形。Seaborn的漂亮主要体现在配色更加舒服、图形元素的样式更加细腻。

我们可以通过使用seaborn,仅加入一行(不包括import),使上述的柱状图更好看:

如修改上面的条形统计图样例:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sbn
sbn.set(style = 'darkgrid', palette = 'deep') #设置style为暗色分块, 调色板(palette)为深暗色

xs = np.arange(0, 10)
ys = np.random.randint(100, 200, 10)

plt.bar(xs, ys) #绘制条形图
plt.xticks(xsm ['x_{}'.format(x+1) for x in xs]) #设置xtick
plt.show()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:17:56  更:2021-11-22 12:18:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:56:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码