我有这样的代码
其中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
答案 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--'
等行样式,所以剩下的就是压缩和正确解压缩(并展平)您的阵列......