Matplotlib 技巧速查
Matplotlib 是一个用于创建二维图表的 Python 库,它可以轻松地生成各种图表,包括线图、柱状图、散点图等。在数据可视化和科学计算中,Matplotlib 是一个非常强大和常用的工具。本文将详细介绍 Matplotlib 的常用功能,提供一份 Matplotlib Cheat Sheet,帮助你快速上手使用 Matplotlib。
安装 Matplotlib
在开始之前,首先需要安装 Matplotlib。你可以使用 pip 在命令行中安装 Matplotlib:
pip install matplotlib
安装完成后,就可以开始使用 Matplotlib 来绘制各种图表了。
绘制简单的线图
首先,让我们从绘制一个简单的线图开始。下面是一个简单的示例代码,它绘制了一条平滑的正弦曲线:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()
Output:
运行上面的代码,你将看到一个正弦曲线的图表。
绘制多个子图
Matplotlib 允许在同一个图表中绘制多个子图。下面这个示例代码展示了如何绘制两个子图:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.subplot(2, 1, 1)
plt.plot(x, y1)
plt.subplot(2, 1, 2)
plt.plot(x, y2)
plt.show()
Output:
运行上面的代码,你将看到一个包含两个子图的图表。
添加标签和标题
在绘制图表时,添加标签和标题是很有用的。下面这个示例代码展示了如何添加标签和标题:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Sin Curve')
plt.show()
Output:
运行上面的代码,你将看到一个带有标签和标题的正弦曲线图表。
设置坐标轴范围
有时候,我们需要手动设置坐标轴的范围,以便更好地展示数据。下面这个示例代码展示了如何设置坐标轴的范围:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xlim(0, 2*np.pi)
plt.ylim(-1, 1)
plt.show()
Output:
运行上面的代码,你将看到一个设置了坐标轴范围的正弦曲线图表。
绘制柱状图
除了线图,Matplotlib 还可以绘制柱状图。下面这个示例代码展示了如何绘制一个简单的柱状图:
import matplotlib.pyplot as plt
x = ['A', 'B', 'C', 'D']
y = [10, 20, 15, 25]
plt.bar(x, y)
plt.show()
Output:
运行上面的代码,你将看到一个简单的柱状图。
添加图例
当在同一个图表中绘制多个数据集时,添加图例是很有用的。下面这个示例代码展示了如何添加图例:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label='Sin Curve')
plt.plot(x, y2, label='Cos Curve')
plt.legend()
plt.show()
Output:
运行上面的代码,你将看到一个带有图例的正弦曲线和余弦曲线图表。
绘制散点图
散点图可以用来展示两个变量之间的关系。下面这个示例代码展示了如何绘制一个简单的散点图:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.rand(100)
y = np.random.rand(100)
plt.scatter(x, y)
plt.show()
Output:
运行上面的代码,你将看到一个简单的散点图。
绘制直方图
直方图可以用来展示数据的分布情况。下面这个示例代码展示了如何绘制一个简单的直方图:
import matplotlib.pyplot as plt
import numpy as np
data = np.random.randn(1000)
plt.hist(data, bins=30)
plt.show()
Output:
运行上面的代码,你将看到一个简单的直方图。
设置线条样式和颜色
在绘制线图时,可以设置线条的样式和颜色。下面这个示例代码展示了如何设置线条的样式和颜色:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
plt.plot(x, y, linestyle='--', color='r')
plt.show()
Output:
运行上面的代码,你将看到一个红色虚线的正弦曲线图表。
添加网格线
在图表中添加网格线可以更好地帮助读者理解数据。下面这个示例代码展示了如何添加网格线:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.grid(True)
plt.show()
Output:
运行上面的代码,你将看到一个带有网格线的正弦曲线图表。
保存图表
Matplotlib 允许将图表保存为图片或 PDF 文件。下面这个示例代码展示了如何保存图表为 PNG 文件:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.savefig('sin_curve.png')
运行上面的代码后,你将在当前目录下看到一个名为 sin_curve.png
的文件,它是保存的正弦曲线图表。
使用子图表格
Matplotlib 提供了更灵活的子图绘制方式,可以使用 subplot2grid
来自定义子图的位置和大小。下面这个示例代码展示了如何使用子图表格:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.subplot2grid((2, 2), (0, 0))
plt.plot(x, y1)
plt.subplot2grid((2, 2), (0, 1))
plt.plot(x, y2)
plt.subplot2grid((2, 2), (1, 0), colspan=2)
plt.plot(x, y1 + y2)
plt.show()
Output:
运行上面的代码,你将看到一个使用子图表格的图表,其中包含了三个子图。
自定义图表风格
Matplotlib 支持自定义图表风格,你可以通过设置不同的风格来美化图表。下面这个示例代码展示了如何设置图表风格为 ggplot
:
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('ggplot')
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()
Output:
运行上面的代码,你将看到一个在 ggplot
风格下的正弦曲线图表。
使用标记点
在绘制线图时,可以使用标记点来突出数据的关键点。下面这个示例代码展示了如何在正弦曲线图表中添加标记点:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
plt.plot(x, y, marker='o', markersize=5)
plt.show()
Output:
运行上面的代码,你将看到一个带有标记点的正弦曲线图表。
使用不同的图表类型
除了线图、柱状图、散点图和直方图之外,Matplotlib 还支持绘制其他类型的图表,如饼图、箱线图、热力图等。下面这个示例代码展示了如何绘制一个简单的饼图:
import matplotlib.pyplot as plt
sizes = [30, 20, 15, 35]
labels = ['A', 'B', 'C', 'D']
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.show()
Output:
运行上面的代码,你将看到一个简单的饼图。