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()
相关推荐
m0_704887895 小时前
Day 35
python·深度学习·机器学习
华研前沿标杆游学6 小时前
参观深圳比亚迪总部,探索科技,感受中国“智”造魅力
python
爱打代码的小林6 小时前
python基础(逻辑回归例题)
开发语言·python·逻辑回归
qq_214782616 小时前
pandas“将”迎来v3.0.0大版本更新!
python·pandas
dagouaofei6 小时前
长文档也能转成PPT:AI自动拆分章节并生成页面
人工智能·python·powerpoint
Keep_Trying_Go6 小时前
统一的人群计数训练框架(PyTorch)——基于主流的密度图模型训练框架
人工智能·pytorch·python·深度学习·算法·机器学习·人群计数
赵谨言6 小时前
基于OpenCV的图像梯度与边缘检测研究
大数据·开发语言·经验分享·python
啊阿狸不会拉杆6 小时前
《数字图像处理 》 第 1 章-绪论
图像处理·python·opencv·算法·数字图像处理
小白勇闯网安圈6 小时前
upload、very_easy_sql、i-got-id-200
python·网络安全·web