如何在 Matplotlib 中在同一个图形上绘制多个函数?
Posted
技术标签:
【中文标题】如何在 Matplotlib 中在同一个图形上绘制多个函数?【英文标题】:How to plot multiple functions on the same figure, in Matplotlib? 【发布时间】:2014-04-12 03:12:24 【问题描述】:如何在同一图中在域 t
上绘制以下 3 个函数(即 sin
、cos
和加法)?
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
【问题讨论】:
【参考方案1】:要在同一个图形上绘制多个图形,您必须这样做:
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:你所说的“清除情节”是什么意思?是否要关闭绘图窗口并绘制一个新窗口? 没关系,调用plt.show()
后默认图形会自动清除,因此再次绘制不会在同一个图形上绘制。
如何自定义高度、宽度?在我的情况下,默认尺寸太小。 figsize
不工作
@NikhilVJ:fig = plt.figure(figsize=(10,10)), ax = fig.add_subplot(111), ax.plot(a,b,'r'), fig.show()
,原则上应该可以。【参考方案2】:
也许是一种更 Pythonic 的方式。
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()
【讨论】:
你也可以用这个方法改变每个图的颜色吗?如果有,怎么做? 您可以通过将plt.plot()
部分更改为:plt.plot(t, a, 'b', t, b, 'g', t, c, 'y')
来指定颜色。您可以根据此链接中给出的颜色指定颜色:matplotlib.org/users/colors.html
难道我们不能在 pyplot 中使用 ion()
这样做太正确,而不是在一行中绘制所有内容吗?
@toing_toing 抱歉,我不太了解ion()
。可以举个例子吗?
这个答案比公认的答案“更 Pythonic”吗? “显式胜于隐式。”和可读性支持接受的答案恕我直言(我承认这是主观的)。通过对三条曲线使用类似的“t”变量来快速理解您的密集 plt.plot() 调用,这不是系统的。话虽如此,我认为知道这个版本的存在很有趣。【参考方案3】:
只需使用函数plot
如下
figure()
...
plot(t, a)
plot(t, b)
plot(t, c)
【讨论】:
【参考方案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()
【讨论】:
以上是关于如何在 Matplotlib 中在同一个图形上绘制多个函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Matplotlib 的子图中独立绘制相同的图形? [复制]