案例一:基础折线图
简介
折线图是matplotlib中最基础的图表类型,适用于展示数据随时间或其他连续变量的变化趋势。
代码示例
import matplotlib.pyplot as plt
import numpy as np
# 数据准备
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 绘制折线图
plt.figure(figsize=(8, 5))
plt.plot(x, y, label='sin(x)')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('基础折线图')
plt.legend()
plt.grid(True)
plt.show()
案例二:柱状图
简介
柱状图用于比较不同类别的数据,通过柱子的高度来表示数据的大小。
代码示例
import matplotlib.pyplot as plt
# 数据准备
categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 5]
# 绘制柱状图
plt.figure(figsize=(8, 5))
plt.bar(categories, values, color='skyblue')
plt.xlabel('类别')
plt.ylabel('值')
plt.title('柱状图')
plt.show()
案例三:散点图
简介
散点图用于展示两个变量之间的关系,每个点代表一个观测值。
代码示例
import matplotlib.pyplot as plt
import numpy as np
# 数据准备
x = np.random.rand(50)
y = np.random.rand(50)
# 绘制散点图
plt.figure(figsize=(8, 5))
plt.scatter(x, y, c='red', label='样本点')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('散点图')
plt.legend()
plt.grid(True)
plt.show()
案例四:箱线图
简介
箱线图用于展示一组数据的分布情况,包括中位数、四分位数和异常值。
代码示例
import matplotlib.pyplot as plt
import numpy as np
# 数据准备
data = np.random.normal(0, 1, 1000)
# 绘制箱线图
plt.figure(figsize=(8, 5))
plt.boxplot(data, vert=False)
plt.title('箱线图')
plt.show()
案例五:饼图
简介
饼图用于展示各部分占总体的比例,非常适合展示百分比数据。
代码示例
import matplotlib.pyplot as plt
# 数据准备
labels = ['A', 'B', 'C', 'D']
sizes = [25, 35, 20, 20]
# 绘制饼图
plt.figure(figsize=(8, 5))
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)
plt.title('饼图')
plt.show()
案例六:3D曲面图
简介
3D曲面图用于展示三维空间中的数据分布。
代码示例
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 数据准备
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))
# 绘制3D曲面图
fig = plt.figure(figsize=(8, 5))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')
plt.title('3D曲面图')
plt.show()
案例七:散点图矩阵
简介
散点图矩阵用于展示多个变量之间的关系,非常适合数据探索。
代码示例
import matplotlib.pyplot as plt
import numpy as np
# 数据准备
np.random.seed(0)
data = np.random.rand(50, 5)
# 绘制散点图矩阵
fig, axes = plt.subplots(5, 5, figsize=(15, 15))
for i in range(5):
for j in range(5):
axes[i, j].scatter(data[:, j], data[:, i])
axes[i, j].set_xticks([])
axes[i, j].set_yticks([])
plt.show()
案例八:时序图
简介
时序图用于展示数据随时间的变化趋势。
代码示例
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 数据准备
dates = pd.date_range('20210101', periods=100)
data = pd.DataFrame(np.random.randn(100, 4), index=dates, columns=['A', 'B', 'C', 'D'])
# 绘制时序图
fig, axes = plt.subplots(2, 2, figsize=(15, 10))
for ax, col in zip(axes.ravel(), data.columns):
ax.plot(data.index, data[col])
ax.set_title(col)
plt.show()
案例九:地图图
简介
地图图用于展示地理数据,可以使用matplotlib中的basemap模块。
代码示例
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
# 数据准备
lon = [-100, -100, -99, -99]
lat = [20, 20, 21, 21]
x, y = Basemap(lambda lon, lat: 1000*lon, lambda lon, lat: 1000*lat)(lon, lat)
# 绘制地图图
m = Basemap(projection='cyl', resolution='c')
m.drawcoastlines()
m.drawcountries()
m.scatter(x, y, color='r', marker='o')
plt.title('地图图')
plt.show()
案例十:自定义样式
简介
通过自定义样式,可以创建具有个性化外观的图表。
代码示例
import matplotlib.pyplot as plt
import numpy as np
# 自定义样式
plt.style.use('seaborn-darkgrid')
# 数据准备
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 绘制折线图
plt.figure(figsize=(8, 5))
plt.plot(x, y, label='sin(x)')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('自定义样式折线图')
plt.legend()
plt.grid(True)
plt.show()
以上是10个实用案例的深度解析,通过这些案例,可以帮助您更好地掌握matplotlib,并轻松绘制出专业图表。
