matplotlib - 运行时添加多条线而不预先知道

1 投票
1 回答
1414 浏览
提问于 2025-04-17 13:59

我想在一个图形上添加多条线,但我不知道会有多少条线。我现在有一个类,里面有用于绘制线条的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)

撰写回答