【发布时间】:2019-05-19 08:47:06
【问题描述】:
给定一个矩阵(列表列表)
A = [[1, 2, 3],
[4, 6, 8],
[9, 12, 15]]
还有一个列表x = [1, 2, 3]。
A 的每一行 j (0 <= j <= 2) 由 y 值组成,因此可以结合 x 创建总共 3 条直线。
现在我想用一个特殊的功能在同一个图中绘制这些直线。如果用户单击图形,事件处理程序应接收 x-位置并在第一个图的正下方创建另一个图。该图应该是一维的,并且只可视化A 中列的数据,其索引由 x 位置给出。
示例:单击 x = 1 应绘制[1 4 9],x = 2 应绘制[2 6 12] 等等。
我已经尝试使用figure1.add_subplot(211) 为第一个图添加一个子图,并在事件处理程序中使用figure1.add_subplot(212),它也没有工作。
A = [[1 2 3], [4 5 6], [7 8 9]]
x = [1 2 3]
figure1 = plt.figure()
plt.plot(x, A[0])
plt.plot(x, A[1])
plt.plot(x, A[2])
def onclick(event):
Y = [A[i][int(event.xdata)] for i in range(0, 3)]
plt.plot(Y)
figure1.canvas.mpl_connect('button_press_event', onclick)
【问题讨论】:
-
请注意①你所说的矩阵和数组确实分别是一个list of lists和一个list; ② Python索引从0开始,你应该改成
j (0 <= j <= 2)
标签: python matplotlib interactive subplot