fixing something not general enough in sdata2json function in JPSSD.py
[JPSSData.git] / plot_svm.m
blob1ff51ed4aa44604ecd172c9c6bd78a13831cd46c
1 function plot_svm(varargin)
2 % Call:
3 % plot_results(svm_file)
4 % plot_results(svm_file,zoom)
5 % plot_results(svm_file,zoom,result_file)
7 % Description:
8 % Plots the results in the output file from Support Vector Machine
10 % Inputs:
11 %   file     matlab output file from Support Vector Machine
12 %   zoom     boolean if plot zoom or not (default false)
14 % Developed in Matlab 9.2.0.556344 (R2017a) on MACINTOSH.
15 % Angel Farguell (angel.farguell@gmail.com), 2019-03-21
16 %-------------------------------------------------------------------------
18 kk = 10;
20 if nargin < 1 || nargin > 3
21    error('plot_svm(svm_file) or plot_svm(svm_file,zoom) or plot_svm(svm_file,zoom,result_file)');
22 end
23 svm_file = varargin{1};
24 r = load(svm_file);
25 uu = r.U;
26 uu(uu==max(uu(:))) = nan;
27 ll = r.L;
28 ll(ll==min(ll(:))) = nan;
29 if nargin < 2
30     zoom = false;
31 else
32     zoom = varargin{2};
33 end
34 if nargin > 2
35     result_file = varargin{3};
36     r2 = load(result_file);
37     tt = (r2.T==r2.time_scale_num(2)-r2.time_scale_num(1));
38     ll(tt) = nan;
39     low = true;
40 else
41     low = false;
42 end
44 figure
45 scatter3(r.dxlon(~isnan(uu)), r.dxlat(~isnan(uu)), uu(~isnan(uu)), 'r*')
46 hold on
47 scatter3(r.dxlon(~isnan(ll)), r.dxlat(~isnan(ll)), ll(~isnan(ll)), 'g*')
49 figure
50 scatter3(r.dxlon(~isnan(uu)), r.dxlat(~isnan(uu)), uu(~isnan(uu)), 'r*')
51 hold on
52 if low
53     scatter3(r.dxlon(~isnan(ll)), r.dxlat(~isnan(ll)), ll(~isnan(ll)), 'g*')
54     hold on
55 end
56 contour3(r.fxlon(1:kk:end,1:kk:end),r.fxlat(1:kk:end,1:kk:end),r.Z(1:kk:end,1:kk:end),100)
57 title('Support-vector machine: Fire detections vs fire arrival time')
58 xlabel('Longitude')
59 ylabel('Latitude')
60 zlabel('Time (days)')
62 if zoom
63     zz = [min(r.Z(:))-.5 min(r.Z(:))+1.5];
64     figure
65     scatter3(r.dxlon(~isnan(uu)), r.dxlat(~isnan(uu)), uu(~isnan(uu)), 'r*')
66     hold on
67     if low
68         scatter3(r.dxlon(~isnan(ll)), r.dxlat(~isnan(ll)), ll(~isnan(ll)), 'g*')
69         hold on
70     end
71     contour3(r.fxlon(1:kk:end,1:kk:end),r.fxlat(1:kk:end,1:kk:end),r.Z(1:kk:end,1:kk:end),500)
72     zlim(zz)
73     caxis(zz)
74     title('2 days envolving the ignition time')
75     xlabel('Longitude')
76     ylabel('Latitude')
77     zlabel('Time (days)')
78 end
80 end