如何在同一图中绘制多个函数

162 投票
5 回答
724974 浏览
提问于 2025-04-17 21:28

我想在同一个图上画出以下三个函数,也就是 sincos 以及它们的和,这些函数的自变量是 t。请问我该怎么做呢?

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(0, 2*np.pi, 400)

a = np.sin(t)
b = np.cos(t)
c = a + b

5 个回答

2

一个比较简洁的方法是把函数的值横向连接起来,形成一个形状为 (len(t), 3) 的数组,然后调用 plot() 来绘图。

t = np.linspace(0, 2*np.pi, 400)

a = np.sin(t)
b = np.cos(t)
c = a + b

plt.plot(t, np.c_[a, b, c]);

如果数据不是来自numpy数组,并且你不想依赖numpy,那么 zip() 就可以帮你了。

plt.plot(t, list(zip(a, b, c)));

因为在同一个图上有3个不同的图形,可能需要加个图例来区分它们。这个可以通过传递标签来轻松实现。

plt.plot(t, np.c_[a, b, c], label=['sin', 'cos', 'sin+cos']);
plt.legend();

img1

4

如果你想处理图形,这里有一个例子,说明如何在同一个图里绘制多个ROC曲线:

from matplotlib import pyplot as plt
plt.figure()
for item in range(0, 10, 1): 
    plt.plot(fpr[item], tpr[item])
plt.show()
9

只需像下面这样使用 plot 函数就可以了。

figure()
...
plot(t, a)
plot(t, b)
plot(t, c)
72

也许有一种更符合Python风格的方法来做到这一点。

from numpy import *
import math
import matplotlib.pyplot as plt

t = linspace(0,2*math.pi,400)
a = sin(t)
b = cos(t)
c = a + b

plt.plot(t, a, t, b, t, c)
plt.show()

在这里输入图片描述

255

如果你想在同一个图上画多个图形,你需要这样做:

from numpy import *
import math
import matplotlib.pyplot as plt

t = linspace(0, 2*math.pi, 400)
a = sin(t)
b = cos(t)
c = a + b

plt.plot(t, a, 'r') # plotting t, a separately 
plt.plot(t, b, 'b') # plotting t, b separately 
plt.plot(t, c, 'g') # plotting t, c separately 
plt.show()

在这里输入图片描述

撰写回答