1

嗨,基本上我打算绘制一些这样的数据:

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

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

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

在此处输入图像描述

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

谢谢!

4

1 回答 1

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 转换为 1 到 1 到 python。

于 2013-08-08T07:16:04.917 回答