1 %>@ingroup datasettools
3 %>@brief Draws 2-D scatter plot
6 %> @param idx_fea What features to use. Numbers point to columns in @c data.X
7 %> @param confidences a list of percentages (]0, 1[) for the confidence ellipses
9 %> @arg 0 - no text anotation
10 %> @arg 1 - annotates "obsnames"
11 %> @arg 2 - annotates "groupcodes"
13 if ~exist('confidences', 'var')
16 if ~exist('textmode', 'var')
20 if any(idx_fea > data.nf)
21 irerror(sprintf('Dataset has only %d feature(s)!', data.nf));
24 mins = min(data.X(:, idx_fea), [], 1);
25 maxs = max(data.X(:, idx_fea), [], 1);
29 no_classes = size(pieces, 2);
30 no_fea = length(idx_fea);
36 subplot(no_fea-1, no_fea-1, (iy-2)*(no_fea-1)+ix);
41 X = pieces(i).X(:, idx_fea([ix iy]));
43 hh = plot(X(:, 1), X(:, 2), 'Color',
find_color(i), 'Marker',
find_marker(i), 'MarkerFaceColor',
find_color(i), 'LineStyle', 'none', 'MarkerSize',
find_marker_size(i));
45 handles(ihandle) = hh(1);
51 if textmode == 1 && ~isempty(pieces(i).obsnames)
52 text(X(:, 1), X(:, 2), pieces(i).obsnames); %, 'FontName', FONT, 'FontSize', FONTSIZE*.7);
53 elseif textmode == 2 && ~isempty(pieces(i).groupcodes)
54 text(X(:, 1), X(:, 2), pieces(i).groupcodes);
58 if ~isempty(confidences)
61 for j = 1:length(confidences)
62 error_ellipse(C, m, 'conf', confidences(j), 'Color',
find_color(i), 'LineWidth',
scaled(2));
67 feanames = data.get_fea_names([idx_fea(ix) idx_fea(iy)]);
76 if is_2014() % Working around changes in R2014a
79 prop =
'OuterPosition';
82 carmelia =
get(l, prop);
85 set(legend, prop, [.9, .9, 0, 0]+[-wi, -he, wi, he]);
88 set(gca,
'XTick', []);
91 set(gca,
'YTick', []);
95 xlim([mins(ix)-lens(ix)*K, maxs(ix)+lens(ix)*K]);
96 ylim([mins(iy)-lens(iy)*K, maxs(iy)+lens(iy)*K]);
function find_marker(in i)
function find_color(in i)
function find_marker_size(in i)
function data_get_legend(in data)
function data_draw_scatter_2d(in data, in idx_fea, in confidences, in textmode)
function data_split_classes(in data, in hierarchy)