使用移动窗口绘制交互式折线图 - 寻找建议

时间:2013-08-07 23:47:09

标签: python matlab plot line interactive

嗨,所以基本上我计划绘制一些这样的数据:

Variable  |  Hour 1  |  Hour 2  |  Hour 3
x         |  80      |  60      |  90
y         |  45      |  50      |  20
z         |  65      |  65      |  35

基本上我期望每个变量每小时标记一个点的折线图。然后从这里我需要能够在图形上绘制一个窗口(矩形),选择图形的一个小区域。然后,该窗口将为通过窗口的任何线加粗整行,即在y轴上的阈值之间。

这是我对这个想法的快速图像:

enter image description here

所以我还没有开始编码,这似乎是一个简单的想法,但基本上我想要一些更有经验的人的建议。我知道C / C ++ / Python / Matlab,我认为Matlab是最简单的解决方案,但Python是我的首选语言,因为它快速而简单(也许使用Matplotlib库),我的其他代码也在蟒。

谢谢!

1 个答案:

答案 0 :(得分:1)

在matlab和python / matplotlib中都应该很容易。 matlab解决方案看起来像这样(未经测试):

%assume x and y data are in cell arrays, so they can be of different lengths

line_handles = plot(x{1}, y{1}, x{2}, y{2}, x{3}, y{3});

rect = getrect; %select rectangle with mouse

for i = 1:length(line_handles)
    if your_intersection_test(rect, x{i}, y{i})
        set(line_handles(i), 'linewidth', 5)
    end
end

我留给你去弄清楚如何测试一条线是否穿过一个矩形(谷歌搜索'测试,如果线相交矩形'给出一些有用的结果,但在你的情况下它是一个多线)。 python解决方案应该几乎相似,matplotlib.widgets.RectangleSelector可能对使用鼠标获取矩形很有用,但我从未使用过它。其余的代码应该从matlab到python几乎翻译为1。