Visualisasi Grafik di matlab

By | January 21, 2021
12,545 Views
Visualisasi dalam bentuk grafik/warna serta contour dapat disajikan dengan baik di Matlab menggunakan 2D ataupun 3D lho dengan total ada 74 jenis grafik yang kalian bisa gunakan untuk beragam keperluan. Agar kalian bisa mempelajari melalui tahapan berikut
  1. Bagian-Bagian Figure
  2. Jenis Grafik
  3. Membuat Beragam Grafik
  4. Menyimpan Grafik

Dengan mempelajari Dasar-Dasar Pemrograman Matlab – Grafik, maka kalian sudah sangat lengkap sekali lho mengenai dasar pemrograman Matlab.

Bagian-Bagian Figure

Setiap grafik dalam Matlab mempunyai beberapa bagian seperti dibawah ini

Dengan banyaknya komponen diatas kalian bisa membuat beragam jenis grafik dalam bentuk 2D ataupun 3D sesuai dengan kebutuhan kalian. Keunggulan dari Grafik Matlab yaitu

  1. Toolbar yang sangat lengkap.
  2. Bersifat dinamis
  3. Serta bisa di overlapping dengan beragam jenis plot dalam 1 axes.
  4. Mendukung format penulisan latex juga.

Perintah untuk memanggil grafik di Matlab yaitu figure() yang akan tampil kosong seperti berikut

Jenis Grafik

Jenis/Pola grafik di Matlab ada banyak seperti yang ada di Excel bahkan lebih lengkap yaitu

  1. Line Plots: Plot, plot3, stairs, errorbar, area, stackedplot, loglog, semilogx, semilogy, fplot, fplot3, fimplicit.
  2. Data Distribution Plots: Histogram, histogram2, pie, pie3, scatter, scatter3, scatterhistogram, spy, plotmatrix, heatmap, wordcloud, parallelplot.
  3. Discrete Data Plots: Bar, barh, bar3, bar3h, pareto, stem, stem3, scatter, scatter3, stairs.
  4. Geographic Plots: Geobubble, geoplot, geoscatter.
  5. Polar Plots: Polarplot, polarhistogram, polarscatter, compass, ezpolar.
  6. Contour Plots: Contour, contourf, contour3, contourslice, fcontour.
  7. Vector Fields: Quiver, quiver3, feather.
  8. Surface and Mesh Plots: surf, surfc, surfl, ribbon, pcolor, fsurf, fimplicit3, mesh, meshc, meshz, waterfall, fmesh.
  9. Volume Visualization: Streamline, streamslice, streamparticles, streamribbon, streamtube, coneplot, slice.
  10. Animation: Animatedline, comet, comet3.
  11. Images: Image, imagesc.

Sangat banyak sekali ya, nah biar kalian lebih ngerti, penulis sajikan icon seperti berikut

Dalam pembahasan grafik akan dibahas beberapa jenis grafik yang biasa kalian temui secara umum yaitu
  1. Grafik Plot
  2. Grafik Area
  3. Grafik Histogram
  4. Grafik Bar
  5. Grafik Stem
  6. Grafik Scatter
  7. Grafik Surf
  8. Grafik Contour
  9. Grafik Plot3D
Selain jenis grafik diatas akan beberapa yang akan kalian pelajari yaitu
  1. Subplot yaitu membagi figure menjadi beberapa axes sehingga bisa menampilkan lebih dari 1 grafik dalam 1 figure
  2. Overlapping grafik dengan teknik hold on yaitu menggabungkan grafik dalam 1 axes sehingga akan tampak jelas perbedaaanya
  3. Menyimpan hasil figure kedalam format gambar
See also  Perbedaan Hasil Logaritma Natural antar Matlab dan Excel

Grafik Plot

Secara umum grafik plot terdiri dari 2 sumbu x dan y dengan keterangan legend serta title yang disertakan, adapun jenis sumbu x bisa menggunakan number ataupun string. Sebagai contoh  persamaan berikut

    \[y(x)=0.5x^2+4x^3+10\]

Setiap perintah yang melibatkan grafik, maka gunakan perintah figure()

