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

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库),我的其他代码也在蟒蛇。

谢谢!

最佳答案

在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一对一转换。

10-06 04:55
查看更多