10:Matplotlib概述绘制直线图
10:Matplotlib概述绘制直线图
以下是整理后的课程文档,已修正错别字并优化内容结构:
Python数据可视化课程 - Matplotlib基础
课程概述
学习建议
优先级说明
• Matplotlib和Pandas可暂缓学习,不影响机器学习/深度学习基础学习• 可视化主要用于辅助分析,Pandas部分功能可通过NumPy替代
• 后续代码涉及相关库时再针对性学习
系统学习建议
• 时间充裕者可系统学习Matplotlib和Pandas• 兼容性优势:Matplotlib与NumPy/Pandas无缝集成
Matplotlib核心知识
- 库简介
• 定位:Python主流2D绘图库
• 特点:
• 少量代码生成多种图表(直方图/条形图/散点图等)
• 支持与NumPy/Pandas协同工作
• 功能亮点:
• 数据直观呈现
• 支持三维图形绘制
• 高度可定制的样式与颜色
- 环境配置
# 安装(Anaconda环境已内置)
# conda install matplotlib
# 标准导入方式
import matplotlib.pyplot as plt
基础绘图实战
- 直线绘制
plt.plot([0, 2], [1, 4]) # 两点连线
plt.show()
- 折线图绘制
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y, linewidth=3) # 设置线宽
plt.show()
图表定制化
- 基础设置
plt.title("二次函数曲线", fontsize=14) # 标题
plt.xlabel("X值", fontsize=12) # X轴标签
plt.ylabel("Y值", fontsize=12) # Y轴标签
- 中文显示配置
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
高级示例:一元二次函数曲线
- 生成数据点
import numpy as np
x = np.linspace(-10, 10, 200) # 生成200个数据点
y = x ** 2
- 绘制与保存
plt.plot(x, y)
plt.title("y = x² 函数曲线")
plt.savefig('quadratic.jpg', dpi=300) # 保存高清图像
plt.show()
核心方法总结
方法 | 功能描述 |
---|---|
plt.plot() | 绘制线形图/散点图 |
plt.title() | 设置图表标题 |
plt.xlabel/ylabel() | 设置坐标轴标签 |
plt.xticks/yticks() | 设置刻度及旋转角度 |
plt.legend() | 显示图例 |
plt.text() | 添加文字注释 |
plt.figure() | 设置画布尺寸(figsize参数) |
plt.savefig() | 保存图像文件 |
学习建议
可视化应用场景:
• 模型效果验证(拟合曲线/决策边界)• 数据分布分析(直方图/箱线图)
• 结果汇报展示(需配合完整图表元素)
进阶方向:
• 三维可视化(mplot3d工具包)• 交互式图表(Plotly库)
• 高级样式定制(Seaborn库)
建议通过实际项目(如房价预测可视化、分类决策边界展示)巩固Matplotlib技能。
11:Matplotlib绘制正余弦曲线散点图_添加图例
Python数据可视化课程文档:绘制正弦曲线、余弦曲线与散点图
一、绘制正弦曲线与余弦曲线
- 生成数据点
• 核心函数:numpy.linspace()
• 参数说明:
• 起始值:0
• 终止值:10
• 生成点数:100
• 代码示例:
import numpy as np
x = np.linspace(0, 10, 100)
- 计算函数值
• 正弦函数:
y_sin = np.sin(x)
• 余弦函数:
y_cos = np.cos(x)
- 绘制图形
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 16), dpi=80) # 设置画布尺寸
plt.plot(x, y_sin, label='Sine Curve') # 绘制正弦曲线
plt.plot(x, y_cos, label='Cosine Curve') # 绘制余弦曲线
plt.legend(loc='lower right') # 添加图例(需配合label参数)
plt.show()
- 关键说明
• 数据点越多曲线越平滑(推荐100-200个点)
• plt.figure()
参数:
• figsize
:画布尺寸(宽, 高,单位英寸)
• dpi
:分辨率
• 图例需在plot()
中使用label
参数指定名称
二、绘制散点图
- 基础散点图
plt.scatter(x, y_sin)
plt.show()
- 高级散点图设置
np.random.seed(3) # 设置随机种子保证结果可复现
x = np.random.randn(100) # 生成100个标准正态分布随机数
y = np.random.randn(100)
colors = np.random.rand(100) # 随机颜色
sizes = 1000 * np.random.rand(10) # 随机尺寸
plt.scatter(x, y,
c=colors, # 颜色数组
s=sizes, # 尺寸数组
alpha=0.5) # 透明度(0-1)
plt.show()
三、线型与标记设置
- 格式字符串语法
[颜色][标记][线型]
示例:
plt.plot(x, y, 'g--') # 绿色虚线
plt.plot(x, y, 'ro-') # 红色圆点实线
plt.plot(x, y, 'c+:') # 青色点划线,三角形标记
- 常用参数对照表
符号 颜色 符号 标记 符号 线型 b 蓝色 o 圆圈 - 实线 g 绿色 x 叉号 -- 虚线 r 红色 d 菱形 : 点线 c 青色 + 加号 -. 点划线
四、图例与样式优化
- 添加图例的正确方式
plt.plot(x, y_sin, label='Sin') # 必须指定label
plt.plot(x, y_cos, label='Cos')
plt.legend(loc='upper left') # 显示所有label对应的图例
- 常见图例位置参数
'upper right' # 右上(默认)
'lower left' # 左下
'center' # 居中
'best' # 自动选择最佳位置
五、注意事项
导入标准库时应使用正确缩写:
import numpy as np import matplotlib.pyplot as plt
显示图形前需确保所有
plot()
操作已完成当图形元素重叠时,使用
alpha
参数调整透明度绘制多个图形时建议使用
subplot
创建子图
六、完整示例代码
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.linspace(0, 10, 200)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 创建画布
plt.figure(figsize=(12, 6), dpi=100)
# 绘制双曲线
plt.plot(x, y_sin, 'b-', label='Sine')
plt.plot(x, y_cos, 'r--', label='Cosine')
# 添加标签
plt.title('Sine & Cosine Waves')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.grid(True)
# 显示图例
plt.legend(loc='lower right')
# 显示图形
plt.show()
通过本课程内容,学员可以掌握使用matplotlib进行基础数据可视化的核心方法,包括曲线绘制、散点图制作,以及图形样式的自定义设置。
12:Matplotlib绘制柱状图画布切分多个子画布_柱状图对比
Matplotlib柱状图绘制教程
一、基础柱状图绘制
- 基本要素
• 核心函数:plt.bar()
• 必要参数:
• X轴坐标值(年份等分类数据)
• Y轴对应数值(销量等连续数据)
- 基础示例代码
import matplotlib.pyplot as plt
import numpy as np
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 准备数据
years = np.arange(1980, 1985) # X轴数据:1980-1984年
sales = [85, 92, 78, 105, 96] # Y轴数据:对应年份销量
# 创建画布
plt.figure(figsize=(10, 6))
# 绘制柱状图
plt.bar(years, sales, width=1.5)
# 设置坐标轴标签
plt.xlabel("年份")
plt.ylabel("销量(万件)")
plt.title("1980-1984年度销售统计")
# 自定义X轴标签
plt.xticks(years, [f"{year}年" for year in years])
plt.show()
- 关键参数说明
•width
:柱状宽度(默认0.8)
• color
:柱体颜色(支持名称/十六进制/RGB值)
• edgecolor
:边框颜色
• linewidth
:边框线宽
二、水平柱状图(barh)
- 基础用法
# 使用相同数据
plt.barh(years, sales, height=0.8)
plt.yticks(years, [f"{year}年" for year in years])
plt.xlabel("销量(万件)")
plt.ylabel("年份")
- 注意事项
• X/Y轴对应关系与竖直柱状图相反
• 参数height
对应竖直图的width
• 常见错误:got multiple values for argument 'width'
解决方法:检查参数顺序,正确格式为barh(Y, X)
三、多子图绘制
- 画布分割
plt.figure(figsize=(12, 6))
# 竖直柱状图(左侧)
plt.subplot(1, 2, 1)
plt.bar(years, sales, width=0.8)
plt.axhline(0, color='blue', linewidth=2) # 添加水平参考线
# 水平柱状图(右侧)
plt.subplot(1, 2, 2)
plt.barh(years, sales, height=0.6)
plt.axvline(0, color='red', linewidth=2) # 添加垂直参考线
四、分组柱状图案例(电影票房)
- 数据准备
days = ['第一天', '第二天', '第三天']
movies = {
'千与千寻': [2800, 3150, 2900],
'泰坦尼克号': [1950, 2200, 2400],
'阿凡达': [3250, 3400, 3180]
}
- 绘制代码
x = np.arange(len(days)) # 生成坐标位置:[0, 1, 2]
width = 0.25 # 柱体宽度
plt.figure(figsize=(12, 6))
# 绘制三组柱状图
for i, (movie, values) in enumerate(movies.items()):
offset = width * i
plt.bar(x + offset, values, width=width, label=movie)
# 设置坐标轴
plt.xticks(x + width, days)
plt.xlabel("上映天数")
plt.ylabel("票房(万元)")
plt.title("三部电影首周票房对比")
plt.legend()
- 关键技巧
• 使用np.arange()
生成基准位置
• 通过offset
控制不同组的偏移量
• width
参数需与分组数量配合(总宽度不宜超过1)
五、常见问题解决方案
中文显示问题:
plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows系统 plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # Mac系统
坐标轴重叠:
• 调整width
和子图间距• 使用
plt.tight_layout()
自动调整布局数据标签添加:
for x, y in zip(x_pos, values): plt.text(x, y+50, str(y), ha='center')
本教程涵盖从基础到进阶的柱状图绘制方法,包含竖直/水平柱状图、分组对比、多子图布局等实用技巧。建议配合Jupyter Notebook实践操作,通过参数调整观察可视化效果变化。
13:Matplotlib绘制饼图直方图_同时绘制多组数据分布
Python数据可视化课程文档(校正版)
一、饼状图绘制方法
1.1 核心功能
• plt.pie()
函数用于绘制饼状图,主要用于呈现比例数据
• 需要传入比例数据(百分比格式),可自定义标签、颜色、区块分离等参数
1.2 核心参数说明
plt.pie(sizes,
labels=labels,
colors=colors,
explode=explode,
autopct='%1.1f%%',
textprops={'color':"w"})
• explode
:区块分离度(示例调整为0.5时分离明显)
• autopct
:百分比显示格式
• textprops
:设置文本属性(如字体颜色)
1.3 性别比例示例
import matplotlib.pyplot as plt
# 数据准备
labels = ['男', '女']
sizes = [45, 55]
colors = ['#1f77b4', '#ff7f0e']
explode = (0.05, 0) # 男性区块分离
# 绘制饼图
fig, ax = plt.subplots()
ax.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', textprops={'color':'white'})
ax.axis('equal') # 保持圆形
# 设置字体属性
plt.setp(ax.texts, size=12, weight='bold')
plt.show()
1.4 显示效果
• 区块分离效果随explode值增大而明显
• 中文标签需确保字体支持
• 百分比文本颜色通过textprops设置
二、直方图绘制方法
2.1 与柱状图的区别
直方图 | 柱状图 | |
---|---|---|
关注点 | 数据分布 | 具体数值比较 |
X轴 | 连续数值区间 | 离散类别 |
函数 | plt.hist() | plt.bar() |
2.2 正态分布示例
import numpy as np
# 生成正态分布数据
mu, sigma = 0, 1
x = np.random.normal(mu, sigma, 1000)
# 绘制直方图
plt.hist(x, bins=30, alpha=0.7)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Normal Distribution Histogram')
plt.grid(True)
plt.show()
2.3 分箱参数(bins)
• 默认分箱数:10
• 增大分箱数(如100)可获得更精细的分布细节
• 分箱数越大,柱体越细,分布曲线越平滑
2.4 多分布对比
# 生成三种正态分布数据
x1 = np.random.normal(0, 1, 1000)
x2 = np.random.normal(5, 2, 1000)
x3 = np.random.normal(-3, 1.5, 1000)
# 绘制参数设置
params = {'bins': 50, 'alpha': 0.4}
# 绘制对比直方图
plt.hist(x1, **params, label='N(0,1)')
plt.hist(x2, **params, label='N(5,4)')
plt.hist(x3, **params, label='N(-3,2.25)')
plt.legend()
plt.show()
2.5 效果说明
• 不同均值(μ)影响分布中心位置
• 不同方差(σ²)影响分布宽度
• 透明度(alpha)参数实现分布重叠区域可视化
三、术语修正说明
- "PLLTP" → 修正为
plt
(matplotlib.pyplot标准缩写) - "HIST" → 修正为
hist
(matplotlib直方图函数) - "RNDN" → 修正为
np.random.randn
(标准正态分布生成函数) - "装箱" → 专业术语应为"分箱"(binning)
- "NP" → 修正为
np
(numpy标准缩写)
注:课程中提到的等高线图部分未完整展开,如需后续内容请提供完整录音材料。
14:Matplotlib绘制等高线图绘制三维图像
Matplotlib绘制等高线图与3D图教学文档
一、课程目标
- 掌握使用Matplotlib绘制等高线图(Contour Plot)
- 理解网格数据生成原理(meshgrid)
- 掌握三维曲面图的绘制方法
- 理解等高线图在机器学习中的应用(如损失函数可视化)
二、核心概念
2.1 等高线图原理
• 三维数据二维投影:通过俯视视角将三维曲面(X,Y,Z)投影为二维等高线
• 等高特性:同一等高线上的点Z值相等,颜色深度表示高度差异
• 典型应用:地形图、损失函数可视化、热力图
2.2 网格数据生成
import numpy as np
# 生成一维坐标序列
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
# 生成网格坐标矩阵
X, Y = np.meshgrid(x, y)
• linspace
:在[-10,10]区间生成100个等距点
• meshgrid
:生成100x100的网格矩阵,X/Y矩阵分别存储每个网格点的坐标
2.3 三维曲面函数
# 定义三维曲面函数(示例)
Z = np.sqrt(X**2 + Y**2) # 圆形碗状曲面
# 修改示例:Z = X**3 + Y**2 # 非对称曲面
三、等高线图绘制
3.1 基础等高线图
import matplotlib.pyplot as plt
plt.figure(figsize=(10,6))
contour = plt.contour(X, Y, Z)
plt.clabel(contour, inline=True, fontsize=8)
plt.title('Basic Contour Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()
3.2 填充式等高线图
plt.figure(figsize=(10,6))
contourf = plt.contourf(X, Y, Z, cmap='viridis')
plt.colorbar(contourf)
plt.title('Filled Contour Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()
3.3 参数说明
参数 | 说明 |
---|---|
levels | 设置等高线数量/具体值 |
cmap | 颜色映射(如'viridis','jet') |
alpha | 透明度(0-1) |
linewidths | 等高线宽度 |
四、三维曲面图绘制
4.1 3D图绘制实现
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(12,8))
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(X, Y, Z, cmap='coolwarm',
linewidth=0, antialiased=False)
fig.colorbar(surf, shrink=0.5, aspect=5)
ax.set_title('3D Surface Plot')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z Axis')
plt.show()
4.2 交互功能
• PyCharm用户需使用plt.show()
激活交互窗口
• 支持鼠标拖拽旋转视角
• 支持滚轮缩放视图
五、应用实例:损失函数可视化
# 定义二次损失函数
def loss_function(x, y):
return 0.5*x**2 + 2*y**2 + 3*x*y + 4
X, Y = np.meshgrid(np.linspace(-5,5,100),
np.linspace(-5,5,100))
Z = loss_function(X, Y)
# 绘制等高线图
plt.figure(figsize=(10,6))
CS = plt.contour(X, Y, Z, levels=20)
plt.clabel(CS, inline=1, fontsize=8)
plt.scatter([-3], [2], c='red') # 标记最小值点
plt.title('Loss Function Contour')
plt.show()
六、常见问题
6.1 网格矩阵理解
• X矩阵:每行重复相同的x坐标值
• Y矩阵:每列重复相同的y坐标值
• 矩阵形状:100x100(与输入点数量一致)
6.2 可视化优化技巧
- 调整颜色映射:使用
cmap
参数增强对比度 - 动态视角调整:3D图支持多角度观察曲面特征
- 添加辅助标记:在等高线图中标注关键点(如最小值点)
七、扩展练习
- 尝试不同的曲面函数(如Rosenbrock函数)
- 实现交互式高度显示(鼠标悬停显示Z值)
- 结合梯度下降算法动态显示优化路径
注:完整代码示例需配合Jupyter Notebook环境运行,建议调整
figsize
参数获得最佳显示效果。数学公式建议使用LaTeX格式呈现,如损失函数可表示为:$L(x,y) = \frac{1}{2}x^2 + 2y^2 + 3xy + 4$