matplotlib超详细教程:从入门到精通(下篇)
继续深入探索Matplotlib的高级功能以及实用技巧,可以帮助你在数据可视化方面更上一层楼。在下篇中,我们将更全面地掌握样式定制、交互式图形、三维绘图以及动画。
第五章:样式定制
5.1 使用样式表
Matplotlib 提供了一些预定义样式,让图形看起来更加美观。
import matplotlib.pyplot as plt
# 列出可用样式
print(plt.style.available)
# 应用样式
plt.style.use('ggplot')
# 创建图形
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.title('Styled Plot')
plt.show()
5.2 自定义颜色和字体
自定义图形的颜色和字体可以使其更加符合特定需求。
plt.plot([1, 2, 3, 4], [10, 20, 25, 30], color='skyblue', linewidth=2, linestyle='--')
plt.title('Custom Colors', fontsize=14, fontweight='bold')
plt.xlabel('X axis', fontsize=12)
plt.ylabel('Y axis', fontsize=12)
plt.show()
第六章:交互式图形
6.1 使用 mpl_connect
进行事件处理
可以通过 mpl_connect
连接事件,添加交互功能。
def onclick(event):
print(f'Button: {event.button}, x: {event.x}, y: {event.y}, xdata: {event.xdata}, ydata: {event.ydata}')
fig, ax = plt.subplots()
ax.plot([0, 1, 2], [10, 20, 25])
# 连接事件
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()
第七章:三维绘图
7.1 基本三维图
利用 mplot3d
库在Matplotlib中创建三维图形。
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X = np.linspace(-5, 5, 100)
Y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))
# 绘制曲面
ax.plot_surface(X, Y, Z, cmap='viridis')
plt.show()
第八章:动画
8.1 使用 FuncAnimation
制作简单的动画可以让数据展示更加生动。
from matplotlib.animation import FuncAnimation
fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'r', animated=True)
def init():
ax.set_xlim(0, 2*np.pi)
ax.set_ylim(-1, 1)
return ln,
def update(frame):
xdata.append(frame)
ydata.append(np.sin(frame))
ln.set_data(xdata, ydata)
return ln,
ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128), init_func=init, blit=True)
plt.show()
第九章:导出和保存图形
9.1 普通保存
可以将图形保存为多种格式,例如 PNG、SVG、PDF 等。
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.savefig('plot.png') # 保存为 PNG 文件
9.2 设置 DPI 和透明度
调整导出时的分辨率和透明度。
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.savefig('plot.png', dpi=300, transparent=True)
通过这些模块和概念,你将能够更加灵活和专业地使用Matplotlib来满足各种数据可视化需求。完整掌握这些技能,你便能在任何项目中自如地展示数据。