我遇到一个奇怪的问题,使用matplotlib绘制一个自定义颜色的函数。我的图像底部有一个奇怪的红色图形。这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
def graph(formulas, x1, x2):
x = np.linspace(x1, x2, 400)
for i, formula in enumerate(formulas):
print i
y = formula(x)
plt.plot(x, y,(1.0, 0.25, 0.25))
plt.show()
def parabola(a):
return (lambda x: a * x**2)
graph((parabola(1.0),), -5, 5)
这是matplotlib自定义颜色文档:https://matplotlib.org/users/colors.html
我不知道出了什么问题。当我使用'r'
作为我的颜色时,图形效果非常好。
编辑:我刚刚使用默认颜色。但如果有人能解释发生了什么,我仍然会非常感兴趣。
答案 0 :(得分:3)
你的问题是多语法' plot
命令。将参数传递给plot命令的一种可能方法是(直接来自matplotlib documentation):
import numpy as np
import matplotlib.pyplot as plt
# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)
# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
该命令绘制三条曲线,相应的第一和第二个参数(对于每条曲线)是x
和y
坐标,相应的第三个参数是线条颜色和样式。您也可以省略线型参数
plt.plot(t, t, t, t**2, t, t**3)
在这种情况下,matplotlib使用默认颜色。在您的情况下,您想要成为颜色的第三个参数被解释为第二个曲线的坐标。因为只有一个可迭代,它被解释为曲线的y
值,而x值是自动填充的'为(0,1,2)
。要在示例中获得所需的行为,请明确添加关键字color
:
plt.plot(x, y, color=(1.0, 0.25, 0.25))
然后结果看起来像预期的那样: