嗨,所以基本上我计划绘制一些这样的数据:
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库),我的其他代码也在蟒。
谢谢!
答案 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。