matplotlib库 点线图,直方图,多子图与三维空间的可视化
目录
一.基础绘图
1.绘制点线图:
2.直方图:
3.多子图绘制
二. 三维空间可视化
1.数据准备
2.绘图实现
3.完整代码呈现
一.基础绘图
1.绘制点线图:
通过plt.plot(x, y)
传入X/Y轴数据,设置颜色(color
)和标记形状(marker
),添加标题(title
)和轴标签(xlabel/ylabel
)。
import matplotlib.pyplot as plt
import numpy as np
x=np.array([1,2,3,4,5])
y=np.array([10,20,30,40,50])
plt.plot(x,y,color='red',marker='o')#点线图
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()
2.直方图:
使用plt.hist()
绘制单值条形图
data = [1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 5]
plt.hist(data,color='red')
plt.show()
3.多子图绘制
通过plt.subplot()
在同一画布上分区域绘制多个图形(如正弦、余弦函数),结合np.linspace()
生成等间隔数据点。
使用 plt.subplot 创建两行两列的子图(共4个),图像大小为10x8(单位未明确)。
- 子图通过矩阵(
ndarray
)管理,通过索引(如ax[0,0]
)在指定位置添加数据:- 第0行第0列:绘制
X
和y1
(红色),标题为X sinex
。 - 第0行第1列:绘制
X
和y2
(绿色),标题为cosinex
。 - 第1行第0列:绘制
X
和y3
(蓝色)。
- 第0行第0列:绘制
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,100)
y1=np.sin(x)
y2=np.cos(x)
y3=np.tan(x)
y4=np.sin(x**2)
fig,axs=plt.subplots(2,2,figsize=(10,8))
axs[0,0].plot(x,y1,'r')
axs[0,0].set_title('sin(x)')
axs[0,1].plot(x,y2,'g')
axs[0,1].set_title('cos(x)')
axs[1,0].plot(x,y3,'b')
axs[1,0].set_title('tan(x)')
axs[1,1].plot(x,y4,'m')
axs[1,1].set_title('sin(x^2)')
plt.show()
二. 三维空间可视化
1.数据准备
- 数据datingTestSet2.txt包含三列特征(旅行路程、游戏时间百分比、零食重量百分比)和一列分类结果(1/2/3类),数据展示部分如下。
- 需按分类结果筛选数据:类别1,爱学习(红色)、类别2,一般(蓝色)、类别3,爱玩(黄色)。
- 利用numpy库读取txt文件数据
import numpy as np import matplotlib.pyplot as plt data = np.loadtxt('datingTestSet2.txt')
- 将各类别的数据用代码分别划分出来
data_1=data[data[:,-1]==1] data_2=data[data[:,-1]==2] data_3=data[data[:,-1]==3]
2.绘图实现
- 工具选择:使用
matplotlib
的scatter
函数绘制三维散点图。 - 步骤:
- 创建三维画布:
plt.figure().add_subplot(projection='3d')
。fig=plt.figure() ax=plt.axes(projection='3d')
- 分三次添加数据点:分别筛选类别1、2、3的数据,传入对应特征列(X/Y/Z轴),并指定颜色和标记形状(圆形、三角形等)。
ax.scatter(data_1[:,0],data_1[:,1],data_1[:,2],c='red',marker='o',label='1') ax.scatter(data_2[:,0],data_2[:,1],data_2[:,2],c='blue',marker='^',lable='2') ax.scatter(data_3[:,0],data_3[:,1],data_3[:,2],c='yellow',marker='+',label='3')
- 设置坐标轴标签
ax.set(xlabel='Xaxes',ylabel='Yaxes',zlabel='Zaxes') plt.show()
- 创建三维画布:
3.完整代码呈现
import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('datingTestSet2.txt')data_1=data[data[:,-1]==1]
data_2=data[data[:,-1]==2]
data_3=data[data[:,-1]==3]fig=plt.figure()
ax=plt.axes(projection='3d')
ax.scatter(data_1[:,0],data_1[:,1],data_1[:,2],c='red',marker='o',label='1')
ax.scatter(data_2[:,0],data_2[:,1],data_2[:,2],c='blue',marker='^',label='2')
ax.scatter(data_3[:,0],data_3[:,1],data_3[:,2],c='yellow',marker='+',label='3')
ax.set(xlabel='Xaxes',ylabel='Yaxes',zlabel='Zaxes')
plt.show()