python中数据可视化库(Matplotlib)
python中数据可视化库(Matplotlib)
- 安装 Matplotlib
- 基本使用
- 绘图类型示例
- 散点图 (Scatter Plot)
- 柱状图 (Bar Chart)
- 饼图 (Pie Chart)
- 直方图 (Histogram)
- 自定义图表样式
- 多面板图表 (Subplots)
- 3D 图表
Matplotlib 是 Python 中一个非常流行的绘图库,用于生成各种静态、动态、交互式的 2D 和 3D 图表,Matplotlib提供了丰富的绘图功能,包括线图、散点图、柱状图、饼图、等高线图等,且支持自定义图表的各种属性,如标题、坐标轴标签、图例等
安装 Matplotlib
pip install matplotlib
基本使用
在 Matplotlib 中,最常用的模块是 pyplot,通常通过别名 plt 来导入
import matplotlib.pyplot as plt
# 数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
# 创建一个新的图表
plt.figure()
# 绘制折线图
plt.plot(x, y)
# 添加标题和坐标轴标签
plt.title("Simple Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
#保存图标
plt.savefig('plot.png')
# 显示图表
plt.show()
绘图类型示例
散点图 (Scatter Plot)
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.scatter(x, y)
plt.title("Scatter Plot")
plt.xlabel("X")
plt.ylabel("Y")
plt.grid(True)
#保存图标
plt.savefig('scatter_plot.png')
plt.show()
柱状图 (Bar Chart)
import matplotlib.pyplot as plt
categories = ['Category1', 'Category2', 'Category3', 'Category4']
values = [5, 7, 9, 11]
plt.bar(categories, values)
plt.title("Bar Chart")
plt.xlabel("Categories")
plt.ylabel("Values")
plt.savefig('bar_chart_plot.png')
plt.show()
饼图 (Pie Chart)
import matplotlib.pyplot as plt
labels = ['Label1', 'Label2', 'Label3', 'Label4']
sizes = [15, 30, 45, 10]
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title("Pie Chart")
plt.savefig('pie_chart_plot.png')
plt.show()
直方图 (Histogram)
import matplotlib.pyplot as plt
import numpy as np
data = np.random.randn(1000) # 生成1000个随机数
plt.hist(data, bins=30) # bins 表示直方图的柱子数量
plt.title("Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.savefig('histogram_plot.png')
plt.show()
自定义图表样式
Matplotlib可自定义图表的各种样式,包括线条颜色、线型、标记样式等
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y, color='red', linestyle='--', marker='o', label='sin(x)')
plt.title("Custom Style Plot")
plt.xlabel("X")
plt.ylabel("Y")
plt.legend() # 显示图例
plt.grid(True) # 显示网格线
plt.savefig('custom_style_plot.png')
plt.show()
多面板图表 (Subplots)
Matplotlib 支持在一个窗口中绘制多个图表,可通过 subplots 函数来实现:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建一个 2x1 的子图网格,并获取第一个子图对象
fig, axs = plt.subplots(2, 1)
axs[0].plot(x, y1)
axs[0].set_title("sin(x)")
axs[1].plot(x, y2)
axs[1].set_title("cos(x)")
plt.tight_layout() # 调整子图间距
plt.savefig('subplots_plot.png')
plt.show()
3D 图表
Matplotlib 也支持 3D 图表的绘制,需要使用 mplot3d 模块:
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))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, cmap='viridis') # cmap 表示颜色映射
ax.set_title("3D Surface Plot")
plt.savefig('3D_plot.png')
plt.show()