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()
相关推荐
喵手7 分钟前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手14 分钟前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
熊猫_豆豆20 分钟前
YOLOP车道检测
人工智能·python·算法
nimadan1221 分钟前
**热门短剧小说扫榜工具2025推荐,精准捕捉爆款趋势与流量
人工智能·python
默默前行的虫虫26 分钟前
MQTT.fx实际操作
python
YMWM_35 分钟前
python3继承使用
开发语言·python
JMchen12336 分钟前
AI编程与软件工程的学科融合:构建新一代智能驱动开发方法学
驱动开发·python·软件工程·ai编程
亓才孓1 小时前
[Class类的应用]反射的理解
开发语言·python
小镇敲码人1 小时前
深入剖析华为CANN框架下的Ops-CV仓库:从入门到实战指南
c++·python·华为·cann
摘星编程2 小时前
深入理解CANN ops-nn BatchNormalization算子:训练加速的关键技术
python