从头开始的可视化数据 matplotlib:初学者努力绘制数据图

从头开始学习使用 matplotlib 可视化数据,对于初学者来说,可能会有些挑战,但 matplotlib 的核心理念非常清晰:绘制图表需要了解如何设置图形、坐标轴以及如何用数据填充它们。我们可以通过一些简单的例子来逐步介绍基本步骤。

1. 安装 matplotlib

在开始之前,请确保你已经安装了 matplotlib。如果没有,可以通过以下命令安装:

复制代码
pip install matplotlib

2. matplotlib 的基本构造

matplotlib 中最常见的绘图库是 pyplot 模块,它提供了类似于 MATLAB 的接口。我们通常这样引入它:

复制代码
import matplotlib.pyplot as plt

3. 绘制第一个简单的图表

我们先从一个非常简单的折线图开始:

复制代码
import matplotlib.pyplot as plt

# 数据:x轴和y轴
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 添加标题和标签
plt.title("Simple Line Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")

# 显示图表
plt.show()
代码解读:
  • plt.plot(x, y):使用 plot() 函数绘制折线图,xy 是数据点的坐标。
  • plt.title():为图表添加标题。
  • plt.xlabel()plt.ylabel():为 x 轴和 y 轴添加标签。
  • plt.show():显示图表。

这段代码将会生成一个简单的线性关系的图表,x 轴是 1 到 5,y 轴是它们对应的平方值。

4. 绘制散点图

如果你想展示数据点之间的关系而不是使用折线,可以绘制散点图。

复制代码
import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建散点图
plt.scatter(x, y)

# 添加标题和标签
plt.title("Simple Scatter Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")

# 显示图表
plt.show()
代码解读:
  • plt.scatter(x, y)scatter() 函数用于绘制散点图,每个 (x, y) 对应一个点。

5. 绘制柱状图 (Bar Chart)

柱状图非常适合展示分类数据。例如,我们可以绘制一组学生考试成绩的柱状图。

复制代码
import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
scores = [85, 90, 78, 92]

# 创建柱状图
plt.bar(categories, scores)

# 添加标题和标签
plt.title("Student Scores")
plt.xlabel("Student")
plt.ylabel("Score")

# 显示图表
plt.show()
代码解读:
  • plt.bar(categories, scores)bar() 函数用于创建柱状图,categories 是柱的分类,scores 是柱的高度。

6. 绘制直方图 (Histogram)

直方图可以帮助你可视化数据的分布。例如,以下示例展示了生成的随机数据的分布。

复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成1000个正态分布的随机数据
data = np.random.randn(1000)

# 创建直方图
plt.hist(data, bins=30)

# 添加标题和标签
plt.title("Histogram of Random Data")
plt.xlabel("Value")
plt.ylabel("Frequency")

# 显示图表
plt.show()
代码解读:
  • np.random.randn(1000):生成1000个正态分布的随机数。
  • plt.hist(data, bins=30)hist() 函数用于绘制直方图,bins 参数定义了区间的数量。

7. 自定义样式

matplotlib 提供了大量自定义选项。你可以修改颜色、线型、点样式等。

示例:自定义线型和颜色
复制代码
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 自定义折线图的线型和颜色
plt.plot(x, y, color='green', linestyle='--', marker='o')

plt.title("Customized Line Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()
代码解读:
  • color='green':线条的颜色设为绿色。
  • linestyle='--':线条类型设为虚线。
  • marker='o':数据点的标记设为圆点。

8. 添加多个数据集

你还可以在同一个图表中绘制多个数据集。

复制代码
import matplotlib.pyplot as plt

# 两组数据
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]

# 绘制第一组数据
plt.plot(x, y1, label="y = x^2")

# 绘制第二组数据
plt.plot(x, y2, label="y = x")

# 添加图例
plt.legend()

plt.title("Multiple Line Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")

# 显示图表
plt.show()
代码解读:
  • label="y = x^2"label="y = x":为每条线设置标签。
  • plt.legend():在图表中显示图例。

9. 子图 (Subplots)

如果你想在一个窗口中展示多个图表,可以使用 subplots() 方法。

复制代码
import matplotlib.pyplot as plt

# 创建1行2列的子图
fig, axs = plt.subplots(1, 2)

# 第一个子图
axs[0].plot([1, 2, 3], [1, 4, 9])
axs[0].set_title("Subplot 1")

# 第二个子图
axs[1].plot([1, 2, 3], [1, 2, 3])
axs[1].set_title("Subplot 2")

# 显示图表
plt.tight_layout()
plt.show()
代码解读:
  • plt.subplots(1, 2):创建一个包含1行2列的图表。
  • axs[0]axs[1]:分别表示两个子图。
  • plt.tight_layout():自动调整子图之间的间距。

10. 保存图表

最后,如果你想将图表保存为图片,可以使用 savefig() 函数。

复制代码
plt.plot([1, 2, 3], [1, 4, 9])
plt.title("Example Plot")

# 保存为PNG格式
plt.savefig("plot.png")

# 显示图表
plt.show()

总结

这只是 matplotlib 的一个入门介绍。通过这些简单的例子,你可以:

  • 创建各种类型的图表(折线图、散点图、柱状图、直方图等)。
  • 使用 plt.plot()plt.scatter()plt.bar() 等函数绘制图表。
  • 自定义颜色、线型、点样式等。
  • 在一个图表中展示多个数据集或子图。

随着你对 matplotlib 的熟悉,你可以探索更多高级功能,比如动画、三维图表等。如果有任何问题或想要进一步了解特定功能,随时提问!

相关推荐
数据智能老司机14 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机15 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机15 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机15 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i15 小时前
drf初步梳理
python·django
每日AI新事件15 小时前
python的异步函数
python
BingoGo15 小时前
PHP 如何利用 Opcache 来实现保护源码
后端·php
这里有鱼汤16 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook1 天前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室1 天前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python