generalization of plot_svm for also temporal-spatial processing
[JPSSData.git] / plot_svm.m
blobe001789cc2809b6ed9f46560ed94f730f56f9520
1 function plot_svm(svm_file)
2 % Call:
3 % plot_results(svm_file)
5 % Description:
6 % Plots the results in the output file from Support Vector Machine
8 % Inputs:
9 %   svm_file     matlab output file from Support Vector Machine
11 % Developed in Matlab 9.2.0.556344 (R2017a) on MACINTOSH.
12 % Angel Farguell (angel.farguell@gmail.com), 2019-03-21
13 %-------------------------------------------------------------------------
15 r = load(svm_file);
16 if isfield(r,'U')
17     uu = r.U;
18     uu(uu==max(uu(:))) = nan;
19     ll = r.L;
20     ll(ll==min(ll(:))) = nan;
22     dd = .1;
23     bb = [min(r.dxlon(~isnan(uu)))-dd, max(r.dxlon(~isnan(uu)))+dd, min(r.dxlat(~isnan(uu)))-dd, max(r.dxlat(~isnan(uu)))+dd];
24     figure
25     S = repmat(5,sum(sum(~isnan(uu))),1);
26     C = repmat([1,0,0],sum(sum(~isnan(uu))),1);
27     h1 = scatter3(r.dxlon(~isnan(uu)), r.dxlat(~isnan(uu)), uu(~isnan(uu)), S, C, 'filled');
28     alpha = 0.7;
29     set(h1, 'MarkerEdgeAlpha', alpha, 'MarkerFaceAlpha', alpha)
30     hold on
31     ml = logical((r.dxlon >= bb(1)).*(r.dxlon <= bb(2)).*(r.dxlat >= bb(3)).*(r.dxlat <= bb(4)));
32     S = repmat(5,sum(sum(ml)),1);
33     C = repmat([0.2,0.7,0.2],sum(sum(ml)),1);
34     h2 = scatter3(r.dxlon(ml), r.dxlat(ml), ll(ml), S, C, 'filled');
35     alpha = 0.3;
36     set(h2, 'MarkerEdgeAlpha', alpha, 'MarkerFaceAlpha', alpha)
37     hold on
38     contour3(r.fxlon,r.fxlat,r.Z,100)
39     xlim([bb(1),bb(2)])
40     ylim([bb(3),bb(4)])
41     title('Support-vector machine: Satellite detections vs fire arrival time')
42     xlabel('Longitude')
43     ylabel('Latitude')
44     zlabel('Time (days)')
46     figure
47     scatter3(r.dxlon(~isnan(uu)), r.dxlat(~isnan(uu)), uu(~isnan(uu)), 'r.')
48     hold on
49     contour3(r.fxlon,r.fxlat,r.Z,100)
50     title('Support-vector machine: Fire detections vs fire arrival time')
51     xlabel('Longitude')
52     ylabel('Latitude')
53     zlabel('Time (days)')
54 else
55     ground = (r.y==-1);
56     fire = (r.y==1);
58     zmin = min(r.X(:,3));
59     zmax = max(r.X(:,3));
61     figure,
62     S = repmat(5,sum(fire),1);
63     C = repmat([1,0,0],sum(fire),1);
64     h1 = scatter3(r.X(fire,1),r.X(fire,2),r.X(fire,3),S,C,'filled');
65     alpha = 0.7;
66     set(h1, 'MarkerEdgeAlpha', alpha, 'MarkerFaceAlpha', alpha)
67     hold on
68     S = repmat(5,sum(ground),1);
69     C = repmat([0.2,0.7,0.2],sum(ground),1);
70     h2 = scatter3(r.X(ground,1),r.X(ground,2),r.X(ground,3),S,C,'filled');
71     alpha = 0.3;
72     set(h2, 'MarkerEdgeAlpha', alpha, 'MarkerFaceAlpha', alpha)
73     hold on
74     contour3(r.fxlon,r.fxlat,r.Z',100)
75     zlim([zmin,zmax]);
76     title('Support-vector machine: Satellite detections vs fire arrival time')
77     xlabel('Longitude')
78     ylabel('Latitude')
79     zlabel('Time (days)')
80     
81     figure, 
82     scatter3(r.X(fire,1), r.X(fire,2), r.X(fire,3), 'r.')
83     hold on
84     contour3(r.fxlon,r.fxlat,r.Z',100)
85     zlim([zmin,zmax]);
86     title('Support-vector machine: Fire detections vs fire arrival time')
87     xlabel('Longitude')
88     ylabel('Latitude')
89     zlabel('Time (days)')
90 end
92 end