Dalam beberapa kasus, penggunaan legend dengan scatter plot di Octave dapat mengalami masalah. Berdasarkan postingan di forum Octave, salah satu solusi adalah menggunakan fungsi plot
untuk membuat scatter plot.
Artikel ini akan membahas bagaimana cara menggunakan fungsi scatter_series_set
untuk membuat berbagai series scatter plot pada axis yang sama dan mengatasi masalah legend. Fungsi ini dapat digunakan untuk membuat plot dengan berbagai seri, serta memberikan label pada legend.
Fungsi scatter_series_set
Fungsi scatter_series_set
di bawah ini dapat digunakan untuk membuat berbagai series scatter plot pada axis yang sama:
function [handles] = scatter_series_set(x_vals, y_vals, sizes, colors, styles)
N = length(x_vals);
if ( (~ ( N == length(y_vals))) || (~ ( N == length(sizes))) || ...
(~ ( N == length(colors))) || (~ ( N == length(styles))) )
error('scatter_series_set: all arguments must be cell arrays of the same length');
end
%plot the first series
handles = cell([N, 1]);
handles{1} = plot(x_vals{1}, y_vals{1});
set(handles{1}, 'linestyle', 'none');
set(handles{1}, 'marker', styles{1});
set(handles{1}, 'markersize', sizes{1});
set(handles{1}, 'color', colors{1});
%plot additional series if present
if N > 1
hold on;
for ind = 2:N
handles{ind} = plot(x_vals{ind}, y_vals{ind});
set(handles{ind}, 'linestyle', 'none');
set(handles{ind}, 'marker', styles{ind});
set(handles{ind}, 'markersize', sizes{ind});
set(handles{ind}, 'color', colors{ind});
end
hold off;
end
end
Fungsi ini mengambil beberapa argumen, yaitu:
x_vals
: cell array of arrays of doubles yang mewakili nilai x.y_vals
: cell array of arrays of doubles yang mewakili nilai y.sizes
: cell array of doubles yang mewakili ukuran marker.colors
: cell array of double arrays of length 3 yang mewakili nilai warna marker.styles
: cell array of strings yang mewakili bentuk marker.
Fungsi ini mengembalikan cell array handles yang terkait dengan plot yang dibuat.
Contoh Penggunaan
Berikut adalah contoh penggunaan fungsi scatter_series_set
:
x1 = 0:(2*pi/100):(2*pi);
x2 = 2*x1;
y1 = sin(x1);
y2 = cos(x1);
y3 = sin(x2);
y4 = cos(x2);
names = {'a', 'b', 'c', 'd'};
x_vals = {x1, x1, x1, x1};
y_vals = {y1, y2, y3, y4};
sizes = {10, 10, 10, 10};
colors = {[1, 0, 0], [0, 0, 1], [0, 0, 0], [0.7071, 0, 0.7071]};
styles = {'^', 's', 'x', '+'}
[handles] = scatter_series_set(x_vals, y_vals, sizes, colors, styles);
legend(names, 'location', 'southeast');
Pada contoh di atas, fungsi scatter_series_set
digunakan untuk membuat 4 seri scatter plot dengan warna dan ukuran marker yang berbeda. Lalu, fungsi legend
digunakan untuk menambahkan label pada legend.
Hasil
Contoh di atas akan menghasilkan plot sebagai berikut:
Dengan menggunakan fungsi scatter_series_set
, Anda dapat membuat berbagai series scatter plot pada axis yang sama dan memudahkan penggunaan legend.