人工智能科学计算库—Matplotlib教程

Matplotlib_Node

1.Matplotlib初识

image-20220903141445945

是专门用于开发2D图表(包括3D图表)

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

  可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。

  能将数据进行可视化,更直观的呈现

  使数据更加客观、更具说服力

  例如下面两个图为数字展示和图形展示:

2.基础绘图功能 — 以折线图为例

import matplotlib.pyplot as plt 
import random # 画出温度变化图 

# 0.准备x, y坐标的数据 
x = range(60) 
y_shanghai = [random.uniform(15, 18) for i in x] 

# 1.创建画布 
plt.figure(figsize=(20, 8), dpi=80) 

# 2.绘制折线图 
plt.plot(x, y_shanghai) 

# 3.显示图像 
plt.show()

image-20220903143006415

2.1添加自定义信息

2.1.1自定义刻度

plt.xticks(x, kwargs)

x:要显示的刻度值

plt.yticks(y, kwargs)

y:要显示的刻度值

增加以下两行代码

import matplotlib.pyplot as plt 
import random # 画出温度变化图 


# 0.准备x, y坐标的数据 
x = range(60) 
y_shanghai = [random.uniform(15, 18) for i in x] 


# 1.创建画布
plt.figure(figsize=(20, 8), dpi=80) 

# 2.绘制折线图 
plt.plot(x, y_shanghai) 

# 3.构造x轴刻度标签 
x_ticks_label = ["11点{}分".format(i) for i in x] 
# 构造y轴刻度 
y_ticks = range(40) 
# 4.修改x,y轴坐标的刻度显示 
plt.xticks(x[::5], x_ticks_label[::5]) 
plt.yticks(y_ticks[::5])

# 5.显示图像 
plt.show()

image-20220903144901846

2.1.2添加网格

import matplotlib.pyplot as plt 
import random # 画出温度变化图 


# 0.准备x, y坐标的数据 
x = range(60) 
y_shanghai = [random.uniform(15, 18) for i in x] 


# 创建画布
plt.figure(figsize=(20, 8), dpi=80) 



# 绘制折线图 
plt.plot(x, y_shanghai) 

#添加网格
plt.grid(True, linestyle='--', alpha=1)

# 构造x轴刻度标签 
x_ticks_label = ["11点{}分".format(i) for i in x] 

# 构造y轴刻度 
y_ticks = range(40) 

# 修改x,y轴坐标的刻度显示 
plt.xticks(x[::5], x_ticks_label[::5]) 

plt.yticks(y_ticks[::5])

# 显示图像 
plt.show()

image-20220903145911794

2.1.3 添加标题和列说明

import matplotlib.pyplot as plt 
import random # 画出温度变化图 


# 0.准备x, y坐标的数据 
x = range(60) 
y_shanghai = [random.uniform(15, 18) for i in x] 


# 创建画布
plt.figure(figsize=(20, 8), dpi=80) 



# 绘制折线图 
plt.plot(x, y_shanghai) 

#添加网格
plt.grid(True, linestyle='--', alpha=1)

# 构造x轴刻度标签 
x_ticks_label = ["11点{}分".format(i) for i in x] 

# 构造y轴刻度 
y_ticks = range(40) 

# 修改x,y轴坐标的刻度显示 
plt.xticks(x[::5], x_ticks_label[::5]) 

plt.yticks(y_ticks[::5])

plt.xlabel("时间") 
plt.ylabel("温度") 
plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20)

# 显示图像 
plt.show()

image-20220903150029189

2.1.4图像保存

# 2.4 图像保存 
plt.savefig("./test.png") 

2.2一个图像添加多个图像

2.2.1多次plot

需求:再添加一个城市的温度变化

  收集到北京当天温度变化情况,温度在1度到3度。怎么去添加另一个在同一坐标系当中的不同图形,其实很简单只需要再次plot即可,但是需

要区分线条,如下显示 :

import matplotlib.pyplot as plt 
import random # 画出温度变化图 


# 0.准备x, y坐标的数据 
x = range(60) 
y_shanghai = [random.uniform(15, 18) for i in x] 


# 创建画布
plt.figure(figsize=(20, 8), dpi=80) 



# 绘制折线图 
plt.plot(x, y_shanghai) 

