在Matplotlib中,如何在同一图形上绘制多个函数?


109

我如何可以绘制以下3个功能(即sincos并增加),在域t,在相同的数字?

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

Answers:


180

要在同一图形上绘制多个图形,您必须执行以下操作:

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()

在此处输入图片说明


好的,如果要在新图形上绘制下一个图形,那么如何清除图形?
NoName

@NoName:“清除情节”是什么意思?您要关闭绘图窗口并绘制一个新窗口吗?
Srivatsan

没关系,默认数字会在调用后自动清除,plt.show()因此再次绘制不会在同一图形上绘制。
NoName

51

也许是更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()

在此处输入图片说明


1
您还可以使用此方法更改每个图的颜色吗?如果是这样,怎么办?
nbro

4
您可以通过将plt.plot()零件更改为来指定颜色plt.plot(t, a, 'b', t, b, 'g', t, c, 'y')。您可以根据此链接中给出的颜色指定颜色:matplotlib.org/users/colors.html
Jash Shah,2010年

我们不能ion()在pyplot中使用它,而不是将所有内容都绘制在一行中吗?
toing_toing

@toing_toing对不起,我不太了解ion()。你能举个例子说明吗?
贾什·沙

1
这个比接受的答案“更pythonic”如何?“显式比隐式好。” 可读性支持公认的答案恕我直言(尽管我承认这是主观的)。通过对三个曲线使用类似的“ t”变量(不是系统的),可以快速理解密集的plt.plot()调用。话虽如此,我认为知道这个版本的存在很有趣。
Blupon

6

只需使用功能plot如下

figure()
...
plot(t, a)
plot(t, b)
plot(t, c)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.