matplotlib:通过迭代相关的灰度进行线条绘制的着色

3

作为一个相对新手的程序员,我在如何绘制插值函数的一系列迭代方面遇到了麻烦。随着迭代指数的增加,绘图会从黑色逐渐变为浅灰色。

例如,

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d

for t in np.arange(0.,2., 0.4):
    x = np.linspace(0.,4, 100)
    y = np.sin(x-2*t) + 0.01 * np.random.normal(size=x.shape)
    yint = interp1d(x, y)
    plt.plot(x, yint(x))

plt.show()

产生 enter image description here

我想让蓝色正弦函数变为黑色,其余部分随着t的增加(向右)逐渐变得更轻和灰色。我该怎么做?

感谢您所有慷慨的帮助!

1个回答

5
请见:http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.plot 例如,您可以设置plt.plot(x, yint(x), color=(0.5, 0.5, 0.5))来绘制灰色线条。您可以根据需要设置颜色值(0.0为黑色,1.0为白色)。以下是一个简单的示例:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d

for t in np.arange(0.,2., 0.4):
    x = np.linspace(0.,4, 100)
    y = np.sin(x-2*t) + 0.01 * np.random.normal(size=x.shape)
    yint = interp1d(x, y)
    print t
    col = (t/2.0, t/2.0, t/2.0)
    plt.plot(x, yint(x), color=col)

plt.show()

enter image description here


太棒了!谢谢!不过我有一个问题:我查看了文档并尝试了代码,但仍然无法理解 col = (t/2.0, t/2.0, t/2.0) 这一行的含义。为什么它包含3个相同的元素?每个元素代表什么(例如起始颜色、结束颜色等)?还可以在括号内无限添加更多的 t/n..这是怎么回事? - neither-nor
1
(2, 4, 5.0, "something")这样的元素是一个tuple。它可以有任意数量的元素。在这种情况下,我们正在设置一个RGB元组。第一个数字是红色强度,第二个是蓝色,第三个是绿色。当它们相等时,你会得到灰色。因此,我们正在创建一个表示灰色的元组,然后将其用于线条颜色。如果您向下滚动到以“by default”开头的段落,可以在我提供的链接中看到如何执行此操作的不同选项。 - YXD
1
如果像元组这样的东西对您来说不熟悉,我建议您抽出一点时间阅读Python教程,至少前五个部分。 - YXD
1
“RGB元组”是“plot”函数识别的一种东西 - 在这种情况下,它将把数字元组视为设置颜色的指令。如果我的评论让你觉得它是Python的一般特性,那就不是这样的。 - YXD
1
谢谢E先生!您的回答非常有帮助。我会按照建议开始学习Python教程! - neither-nor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接