使用自定义颜色的Matplotlib奇怪图形

时间:2018-01-12 01:42:51

标签: python matplotlib

我遇到一个奇怪的问题,使用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'作为我的颜色时,图形效果非常好。

编辑:我刚刚使用默认颜色。但如果有人能解释发生了什么,我仍然会非常感兴趣。

1 个答案:

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

该命令绘制三条曲线,相应的第一和第二个参数(对于每条曲线)是xy坐标,相应的第三个参数是线条颜色和样式。您也可以省略线型参数

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

然后结果看起来像预期的那样:

result of the code posted by the OP with the plot command corrected as indicated above