matplotlib - 运行时添加多条线而不预先知道
我想在一个图形上添加多条线,但我不知道会有多少条线。我现在有一个类,里面有用于绘制线条的x和y值,这些值是在同一个会话中使用的。
我不太确定如何在同一个图形中为每个新会话添加一条新线。我需要明确地建立这种关联。
在我的主函数中,我有以下代码。
fig = plt.figure()
ax = fig.add_subplot(111)
line,= plt.figure().plot(0,0)
在我的会话类中,我有以下代码。
class Session:
x = []
y = []
# I think I should add a line here... but I am not sure
# how to make this association to the main.
每个会话都会存储x和y值,我可以通过一些方法来获取这些值。这部分很简单,但把每条线关联到同一个图形上就是我遇到的问题。我该如何解决这个问题呢?
1 个回答
1
你可以多次调用 .plot()
这个函数。我给你加了一个例子,说明如何改变线条的颜色。至于样式的部分,就留给你自己去调整吧。
import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
colors = ('b','g','r','c','m','y','k','w',)
sessions = (sess1, sess2, sess3)
for sess, color in zip(sessions, colors):
ax.plot(sess.x, sess.y, color=color)
如果你想为所有的线条使用或者重复使用一组特定的颜色,itertools.cycle
可以让这件事变得简单很多:
import itertools as it
colors = ('b','g','r',)
sessions = (sess1, sess2, sess3, sess4, sess5, sess6)
for sess, color in zip(sessions, it.cycle(colors)):
ax.plot(sess.x, sess.y, color=color)