嗨,所以我基本上计划绘制一些像这样的数据:
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一对一转换。