Python数据可视化--matplotlib库

一、matplotlib库

matplotlib.pyplot 是 Python 中用于数据可视化的核心库,提供类似 MATLAB 的绘图接口。通过简单的函数调用,可以生成线图、散点图、直方图等常见图表。

基本功能

1、绘制图形

绘制线图:通过 plt.plot(x, y) 绘制二维数据。

散点图:使用 plt.scatter(x, y) 展示离散数据点。

条形图:调用 plt.bar(x, y) 生成垂直条形图。

标题:通过 plt.title(), plt.xlabel(), plt.ylabel() 设置图表信息。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 1. 线图 (Line plot)
x = np.linspace(0, 10, 100)
ax=plt.plot(x, np.sin(x), 'r-')
plt.title('Line plot')
# 2. 散点图 (Scatter plot)
x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x, y, c='blue')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Scatter plot')

# 3. 条形图 (Bar chart)
categories = ['A', 'B', 'C', 'D']
values = [23, 45, 56, 78]
plt.bar(categories, values)
plt.title('Bar chart')
plt.show()

注:标题不能是中文

2、创建多个子图

1)plt.subplot(参数1,参数2,参数3)

功能:创建多个子图

第一个参数 2:表示总行数为 2

第二个参数 3:表示总列数为 3

第三个参数 2:表示当前要操作的子图位置索引(从1开始计数)

例如:plt.subplot(2,3,1)

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 1. 线图 (Line plot)
plt.subplot(2, 3, 1)
x = np.linspace(0, 10, 100)
ax=plt.plot(x, np.sin(x), 'r-')
plt.title('Line plot')

# 2. 散点图 (Scatter plot)
plt.subplot(2, 3, 2)
x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x, y, c='blue')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Scatter plot')

# 3. 条形图 (Bar chart)
plt.subplot(2, 3, 3)
categories = ['A', 'B', 'C', 'D']
values = [23, 45, 56, 78]
plt.bar(categories, values)
plt.title('Bar chart')
plt.show()
2)plt.subplots()

这里在对子图位置进行索引时,从0开始计数,一维的就是0、1......,二维就是[0,0],[0,1],......

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,10000)#xy都是矩阵,数据具有计算的功能
y1 = np.sin(x)#不能用math的sin等功能
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.x=np.linspace(0,10,10000)是使用 NumPy 库生成一个从 0 到 10 的等间隔数值数组的代码。该数组包含 10000 个均匀分布的点。

参数说明:

第一个参数 0 是数组的起始值。

第二个参数 10 是数组的结束值。

第三个参数 10000 是生成的样本数量。

2.fig,axs =plt.subplots(2,2,figsize=(10,8))表示创建多个子图,其中子图行列数为2×2,子图的大小为长10宽8

3.axs是一个numpy数组,通过axs[i,j]访问第 i 行,第 j 列的子图(索引从0开始)

注意:要写plt.show()否则代码结果无法显示出来

结果如下图所示:

3、from pylab import matplotlib

前面使用matplotlib.pyplot时,有说到标题不能时中文,而导入pylab后,标题就可以使用中文

二、案例

现已存在一个数据文件datingTestSet2.txt ,为历年大学生的调查问卷表

将类别为同一类的放在一起,并使用散点图表示出来

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
data=np.loadtxt('datingTestSet2.txt',delimiter="\t")
a=data[data[:,-1]==1]
b=data[data[:,-1]==2]
c=data[data[:,-1]==3]
fig=plt.figure()
ax=plt.axes(projection="3d")
ax.scatter(a[:,0],a[:,1],a[:,2],c='r',marker="o")
ax.scatter(b[:,0],b[:,1],b[:,2],c='g',marker="^")
ax.scatter(c[:,0],c[:,1],c[:,2],c='b',marker="+")
ax.set(xlabel="x",ylabel="y",zlabel="z")
plt.show()
相关推荐
李松桃6 分钟前
python第三次作业
java·前端·python
m0_561359678 分钟前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
马士兵教育9 分钟前
计算机专业学生入行IT行业,编程语言如何选择?
java·开发语言·c++·人工智能·python
diediedei24 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
weixin_4454023027 分钟前
Python游戏中的碰撞检测实现
jvm·数据库·python
棒棒的皮皮38 分钟前
【OpenCV】Python图像处理矩特征之矩的计算/计算轮廓的面积
图像处理·python·opencv·计算机视觉
人工智能AI技术43 分钟前
【Agent从入门到实践】41 部署方式选型:本地脚本、Docker容器、云服务部署
人工智能·python
Fleshy数模1 小时前
零基础玩转HTML:核心标签与页面构建
python·html
2401_832402751 小时前
使用Docker容器化你的Python应用
jvm·数据库·python
七夜zippoe1 小时前
WebSocket实时通信系统构建:从握手协议到生产级实战
网络·python·websocket·网络协议·心跳