
Matplotlib作为Python生态中最经典的可视化库,自2003年诞生以来始终保持着数据可视化领域的标杆地位。其核心优势在于:
安装命令:
# 基础安装pip install matplotlib# Anaconda环境conda install matplotlib# 验证安装import matplotlibprint(matplotlib.__version__) # 应显示3.5.0+import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0, 2*np.pi, 100)y = np.sin(x)plt.figure(figsize=(8,4)) # 创建画布plt.plot(x, y, label='sin(x)') # 绘制曲线plt.title('基础正弦曲线') # 添加标题plt.xlabel('X轴') # X轴标签plt.ylabel('Y轴') # Y轴标签plt.grid(True) # 显示网格plt.legend() # 显示图例plt.show() # 展示图形柱状图示例:
labels = ['Apple', 'Banana', 'Orange']values = [45, 30, 15]plt.bar(labels, values, color=['#FF6B6B', '#4ECDC4', '#FFE66D'])plt.title('水果销量对比')plt.ylim(0, 50)for i, v in enumerate(values): plt.text(i, v+1, str(v), ha='center')plt.show() 散点图进阶:
np.random.seed(42)x = np.random.randn(200)y = x * 2 + np.random.randn(200)plt.scatter(x, y, c=np.arctan2(y, x), cmap='viridis', alpha=0.7, edgecolors='w', linewidth=0.5)plt.colorbar(label='角度值')plt.xlabel('特征X')plt.ylabel('特征Y')plt.title('带色彩映射的散点分布')plt.show() fig, axs = plt.subplots(2, 2, figsize=(10,8))# 子图1:折线图axs[0,0].plot([0,1,2], [3,2,5], 'r--o')axs[0,0].set_title('子图1')# 子图2:水平柱状图axs[0,1].barh(['A','B','C'], [7,5,9], color='skyblue')axs[0,1].set_title('子图2')# 子图3:饼图axs[1,0].pie([30,25,45], labels=['X','Y','Z'], autopct='%1.1f%%', explode=(0,0.1,0))# 子图4:直方图axs[1,1].hist(np.random.randn(1000), bins=30, density=True, alpha=0.6)axs[1,1].set_title('正态分布直方图')plt.tight_layout()plt.show() from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure(figsize=(10,7))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))surf = ax.plot_surface(X, Y, Z, cmap='coolwarm', linewidth=0, antialiased=True)fig.colorbar(surf, shrink=0.5, aspect=5)ax.set_xlabel('X轴')ax.set_ylabel('Y轴')ax.set_zlabel('Z轴')ax.set_title('三维曲面图')plt.show() print(plt.style.available) # 查看所有内置样式plt.style.use('seaborn-darkgrid')x = np.arange(10)plt.plot(x, np.sin(x), 'o-', label='正弦')plt.plot(x, np.cos(x), 's--', label='余弦')plt.legend()plt.title('使用seaborn-darkgrid样式')plt.show() from matplotlib.animation import FuncAnimationfig, ax = plt.subplots()xdata, ydata = [], []ln, = ax.plot([], [], 'ro')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() plt.savefig('output.pdf', dpi=300, bbox_inches='tight') %matplotlib widget # 交互式视图%matplotlib inline # 静态嵌入模式股票数据可视化:
import pandas as pd# 加载示例数据data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/stockdata.csv')aapl = data[data['symbol'] == 'AAPL']fig, ax1 = plt.subplots(figsize=(12,6))color = 'tab:red'ax1.set_xlabel('日期')ax1.set_ylabel('收盘价', color=color)ax1.plot(pd.to_datetime(aapl['date']), aapl['close'], color=color)ax1.tick_params(axis='y', labelcolor=color)ax2 = ax1.twinx() # 共享x轴color = 'tab:blue'ax2.set_ylabel('成交量', color=color)ax2.bar(pd.to_datetime(aapl['date']), aapl['volume'], color=color, alpha=0.3)ax2.tick_params(axis='y', labelcolor=color)plt.title('苹果公司股价与成交量趋势')fig.autofmt_xdate() # 自动旋转日期标签plt.show()通过系统掌握Matplotlib的核心功能,开发者可以轻松应对从基础图表到复杂仪表盘的各种可视化需求。建议结合Pandas进行数据处理,并尝试与Seaborn、Plotly等库配合使用,以构建更专业的数据可视化方案。