Saturday, January 4, 2020

Buku Pemrograman Matlab - Grafik


Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id

Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link


kalian bisa lanjut baca lagi di  http://softscients.com/2020/03/29/buku-pemrograman-matlab-visualisasi-data-menggunakan-grafik/


Dasar-Dasar Pemrograman Matlab - Grafik

Sinopsis Dasar-Dasar Pemrograman Matlab - Grafik

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.

Jangan lupa ya Follow dan Subcribe ya


Terima kasih

Bagian-Bagian Figure

Setiap grafik dalam Matlab mempunyai beberapa bagian seperti dibawah ini

Dasar-Dasar Pemrograman Matlab - Grafik


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

Dasar-Dasar Pemrograman Matlab - Grafik

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

Dasar-Dasar Pemrograman Matlab - Grafik
Dasar-Dasar Pemrograman Matlab - Grafik
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

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)

Dasar-Dasar Pemrograman Matlab - Grafik

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)


Dasar-Dasar Pemrograman Matlab - Grafik

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)




Dasar-Dasar Pemrograman Matlab - Grafik

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

Buku Pemrograman Matlab - Grafik


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

Buku Pemrograman Matlab - Grafik
Kegunaan grafik area akan sangat bermanfaat ketika kalian menggunakannya didalam visualisasi persamaan garis.

\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')


Buku Pemrograman Matlab - Grafik

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

$$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')

Buku Pemrograman Matlab - Grafik

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.


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')





No comments:

Post a Comment