使用函数调用替换多行以在python中绘图

时间:2015-05-19 18:58:55

标签: python-2.7 matplotlib

我有这样的代码

其中f = np.linspace(0.1,2,100,endpoint = True) 和 a = np.zeros((4,100))

plt1, = plt.plot(f,a[0],'b')
plt2, = plt.plot(f,a[1],'g')
plt3, = plt.plot(f,a[2],'r')
plt4, = plt.plot(f,a[3],'k')

lines = [plt1,plt2,plt3,plt4]

plt.setp(lines,linewidth=2.0)

如何用简洁的功能替换上面的内容?传递颜色和列表a [0:3]所以我有类似

的东西

lines = plt_list(f,a,colors)

此致 Lefti

2 个答案:

答案 0 :(得分:0)

使用列表枚举。

import matplotlib.pyplot as plt
import numpy as np

def plt_list(f, arr, colors):
    assert len(arr) == len(colors)
    return [plt.plot(f, a, c)[0] for (a, c) in zip(arr, colors)]

def main():
    f = np.linspace(0.1,2,100,endpoint=True)
    arr = np.zeros((4,100)) 
    colors = ['b', 'g', 'r', 'k']

    lines = plt_list(f, arr, colors)
    plt.setp(lines,linewidth=2.0)

if __name__ == "__main__":
    main()

答案 1 :(得分:0)

我很高兴你问,但我不知道你的回答是优雅的:

plt.plot(*[e for w in zip([f]*4, a, ['b','g','r','k']) for e in w])

您可以使用

一次绘制多行
plt.plot(x1,y1,fmt1, x2,y2,fmt2, ...)

(行格式字符串fmt可以只是'r'的颜色,也可以包含'r:''r--'等行样式,所以剩下的就是压缩和正确解压缩(并展平)您的阵列......