从头开始的可视化数据 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 的熟悉,你可以探索更多高级功能,比如动画、三维图表等。如果有任何问题或想要进一步了解特定功能,随时提问!

相关推荐
艾伦~耶格尔32 分钟前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
yujkss1 小时前
Python脚本每天爬取微博热搜-终版
开发语言·python
yzx9910131 小时前
小程序开发APP
开发语言·人工智能·python·yolo
飞翔的佩奇1 小时前
【完整源码+数据集+部署教程】二维码与查找模式检测系统源码和数据集:改进yolo11-CSwinTransformer
python·yolo·计算机视觉·数据集·yolo11·二维码与查找模式检测
大霞上仙1 小时前
实现自学习系统,输入excel文件,能学习后进行相应回答
python·学习·excel
啊阿狸不会拉杆1 小时前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
Caven771 小时前
【pytorch】reshape的使用
pytorch·python
无规则ai1 小时前
动手学深度学习(pytorch版):第四章节—多层感知机(5)权重衰减
人工智能·pytorch·python·深度学习
你知道网上冲浪吗3 小时前
【原创理论】Stochastic Coupled Dyadic System (SCDS):一个用于两性关系动力学建模的随机耦合系统框架
python·算法·数学建模·数值分析
fakaifa3 小时前
点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
小程序·uni-app·php·源码下载·点大餐饮·扫码点单