Mengatasi Masalah Legend pada Scatter Plot di Octave

Mengatasi Masalah Legend pada Scatter Plot di Octave

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.