import matplotlib.pyplot as plt
是 Python 中用于导入 Matplotlib 库的绘图模块 pyplot
并设置别名为 plt
的标准语句。Matplotlib 是一个强大的可视化库,广泛用于数据可视化、图表绘制和科学绘图。以下是关于该语句的详细说明:
import matplotlib.pyplot
matplotlib
是基础库,pyplot
是其子模块,提供类似 MATLAB 的绘图接口,支持各种图表类型(折线图、散点图、柱状图等)。as plt
pyplot
模块简称为 plt
,这是 Python 社区的标准约定,方便代码书写(例如用 plt.plot()
代替 matplotlib.pyplot.plot()
)。pyplot
?导入后,你可以使用 pyplot
提供的各种绘图函数:
python
import matplotlib.pyplot as plt # 导入绘图模块
# 绘制简单的折线图
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y) # 绘制折线
plt.title('平方数折线图') # 设置标题
plt.xlabel('x') # 设置x轴标签
plt.ylabel('y = x²') # 设置y轴标签
plt.show() # 显示图表
import matplotlib.pyplot as plt # 导入绘图模块
# 绘制简单的折线图
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y) # 绘制折线
plt.title('平方数折线图') # 设置标题
plt.xlabel('x') # 设置x轴标签
plt.ylabel('y = x²') # 设置y轴标签
plt.show() # 显示图表
如果导入时提示 ModuleNotFoundError
,说明未安装 Matplotlib,可通过以下命令安装:
bash
pip install matplotlib
pip install matplotlib
bash
conda install matplotlib
conda install matplotlib
在 Jupyter 中,还需要添加一个魔法命令来确保图表在单元格内显示:
python
%matplotlib inline # 仅需在Jupyter中使用,让图表内联显示
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [4, 5, 6]
plt.plot(x, y)
plt.show()
%matplotlib inline # 仅需在Jupyter中使用,让图表内联显示
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [4, 5, 6]
plt.plot(x, y)
plt.show()
plt.plot()
plt.scatter()
plt.bar()
plt.pie()
plt.hist()
plt.boxplot()
python
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 设置中文字体(避免中文显示乱码)
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# 创建更复杂的图表
plt.figure(figsize=(10, 5)) # 设置图表大小
plt.plot(x, y, 'b-', linewidth=2, label='sin(x)') # 蓝色实线,线宽2,添加图例标签
plt.plot(x, np.cos(x), 'r--', label='cos(x)') # 红色虚线
plt.title('正弦和余弦函数') # 标题
plt.xlabel('x轴') # x轴标签
plt.ylabel('y轴') # y轴标签
plt.grid(True) # 显示网格
plt.legend() # 显示图例
plt.ylim(-1.5, 1.5) # 设置y轴范围
plt.show()
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 设置中文字体(避免中文显示乱码)
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# 创建更复杂的图表
plt.figure(figsize=(10, 5)) # 设置图表大小
plt.plot(x, y, 'b-', linewidth=2, label='sin(x)') # 蓝色实线,线宽2,添加图例标签
plt.plot(x, np.cos(x), 'r--', label='cos(x)') # 红色虚线
plt.title('正弦和余弦函数') # 标题
plt.xlabel('x轴') # x轴标签
plt.ylabel('y轴') # y轴标签
plt.grid(True) # 显示网格
plt.legend() # 显示图例
plt.ylim(-1.5, 1.5) # 设置y轴范围
plt.show()
python
plt.plot(x, y)
plt.savefig('my_plot.png', dpi=300, bbox_inches='tight') # 保存为PNG文件
# 或保存为PDF、SVG等格式:plt.savefig('my_plot.pdf')
plt.plot(x, y)
plt.savefig('my_plot.png', dpi=300, bbox_inches='tight') # 保存为PNG文件
# 或保存为PDF、SVG等格式:plt.savefig('my_plot.pdf')
导入特定函数:
python
from matplotlib.pyplot import plot, show # 仅导入部分函数
plot(x, y)
show()
from matplotlib.pyplot import plot, show # 仅导入部分函数
plot(x, y)
show()
导入所有功能(不推荐):
python
from matplotlib.pyplot import * # 可能导致命名冲突
from matplotlib.pyplot import * # 可能导致命名冲突
在 Jupyter Notebook 中使用 Matplotlib 库进行数据可视化非常便捷,以下是详细的步骤和注意事项:
python
import matplotlib.pyplot as plt
import numpy as np # 用于生成示例数据
import matplotlib.pyplot as plt
import numpy as np # 用于生成示例数据
确保图表直接显示在 Notebook 中:
python
%matplotlib inline
%matplotlib inline
python
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title('正弦函数')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.show() # 显示图表(在Jupyter中可省略,但建议保留)
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title('正弦函数')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.show() # 显示图表(在Jupyter中可省略,但建议保留)
python
%matplotlib inline
%matplotlib inline
python
%matplotlib notebook # 或 %matplotlib widget (JupyterLab需要安装ipympl)
%matplotlib notebook # 或 %matplotlib widget (JupyterLab需要安装ipympl)
python
%config InlineBackend.figure_format = 'retina' # 高清显示(Mac和支持Retina的设备)
%config InlineBackend.figure_format = 'retina' # 高清显示(Mac和支持Retina的设备)
如果图表中的中文显示为方块,需要设置字体:
python
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"] # 依次尝试中文字体
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"] # 依次尝试中文字体
python
plt.plot(x, y, 'b-', linewidth=2) # 蓝色实线,线宽2
plt.plot(x, y, 'b-', linewidth=2) # 蓝色实线,线宽2
python
plt.scatter(x, y, color='red', marker='o') # 红色圆点
plt.scatter(x, y, color='red', marker='o') # 红色圆点
python
categories = ['A', 'B', 'C']
values = [10, 25, 15]
plt.bar(categories, values)
categories = ['A', 'B', 'C']
values = [10, 25, 15]
plt.bar(categories, values)
python
sizes = [30, 40, 20, 10]
labels = ['A', 'B', 'C', 'D']
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
sizes = [30, 40, 20, 10]
labels = ['A', 'B', 'C', 'D']
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
python
data = np.random.normal(0, 1, 1000) # 正态分布数据
plt.hist(data, bins=30)
data = np.random.normal(0, 1, 1000) # 正态分布数据
plt.hist(data, bins=30)
python
fig, axes = plt.subplots(2, 2, figsize=(10, 8)) # 2x2网格
axes[0, 0].plot(x, np.sin(x))
axes[0, 1].plot(x, np.cos(x))
axes[1, 0].plot(x, np.tan(x))
axes[1, 1].plot(x, x**2)
plt.tight_layout() # 自动调整布局
fig, axes = plt.subplots(2, 2, figsize=(10, 8)) # 2x2网格
axes[0, 0].plot(x, np.sin(x))
axes[0, 1].plot(x, np.cos(x))
axes[1, 0].plot(x, np.tan(x))
axes[1, 1].plot(x, x**2)
plt.tight_layout() # 自动调整布局
python
fig, axes = plt.subplots(2, 1, sharex=True) # 共享x轴
axes[0].plot(x, np.sin(x))
axes[1].plot(x, np.cos(x))
fig, axes = plt.subplots(2, 1, sharex=True) # 共享x轴
axes[0].plot(x, np.sin(x))
axes[1].plot(x, np.cos(x))
python
plt.title('图表标题', fontsize=16)
plt.xlabel('X轴', fontsize=12)
plt.ylabel('Y轴', fontsize=12)
plt.title('图表标题', fontsize=16)
plt.xlabel('X轴', fontsize=12)
plt.ylabel('Y轴', fontsize=12)
python
plt.plot(x, np.sin(x), label='sin(x)')
plt.plot(x, np.cos(x), label='cos(x)')
plt.legend(loc='upper right') # 图例位置
plt.plot(x, np.sin(x), label='sin(x)')
plt.plot(x, np.cos(x), label='cos(x)')
plt.legend(loc='upper right') # 图例位置
python
plt.xlim(0, 10) # x轴范围
plt.ylim(-1.5, 1.5) # y轴范围
plt.xlim(0, 10) # x轴范围
plt.ylim(-1.5, 1.5) # y轴范围
python
plt.grid(True, linestyle='--', alpha=0.7) # 虚线网格,透明度70%
plt.grid(True, linestyle='--', alpha=0.7) # 虚线网格,透明度70%
python
plt.savefig('my_plot.png', dpi=300, bbox_inches='tight') # 保存为PNG
# 或保存为PDF、SVG等矢量格式
plt.savefig('my_plot.pdf')
plt.savefig('my_plot.png', dpi=300, bbox_inches='tight') # 保存为PNG
# 或保存为PDF、SVG等矢量格式
plt.savefig('my_plot.pdf')
图表不显示
%matplotlib inline
中文显示乱码
图表模糊
%config InlineBackend.figure_format = 'retina'
plt.savefig('fig.png', dpi=300)
Seaborn 是基于 Matplotlib 的高级可视化库,提供更美观的默认样式:
python
import seaborn as sns
sns.set_style('whitegrid') # 设置样式
plt.plot(x, y)
import seaborn as sns
sns.set_style('whitegrid') # 设置样式
plt.plot(x, y)
结合 IPython Widgets 创建可交互图表:
python
from ipywidgets import interact
def plot_sin(freq=1):
plt.plot(x, np.sin(freq * x))
plt.ylim(-1.5, 1.5)
interact(plot_sin, freq=(0.5, 5, 0.1)); # 创建滑块控制频率
from ipywidgets import interact
def plot_sin(freq=1):
plt.plot(x, np.sin(freq * x))
plt.ylim(-1.5, 1.5)
interact(plot_sin, freq=(0.5, 5, 0.1)); # 创建滑块控制频率
通过以上步骤,你可以在 Jupyter Notebook 中高效地使用 Matplotlib 进行数据可视化。