clc;clear all;close all;
x = 0:0.1:10;
y = 0.5*x.^2+4*x.^3+10;
figure()
plot(x,y);
grid on
xlabel('Waktu (detik)');
ylabel('Pergerakan Benda (m)');
title('Pergerakan Benda')
txt = '\bullet \leftarrow 0.25t e^{-0.005t} di t = 300';
text(x(50),y(50),txt,'fontsize',12;
legend('tinggi benda (m)');
set(gca,'FontSize',12)

Menggunakan Subplot

Jika ada 2 persamaan yang harus ditampilkan dalam 1 figure, bisa kalian gunakan teknik subplot(jumlah_baris, jumlah_kolom, index).

    \[y2(x)=4x^2+8x^3+15\]

Menampilkan 2 kolom grafik yaitu kanan dan kiri

clc;clear all;close all;
x = 0:0.1:10;
y = 0.5*x.^2+4*x.^3+10;
y2 = 4*x.^2+8*x.^3+15;
figure()
subplot(1,2,1),plot(x,y);
grid on
xlabel('Waktu (detik)')
ylabel('Pergerakan Benda (m)');
title('Pergerakan Benda')
legend('tinggi benda (m)')

subplot(1,2,2),plot(x,y2);
grid on
xlabel('Waktu (detik)')
ylabel('Pergerakan Benda (m)');
title('Pergerakan Benda')
legend('tinggi benda (m)')
 
set(gca,'FontSize',12)

Menggunakan ylim dan xlim

Kalau kalian tidak perhatikan dengan seksama, grafiknya sama, tapi secara sumbu y, maka persamaan y2 lebih tinggi daripada persamaan y1. Agar tidak bias, bisa kalian gunakan batasan ylim

clc;clear all;close all;
x = 0:0.1:10;
y = 0.5*x.^2+4*x.^3+10;
y2 = 4*x.^2+8*x.^3+15;
figure()
subplot(1,2,1),plot(x,y);
grid on
xlabel('Waktu (detik)')
ylabel('Pergerakan Benda (m)');
title('Pergerakan Benda')
legend('tinggi benda (m)')
ylim([1,10000])
set(gca,'FontSize',12)
 
subplot(1,2,2),plot(x,y2);
grid on
xlabel('Waktu (detik)')
ylabel('Pergerakan Benda (m)');
title('Pergerakan Benda')
legend('tinggi benda (m)')
ylim([1,10000])
set(gca,'FontSize',12)

 

Menggunakan Hold On

Atau biar lebih jelas, kalian bisa menggabungkannya menjadi 1 dengan teknik hold on yaitu mengoverlapping grafik dalam 1 figure

clc;clear all;close all;
x = 0:0.1:10;
y = 0.5*x.^2+4*x.^3+10;
y2 = 4*x.^2+8*x.^3+15;
figure()
plot(x,y,'linewidth',2,'color',[0,0.5,0.75]);
hold on
plot(x,y2,'linewidth',2,'color',[0.75,0,1]);
xlabel('Waktu (detik)')
ylabel('Pergerakan Benda (m)');
title('Pergerakan Benda');
set(gca,'FontSize',12)
legend('Benda 1','Benda 2');
grid on

Pada sesi ini kalian sudah mempelajari teknik-teknik visualisasi data menggunakan grafik di Matlab yang akan sangat membantu dalam mempelajari Buku Pengolahan Citra Digital dengan Matlab.

Grafik Area

Grafik ini sangat bagus sekali kalian gunakan visualisasi data yang bersifat tumpukan, seperti contoh berikut

clc;clear all;close all;
x = linspace(0,10);
y1 = 4 + sin(x).*exp(0.1*x);
y2 = 4 + cos(x).*exp(0.1*x);

figure()
area(x,y1,'FaceColor','b','FaceAlpha',0.3,'EdgeAlpha',0.3)
hold on
area(x,y2,'FaceColor','r','FaceAlpha',0.3,'EdgeAlpha',0.3)
grid on
hold off

Kegunaan grafik area akan sangat bermanfaat ketika kalian menggunakannya didalam visualisasi persamaan garis.

(1)   \begin{eqnarray*} 2x_1+1x_2\leq100 &&(1)\\ 4x_1+3x_2\leq240 &&(2)\\ \end{eqnarray*}

Gambarkan persaman garis lurus diatas dalam sumbu x dan y <br>

Dari persamaan(1) akan diubah menjadi

    \[x_2=100-2x_1\]

Dari persamaan(2) akan diubah menjadi

    \[x_2=80-\frac{4}{3}x_1\]

Langkah selanjutnya yaitu x_2=0, sehingga didapatkan persamaan(1) yaitu x_1=50

dan persamaan(2)  yaitu x_1=60

Setelah diketahui nilai masing-masing x_1, kalian bisa membuat nilai batasan yaitu

    \[x_1=[0:50]\]

dan

    \[x_1=[0:60]\]

clc;clear all;close all;
f1=@(x) 100-2.*x;
f2=@(x) 80-((4/3).*x);
 
m1 = 0:50;
n1 = f1(m1);
 
m2 = 0:60;
n2 = f2(m2);
 
figure
area(m1,n1,'FaceColor',[1,0,0],'FaceAlpha',0.3,'EdgeAlpha',0.3)
hold on
area(m2,n2,'FaceColor',[1,0,0],'FaceAlpha',0.3,'EdgeAlpha',0.3)
hold off;
xlabel('Sumbu x')
ylabel('Sumbu y')

Untuk menentukan titik potong, kalian bisa menggunakan SPL (Sistem Persamaan Linear) yaitu

See also  Mask R-CNN for Instance Segmentation di Matlab

    \[AX=B\]

Untuk mencari nilai x yaitu

    \[X=A^{-1}B\]

maka

    \[A= \begin{pmatrix} 2 & 1 \\ 4 & 3 \\ \end{pmatrix} \]

    \[B= \begin{pmatrix} 100\\ 240\\ \end{pmatrix} \]

sehingga

    \[X= \begin{pmatrix} 2 & 1 \\ 4 & 3 \\ \end{pmatrix}^{-1} \begin{pmatrix} 100 \\ 240 \\ \end{pmatrix} \]

clc;clear all;close all;
f1=@(x) 100-2.*x;
f2=@(x) 80-((4/3).*x);

m1 = 0:50;
n1 = f1(m1);

m2 = 0:60;
n2 = f2(m2);

A = [2,1; 4,3];
B = [100;240];
H = inv(A)*B;

figure
area(m1,n1,'FaceColor',[1,0,0],'FaceAlpha',0.3,'EdgeAlpha',0.3)
hold on
area(m2,n2,'FaceColor',[1,0,0],'FaceAlpha',0.3,'EdgeAlpha',0.3)
scatter(H(1),H(2),100,'r','Fill')
text(H(1)+3,H(2),[num2str(H(1)) ',' num2str(H(2))])
hold off;
xlabel('Sumbu x')
ylabel('Sumbu y')

Dengan melihat arsiran merah yang lebih pekat akan terlihat area perpotongan garis lurusnya

Grafik Bar

Grafik ini sama seperti layaknya grafik plot, hanya saja tampilkan berupa batangan, bisa kalian padu padankan dengan grafik plot dalam 1 axes agar lebih profesional. Dengan menggunakan data berikut ini, kalian bisa pelajari cara loading data disini https://www.softscients.web.id/2020/01/dasar-dasar-pemrograman-matlab-export.html

clc;clear all;close all;
data = readtable('data agen mobil.xlsx');
 
hold on;
yyaxis left
bar(data.agen)
ylabel('Jumlah Agen')
grid on
yyaxis right
plot(data.penjualan,'LineWidth',3)
ylabel('Penjualan')
set(gca, 'XTick',1:length(data.kota))
set(gca, 'XTickLabel',data.kota)
title('Data Penjualan Mobil Agen di Tiap Kota')
hold off;

Kalian bisa melihat, terjadi anomali penjualan yaitu kota depok dengan jumlah agen lebih besar dengan semarang tapi malah pennjualan dibawah kota semarang

Menyimpan Figure kedalam File

Sebuah figure bisa disimpan dengan perintah saveas, hal yang perlu diperhatikan bahwa untuk mendapatkan figure active diperlukan perintah gcf dengan arti get current figure, sebagai contoh kalian ingin menyimpan figure diatas, maka kode lengkap sebagai berikut

clc;clear all;close all;
data = readtable('data agen mobil.xlsx');

hold on;
yyaxis left
bar(data.agen)
ylabel('Jumlah Agen')
grid on
yyaxis right
plot(data.penjualan,'LineWidth',3)
ylabel('Penjualan')
set(gca, 'XTick',1:length(data.kota))
set(gca, 'XTickLabel',data.kota)
title('Data Penjualan Mobil Agen di Tiap Kota')
hold off;

saveas(gcf,'output.jpg','jpg');

Hasilnya akan disimpan dengan format yang telah ditentukan diatas yaitu *.jpg

Grafik Scatter dan Scatter3

Grafik jenis ini digunakan untuk visualisasi antara 2 sumbu x dan y, biasa digunakan untuk melihat sebaran data, kalian bisa menggunakan kombinasi hold on dan hold off untuk mengoverlay sebaran data tersebut secara lebih baik.  Perhatikan variabel dataset berikut yang berbentuk table (kalian pelajari saja loading IO di Matlab)

dataset =
  60×3 table
        x             y         kelas
    __________    __________    _____
       0.52636       0.37413     -1  
      -0.74657       0.40369     -1  
      0.010322    -0.0027968     -1  
      -0.53795      -0.11375     -1  
      -0.13681      -0.35782     -1  
      -0.12159       0.27849     -1  
      -0.16766      -0.39768     -1  
       0.29805      -0.50668     -1  
       0.62574      0.072221     -1  
     0.0006656      -0.73404     -1  
       0.64587     -0.045277     -1  
    -0.0095404      -0.82772     -1  
     -0.085966       0.44392     -1  
       0.22893      -0.90869     -1  
       0.13189      0.099967     -1  
      -0.77533       0.26331     -1  
       0.54235      -0.35094     -1  
      -0.20228       0.71957     -1  
     -0.088098       0.36418     -1  
       0.30462       0.32451     -1  
       0.88823       0.10862     -1  
      -0.42547      -0.88726     -1  
       0.13367       0.54365     -1  
     -0.081148       0.82809     -1  
      -0.93484      0.049544     -1  
       0.89317       0.31122     -1  
      -0.26057      -0.13095     -1  
       0.11942       0.15746     -1  
      -0.34891       -0.2193     -1  
      -0.29093      -0.89079     -1  
       0.85876       0.75467      1  
        1.4226      -0.46729      1  
       -1.6697       0.54353      1  
       -1.3195      -0.70812      1  
       -0.8986       0.58513      1  
       0.13148        1.6095      1  
        1.4205      -0.98667      1  
       -1.4273      -0.71239      1  
        1.9577       0.03531      1  
       -1.2312       -1.1153      1  
      -0.89216        1.7071      1  
       -1.1713      -0.20108      1  
       0.89782      -0.78214      1  
       -1.1546        1.4454      1  
         1.243      -0.80497      1  
      -0.87375      -0.85593      1  
        1.9353       0.19302      1  
        1.2912       -0.6132      1  
      -0.65443       -1.6805      1  
        1.7824     -0.029985      1  
       0.89566        1.6875      1  
        1.1034        1.2859      1  
        1.6442       -0.7412      1  
       -0.4692       -1.3515      1  
        1.2313       0.54202      1  
      0.065903       -1.9192      1  
      0.036806       -1.5109      1  
        1.7471      -0.91768      1  
      -0.41398        -1.679      1  
        1.2024        1.1914      1

Terlihat ada 2 kelas, kalian akan memplotkan data tersebut kedalam grafik scatter.

See also  Setup Widget dan Work Directory Matlab

Akan terlihat jelas kalau seperti ini agar lebih cantik

Atau terdapat 3 sumbu seperti berikut

dataset =
  60×4 table
        x             y            z        kelas
    __________    __________    ________    _____
       0.52636       0.37413     0.65901     -1  
      -0.74657       0.40369     0.48659     -1  
      0.010322    -0.0027968     0.99989     -1  
      -0.53795      -0.11375     0.73909     -1  
      -0.13681      -0.35782      0.8635     -1  
      -0.12159       0.27849      0.9118     -1  
      -0.16766      -0.39768     0.83006     -1  
       0.29805      -0.50668     0.70782     -1  
       0.62574      0.072221     0.67249     -1  
     0.0006656      -0.73404     0.58344     -1  
       0.64587     -0.045277     0.65758     -1  
    -0.0095404      -0.82772     0.50398     -1  
     -0.085966       0.44392     0.81509     -1  
       0.22893      -0.90869     0.41556     -1  
       0.13189      0.099967     0.97298     -1  
      -0.77533       0.26331     0.51147     -1  
       0.54235      -0.35094     0.65882     -1  
      -0.20228       0.71957     0.57196     -1  
     -0.088098       0.36418     0.86902     -1  
       0.30462       0.32451     0.82029     -1  
       0.88823       0.10862     0.44899     -1  
      -0.42547      -0.88726     0.37974     -1  
       0.13367       0.54365     0.73094     -1  
     -0.081148       0.82809     0.50041     -1  
      -0.93484      0.049544     0.41628     -1  
       0.89317       0.31122     0.40877     -1  
      -0.26057      -0.13095     0.91847     -1  
       0.11942       0.15746      0.9617     -1  
      -0.34891       -0.2193     0.84381     -1  
      -0.29093      -0.89079     0.41555     -1  
       0.85876       0.75467     0.27063      1  
        1.4226      -0.46729     0.10623      1  
       -1.6697       0.54353    0.045812      1  
       -1.3195      -0.70812     0.10619      1  
       -0.8986       0.58513     0.31668      1  
       0.13148        1.6095    0.073705      1  
        1.4205      -0.98667    0.050218      1  
       -1.4273      -0.71239    0.078499      1  
        1.9577       0.03531    0.021628      1  
       -1.2312       -1.1153    0.063313      1  
      -0.89216        1.7071    0.024472      1  
       -1.1713      -0.20108     0.24355      1  
       0.89782      -0.78214     0.24224      1  
       -1.1546        1.4454    0.032641      1  
         1.243      -0.80497     0.11158      1  
      -0.87375      -0.85593     0.22401      1  
        1.9353       0.19302    0.022765      1  
        1.2912       -0.6132      0.1296      1  
      -0.65443       -1.6805     0.03868      1  
        1.7824     -0.029985    0.041669      1  
       0.89566        1.6875    0.025993      1  
        1.1034        1.2859    0.056641      1  
        1.6442       -0.7412    0.038665      1  
       -0.4692       -1.3515     0.12916      1  
        1.2313       0.54202     0.16369      1  
      0.065903       -1.9192    0.025031      1  
      0.036806       -1.5109     0.10185      1  
        1.7471      -0.91768    0.020353      1  
      -0.41398        -1.679    0.050271      1  
        1.2024        1.1914    0.056978      1

Kalian bisa memplotkan dalam scatter3 seperti dibawah ini

Kode lengkapnya seperti berikut

figure
scatter(dataset.x,dataset.y)


figure
hold on
scatter(dataset.x(dataset.kelas==-1),dataset.y(dataset.kelas==-1),100,'filled');
scatter(dataset.x(dataset.kelas==1),dataset.y(dataset.kelas==1),100,'filled');
grid on
hold off
xlabel('x'),ylabel('y');
title('Sebaran Data X Y')


figure
hold on
scatter3(dataset.x(dataset.kelas==-1),dataset.y(dataset.kelas==-1),dataset.z(dataset.kelas==-1),100,'filled');
scatter3(dataset.x(dataset.kelas==1),dataset.y(dataset.kelas==1),dataset.z(dataset.kelas==1),100,'filled');
grid on
hold off
xlabel('x'),ylabel('y'),zlabel('z');
title('Sebaran Data X Y Z')

Bagaimana menurut kalian mengenai Buku Pemrograman Matlab-Visualisasi Data menggunakan Grafik? Sangat menarik untuk segera kalian coba