#添加网格
plt.grid(True, linestyle='--', alpha=1)

# 构造x轴刻度标签 
x_ticks_label = ["11点{}分".format(i) for i in x] 

# 构造y轴刻度 
y_ticks = range(40) 

# 修改x,y轴坐标的刻度显示 
plt.xticks(x[::5], x_ticks_label[::5]) 

plt.yticks(y_ticks[::5])

# 增加北京的温度数据 
y_beijing = [random.uniform(1, 3) for i in x] 
# 绘制折线图 
plt.plot(x, y_shanghai) 
# 使用多次plot可以画多个折线 
plt.plot(x, y_beijing, color='r', linestyle='--')

plt.xlabel("时间") 
plt.ylabel("温度") 
plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20)

# 显示图像 
plt.show()

image-20220903150808248

2.2.2绘制子图

import matplotlib.pyplot as plt
import numpy as np

#plot 1:
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.subplot(1, 2, 1)
plt.plot(xpoints,ypoints)
plt.title("plot 1")

#plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("plot 2")

plt.suptitle("RUNOOB subplot Test")
plt.show()

image-20220903152407807

3.其他图形绘制

3.1散点图绘制

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

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

image-20220903152536753

3.2柱状图绘制

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])

plt.bar(x, y, width = 0.1)
plt.show()

image-20220903152617807

3.3饼图绘制

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y,
        labels=['A','B','C','D'], # 设置饼图标签
        colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
        explode=(0, 0.2, 0, 0), # 第二部分突出显示,值越大,距离中心越远
        autopct='%.2f%%', # 格式化输出百分比
       )
plt.title("RUNOOB Pie Test")
plt.show()

image-20220903152740122

3.4Matplotlib 3D绘图

3D线段

#导入三维工具包

from mpl_toolkits import mplot3d    

import numpy as np    

import matplotlib.pyplot as plt  

fig = plt.figure(dpi=500)   #像素500 

#创建3d绘图区域    

ax = plt.axes(projection='3d')    

ax.set_title('3D线段')

x=np.arange(0,4)       

y=np.arange(0,4)    

z=np.arange(0,4)    

ax.plot3D(x,y,z,'red') #调用 ax.plot3D创建三维线图   

plt.show()

image-20220903153036938

plt.figure()作用

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

num:图像编号或名称,数字为编号 ,字符串为名称

figsize:指定figure的宽和高,单位为英寸;

dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80

facecolor:背景颜色

edgecolor:边框颜色

frameon:是否显示边框

关于surface()介绍

参数描述
X,Y,Z2D数组形式的数据值
rstride数组行距(步长大小)
cstride数组列距(步长大小)
color曲面块颜色
cmap曲面块颜色映射
facecolors单独曲面块表面颜色
norm将值映射为颜色的 Nonnalize实例
vmin映射的最小值
vmax映射的最大值

3D散点图

from mpl_toolkits import mplot3d    

import numpy as np    

import matplotlib.pyplot as plt    

fig = plt.figure(dpi=150)    #像素150

#创建绘图区域    

ax = plt.axes(projection='3d')    

#构建xyz    

z = np.linspace(0, 1, 100)    #0-1等间距产生100个数

x = z * np.sin(20 * z)    

y = z * np.cos(20 * z)     

ax.scatter3D(x, y, z, c='b', marker='o')  #c代表散点颜色 marker代表散点形状  

ax.set_title('3D散点图')    

plt.show()

image-20220903153140698

3D图

from mpl_toolkits import mplot3d 

import numpy as np 

import matplotlib.pyplot as plt 

fig = plt.figure() 

#创建绘图区域 

ax = plt.axes(projection='3d') 

x=np.arange(-4,4,0.25) 

y=np.arange(-4,4,0.25) 

x,y=np.meshgrid(x,y) #生成坐标矩阵

r=np.sqrt(x**2+y**2) #平方根

z=np.cos(r) 

ax.set_zlim(-2, 2) #z轴的范围

ax.contour(x, y, z, zdir = 'z',offset=-2) #表示投影到z = -2上

ax.plot_surface(x,y,z,cmap='rainbow')# cmap设置颜色映射 

show()

image-20220903153326375

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fang GL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值