Visualisasi
Grafik dengan
Mathematica
N. K. Kutha Ardana
Departemen Matematika
FMIPA – IPB University
Ngakan Komang Kutha Ardana
Departemen Matematika, FMIPA - IPB University
Desember 2022
Ringkasan
Sebagai pionir dalam sistem aljabar komputer, Mathematica memiliki berbagai kemampuan dam visualisasi grafik maupun data. Berbagai metode penting dalam visualisasi grafik dalam 2 dimensi, 3 dimensi, serta visualisasi data dipaparkan pada artikel ini. Metode-metode ini amat relevan dalam komputasi teknis yang terkait dalam bidang seperti matematika, statistika, maupun sains data.
Pendahuluan
Di usianya yang telah memasuki tiga dekade sejak diperkenalkan pada tahun 1988, Mathematica (https://wolfram/mathemathica.com) dikenal dalam bidang komputasi teknis serta menyediakan lingkungan komputasi utama bagi jutaan inovator, pendidik, siswa. Mathematica menyedi- akan satu sistem terintegrasi yang meliputi sistem aljabar komputer (SAK, CAS = Computer Algebra System) yang mengintegrasikan berbagai kemampuan seperti komputasi (simbolik, numerik), visualisasi, bahasa pemrograman, algoritme pembelajaran mesin, komputasi awan, pengolah kata ke dalam suatu lingkungan interaktif yang mudah digunakan. Mathematica tersedia di semua sistem desktop modern maupun melalui komputasi awan di browser.
Selain kemampuan komputasi secara simbolik dan numerik, Mathematica juga sangat andal dalam visualisasi grafik maupun data. Pada bagian ini akan dijelaskan beberapa jenis grafik beserta opsi-opsi grafik yang penting. Contoh-contoh lainnya dapat mengacu misalnya pada (Ruskeep- ää, 2009), (Abel dan Braselton, 2022). Mathematica sendiri juga menyediakan Wolfram Documentation pada menu Help, terutama pada bagian Visualization & Graphics. Perintah-perintah pada artikel ini telah dicoba pada Mathematica versi 13.2.
Grafik Dua Dimensi
Plot
Plot[f[x], {x, xmin, xmax}]
akan menghasilkan grafik fungsi f dengan domain (xmin, xmax).
In[1]:= Plot[Sin[x] / x, {x, -10, 10}]
Out[1]=
0.2 0.4 0.6 0.8 1.0
Untuk menampilkan beberapa grafik fungsi secara bersamaan, kumpulkan ke dalam suatu list (apit fungsi-fungsi tersebut dengan tanda kurung kurawal).
In[2]:= Plot[{Sin[x], Cos[x]}, {x, -π, π}]
Out[2]=
-3 -2 -1 1 2 3
-1.0 -0.5 0.5 1.0
Evaluate
Evaluate antara lain digunakan untuk mengevaluasi Table yang digunakan sebagai argumen dari Plot. Misalkan kita ingin memplot fungsi sin(n x) untuk n=1, 2, 3 pada interval variabel bebas x∈ [0, 2π].
Terlebih dahulu dibangkitkan list sin(n x)
In[3]:= Clear[x]
Table[Sin[n x], {n, 1, 3}]
Out[4]= {Sin[x], Sin[2 x], Sin[3 x]}
Perintah berikut akan menghasilkan pesan kesalahan karena Plot belum mengevaluasi argumen pertama sebelum melakukan evaluasi titik-titik sampling.
In[5]:= Plot[Table[Sin[n x], {n, 1, 3}], {x, 0, 2 π}]
Out[5]=
1 2 3 4 5 6
-1.0 -0.5 0.5 1.0
Dengan Evaluate, Mathematica akan mengevaluasi argumennya sebelum dilakukan evaluasi titik-titik sampling.
In[6]:= Plot[Evaluate[Table[Sin[n x], {n, 1, 3}]], {x, 0, 2 π}]
Out[6]=
1 2 3 4 5 6
-1.0 -0.5 0.5 1.0
Opsi dan gaya tampilan
Plot[f[x], {x, xmin, xmax},opsi]
akan menghasilkan grafik fungsi f dengan domain (xmin, xmax) disertai beragam opsi.
Opsi grafik
Tampilan grafik dapat diatur sesuai dengan yang diinginkan, dengan cara memberikan opsi tertentu. Ada banyak opsi untuk Plot. Berikut diperlihatkan opsi bagi Plot beserta default nilai masing-masing opsi.
In[7]:= Options[Plot]
Out[7]= AlignmentPoint Center, AspectRatio 1
GoldenRatio, Axes True, AxesLabel None, AxesOrigin Automatic, AxesStyle {}, Background None, BaselinePosition Automatic, BaseStyle {}, ClippingStyle None, ColorFunction Automatic, ColorFunctionScaling True, ColorOutput Automatic, ContentSelectable Automatic, CoordinatesToolOptions Automatic, DisplayFunction $DisplayFunction, Epilog {}, Evaluated Automatic,
EvaluationMonitor None, Exclusions Automatic, ExclusionsStyle None,
Filling None, FillingStyle Automatic, FormatType TraditionalForm, Frame False, FrameLabel None, FrameStyle {}, FrameTicks Automatic, FrameTicksStyle {}, GridLines None, GridLinesStyle {}, ImageMargins 0., ImagePadding All,
ImageSize Automatic, ImageSizeRaw Automatic, LabelingSize Automatic, LabelStyle {}, MaxRecursion Automatic, Mesh None, MeshFunctions {#1 &}, MeshShading None,
MeshStyle Automatic, Method Automatic, PerformanceGoal $PerformanceGoal, PlotLabel None, PlotLabels None, PlotLayout Automatic, PlotLegends None, PlotPoints Automatic, PlotRange {Full, Automatic}, PlotRangeClipping True, PlotRangePadding Automatic, PlotRegion Automatic, PlotStyle Automatic, PlotTheme $PlotTheme, PreserveImageOptions Automatic, Prolog {},
RegionFunction (True &), RotateLabel True, ScalingFunctions None, TargetUnits Automatic, Ticks Automatic, TicksStyle {}, WorkingPrecision MachinePrecision
Setiap opsi dituliskan dalam sintaks:
namaOption nilai dan dipisahkan oleh tanda koma bila terdapat lebih dari satu opsi.
Berikut diberikan contoh opsi “PlotLabels” untuk memberikan label bagi masing-masing grafik sesuai dengan ekspresi fungsi yang digunakan.
In[8]:= Plot[{Sin[x], Cos[x]}, {x, 0, 2 Pi}, PlotLabels "Expressions"]
Out[8]= sin(x)
cos(x)
1 2 3 4 5 6
-1.0 -0.5 0.5 1.0
Pada contoh berikut, grafik fungsi sin(x) /x diberi label, garis grid. Keduanya berturut-turut dinyatakan oleh opsi PlotLabels dan GridLines. Bandingkan dengan contoh sebelumnya untuk fungsi yang sama tanpa mengubah opsi apa pun.
In[9]:= PlotSin[x]
x , {x, -10, 10}, Frame True, PlotLabels "Expressions", GridLines Automatic
Out[9]=
sin(x) x
-10 -5 0 5 10
-0.2 0.0 0.2 0.4 0.6 0.8 1.0
Mathematica menyediakan opsi “PlotTheme” untuk berbagai tema grafik. Tema lainnya dapat dilihat dengan mengeksplorasi perintah
“PlotThema” lebih jauh (letakkan kursor di atas perintah “PlotThema”, lalu klik informasi i.
In[10]:= Plot[Evaluate[Table[BesselJ[n, x], {n, 3}]], {x, 0, 10}, PlotTheme #] & /@
{"Default", "Detailed", "Classic", "Monochrome", "Scientific", "Minimal"}
Out[10]=
2 4 6 8 10
-0.2 0.2 0.4 0.6
,
0 2 4 6 8 10
-0.2 0.0 0.2 0.4 0.6
J1(x) J2(x) J3(x)
,
2 4 6 8 10
-0.2 0.2 0.4 0.6
,
2 4 6 8 10
-0.2 0.2 0.4 0.6
,
0 2 4 6 8 10
-0.2 0.0 0.2 0.4 0.6
,
Opsi-opsi penting lainnya akan diberikan pada contoh-contoh selanjutnya sesuai dengan keperluan.
Gaya tampilan grafik
Opsi grafik yang digunakan untuk mengatur gaya tampilan grafik adalah PlotStyle. Dengan opsi ini kita dapat mengatur warna (RGBCol
or[..]), jenis garis (Dashing[..]), ketebalan garis (Thickness[..]), ukuran titik (PointSize[..]), dsb.
Pada contoh berikut, grafik sin(x) ditampilkan dengan ketebalan 2% dari lebar grafik, sementara grafik cos(x) ditampilkan terputus-putus dengan panjang 3% dari lebar grafik.
In[11]:= Plot[{Sin[x], Cos[x]}, {x, -3, 3}, PlotStyle {Thickness[0.02], Dashing[{0.03}]}]
Out[11]=
-3 -2 -1 1 2 3
-1.0 -0.5 0.5 1.0
Ada beberapa cara untuk memberikan efek warna. Perintah RGBColor[r,g,b] menyatakan warna yang tersusun dari r, g, dan b persen warna merah, hijau, dan biru. Jadi, RGBColor[1,0,0] adalah merah, dan RGBColor[1,0,1] adalah ungu (campuran merah dengan biru).
Perhatikan bahwa parameter r, g, dan b harus bernilai mulai dari 0 hingga 1.
Cara lain yang dapat dilakukan adalah dengan perintah GrayLevel[g] (0≤g≤1), dimana GrayLevel[0] adalah hitam dan GrayLevel[1] adalah putih.
ParametricPlot
Perintah
ParametricPlot[{x[t],y[t]}, {t, tmin, tmax}]
menampilkan grafik persamaan parametrik x=f(t) dan y=g(t), dengan t suatu parameter yang memiliki domain (tmin, tmax).
Berikut adalah grafik persamaan parametrik sebuah lingkaran berjari-jari 1.
In[12]:= ParametricPlot[{Sin[t], Cos[t]}, {t, 0, 2 π}]
Out[12]=
-1.0 -0.5 0.5 1.0
-1.0 -0.5 0.5 1.0
Grafik berikut ditampilkan dalam suatu bingkai (Frame->True), tanpa menggunakan sumbu (Axes->False), dengan label bingkai
"x" dan "y" (FrameLabel->{"x","y"})
In[13]:= ParametricPlot[{102 Cos[t] + 60 Cos[17 / 15 t], 102 Sin[t] - 60 Sin[17 / 15 t]}, {t, 0, 30 Pi}, AspectRatio Automatic, Axes False, Frame True, FrameLabel {"x", "y"}]
Out[13]=
-150-100 -50 0 50 100 150 -150
-100 -50 0 50 100 150
x
y
ContourPlot
ContourPlot digunakan untuk menampilkan grafik fungsi yang berbentuk implisit, F(x, y) =0.
ContourPlot[persImp, {x, a, b}]
ContourPlot[persImp,{x,a,b},{y,c,d}]
Berikut contoh sebuah grafik fungsi implisit.
In[14]:= ContourPlot3 x2+3 x y + 12 y212, {x, -2.5, 2.5}, {y, -2.5, 2.5}
Out[14]=
-2 -1 0 1 2
-2 -1 0 1 2
Seperti halnya pada Plot, ContourPlot dapat digunakanan untuk menampilkan beberapa grafik fungsi implisit secara bersamaan.
Interval tampilan kedua sumbu juga dapat dibatasi.
In[15]:= ContourPlot3 x2+3 x y + 12 y212, 12 x2+3 x y + 3 y212, 3 x2+12 x y + 3 y21, {x, -2.5, 2.5}, {y, -2.5, 2.5}
Out[15]=
-2 -1 0 1 2
-2 -1 0 1 2
Plot Tebaran Data: ListPlot
Seringkali kita harus bekerja dengan data. Misalnya, kita perlu menampilkan tebaran data sebelum melakukan analisis lebih lanjut. Perintah untuk menampilkan tebaran data (yang berupa list dalam Mathematica) adalah ListPlot, dengan format
ListPlot[listData, opsi]
listData dapat berupa list berdimensi satu atau pasangan data {xi, yi}.
Misalkan kita memiliki data berdimensi satu sebagai berikut
In[16]:= data1 = Table[Prime[n] / n, {n, 10}] // N
Out[16]= {2., 1.5, 1.66667, 1.75, 2.2, 2.16667, 2.42857, 2.375, 2.55556, 2.9}
Mathematica akan memplot list berdimensi satu {y1, y2, ..., yn} sebagai pasangan berurut {{1, y1}, {2, y2}, ..., {n, yn}}
In[17]:= ListPlot[data1, PlotStyle PointSize[0.02], PlotRange {{0, 10}, {1, 3}}, AxesOrigin {0, 1}]
Out[17]=
0 2 4 6 8 10
1.0 1.5 2.0 2.5 3.0
Perhatikan opsi AxesOrigin->{0,1} yang mengontrol perpotongan sumbu di titik (0, 1), dan opsi PointSize yang mengatur ukuran titik data.
Berikut akan diplot beberapa pasangan data acak yang terlebih dahulu akan dibangkitkan
In[18]:= data2 = N[Table[{n, n + Sin[n] + RandomReal[]}, {n, 0, 5 π, 0.2` π}]];
ListPlot[data2, PlotStyle PointSize[0.02`]]
Out[19]=
5 10 15
5 10 15
Opsi PlotJoined->True berguna untuk menghubungkan pasangan data yang bersebelahan.
In[20]:= ListPlot[data2, Joined True]
Out[20]=
5 10 15
5 10 15
Perintah di atas dapat diringkas dengan ListLinePlot.
In[21]:= ListLinePlot[data2]
Out[21]=
5 10 15
5 10 15
Filling
Opsi Filling memungkinkan kita untuk mengisi area antara grafik dan sumbu-x atau area antar grafik dengan warna tertentu.
In[22]:= Plot[Sin[x], {x, 0, 2 π}, Filling Axis, Ticks {Range[0, 2 π, π / 2], {-1, 1}}]
Out[22]=
π
2 π 3π
2 2π
-1 1
In[23]:= Plot[{Sin[x], Cos[x]}, {x, 0, 2 π}, Filling {1 {2}}]
Out[23]=
1 2 3 4 5 6
-1.0 -0.5 0.5 1.0
Grafik Tiga Dimensi
Plot3D
Plot3D adalah perintah untuk menampilkan plot permukaan dalam ruang berdimensi tiga yang analog dengan perintah Plot pada ruang berdimensi tiga. Argumennya berupa fungsi dua variabel beserta masing-masing domainnya.
Berikut ini ditampilakn grafik fungsi
z = sin x
2+y2 x2+y2
Perhatikan bahwa fungsi tersebut tak terdefinisi pada (0, 0) sehingga akan memunculkan pesan peringatan.
In[24]:= Plot3D[Sin[Sqrt[x ^ 2 + y ^ 2]] / Sqrt[x ^ 2 + y ^ 2], {x, -3 Pi, 3 Pi}, {y, -3 Pi, 3 Pi}, AxesLabel {"x", "y", "z"}]
Out[24]=
Plot tiga dimensi menggunakan sampling titik (point sampling) dalam proses evaluasi fungsi. Secara default, sebuah grid berukuran 15 x 15 digunakan untuk menghasilkan 152 = 225 titik. Dengan memperbesar nilai ini melalui opsi PlotPoints akan dihasilkan grafik permukaan yang lebih halus, namun memerlukan waktu komputasi maupun memori yang lebih besar.
Sekarang grafik di atas akan ditampilkan kembali dengan mengatur beberapa opsi, agar diperoleh tampilan yang optimal. Semua titik pada domain disertakan (PlotRange->All), PlotPoints ditingkatkan menjadi 30 sehingga akan dihasilkan permukaan yang lebih halus, baik sumbu maupun kotak dihilangkan. Kemudian, rasio ketiga arah dibuat sama.
In[25]:= Plot3D[Sin[Sqrt[x ^ 2 + y ^ 2]] / Sqrt[x ^ 2 + y ^ 2], {x, -3 Pi, 3 Pi}, {y, -3 Pi, 3 Pi}, PlotRange All, PlotPoints 30, Axes False, Boxed False, BoxRatios {1, 1, 1}]
Out[25]=
ContourPlot
ContourPlot menampilkan grafik fungsi dua variabel, dimana daerah dengan intensitas keabuan yang sama menunjukkan nilai fungsi yang hampir sama.
In[26]:= Plot3Dx2 25
+ y2
9, {x, -2, 2}, {y, -2, 2}, ViewPoint {-2, -1, 1}, BoxRatios {1, 1, 1}
Out[26]=
In[27]:= ContourPlotx2 25
+ y2
9, {x, -2, 2}, {y, -2, 2}
Out[27]=
-2 -1 0 1 2
-2 -1 0 1 2
DensityPlot
DensityPlot secara otomatis menghasilkan sebuah grid level warna, dimana daerah dengan warna yang lebih ringan menyatakan suatu nilai fungsi yang lebih besar dibandingkan dengan daerah yang berwarna lebih gelap.
In[28]:= DensityPlotx2 25
+y2
9, {x, -2, 2}, {y, -2, 2}
Out[28]=
ParametricPlot3D
ParametricPlot3D analog dengan ParametricPlot. Bergantung pada input yang diberikan, ParametricPlot dapat menghasilkan suatu kurva ruang atau suatu permukaan
ParametricPlot3D akan menghasilkan suatu kurva ruang bila diberikan list dari tiga fungsi parametrik dengan satu parameter.
In[29]:= ParametricPlot3DSin[t], Cos[t], t
3, {t, 0, 6 π}, Axes False
Out[29]=
List dari tiga fungsi parametrik dengan dua parameter menghasilkan suatu permukaan.
In[30]:= ParametricPlot3D[{Sin[v] Cos[u], Sin[v] Sin[u], Cos[v]}, {u, 0, 1.5` π}, {v, 0, π}]
Out[30]=
ParametricPlot3D juga dapat menghasilkan gabungan plot permukaan dari beberapa list persamaan parametrik.
In[31]:= ParametricPlot3D{Sin[v] Cos[u], Sin[v] Sin[u], Cos[v]},
1
2Sin[v] Cos4 u 3 , 1
2Sin[v] Sin4 u
3 , Cos[v]
2 , {u, 0, 1.5` π}, {v, 0, π}
Out[31]=
Grafik Fungsi Diskontinu
Menampilkan grafik fungsi diskontinu dimungkinkan dengan beberapa opsi. Berikut tampilan fungsi diskontinu “Floor” dengan berbagai opsi.
In[32]:= Plot[Floor[x], {x, -2, 3},
Epilog { Table[{EdgeForm[Black], Black, Disk[{i, i}, 0.05]}, {i, -2, 2}], Table[{EdgeForm[Black], White, Disk[{i + 1, i}, 0.05]}, {i, -2, 2}]}]
Out[32]=
-2 -1 1 2 3
-2 -1 1 2
Cara yang lebih efisien adalah dengan memanfaatkan “ResouceFunction[EnhancedPlot]” yang terdapat pada Function Repository Wolfram. Terlebih dahulu didefinisikan fungsi sesepenggal (piecewise functions) f. Tekan tombol [Esc]pw[Esc] untuk menampilkan lambang kurung kurawal pembuka (pw = piecewise), lalu tekan “[Ctrl] + ,” untuk membuat matriks 22, tekan “[Ctrl + [Enter]” untuk menambah baris sehingga menjadi matriks berukuran 32. Tuliskan definisi fungsi beserta domainnya pada kolom yang berbeda.
In[33]:= f[x_] :=
x2 x < 1 x2+2 x > 1 2 x 1
Tuliskan perintah berikut. Untuk pertama kali, fungsi “EnhancedPlot” akan dicari pada Function Repository Wolfram. Opsi
"FindExceptions"True secara otomatis akan mengidentifikasi jenis ketakkontinuan pada grafik fungsi. Opsi ini juga dapat mengidenti- fikasi garis asimtot suatu fungsi.
In[34]:= ResourceFunction["EnhancedPlot"][f[x], {x, 0, 2}, "FindExceptions" True]
Out[34]=
0.5 1.0 1.5 2.0
1 2 3 4 5 6
Menampilkan Beberapa Grafik
Perintah Plot maupun Plot3D dapat digunakan untuk menampilkan beberapa grafik sekaligus. Kita juga dapat menampilkan beberapa grafik yang telah didefinisikan sebelumnya.
Show
Show memungkinkan kita untuk menampilkan grafik(-grafik) yang telah dibuat sebelumnya. Perhatikan ilustrasi berikut
In[35]:= plot1 = Plotx Sin[x]2, {x, 0, 3 π}
Out[35]=
2 4 6 8
2 4 6 8
In[36]:= plot2 = Plotx Cos[x]2, {x, 0, 3 π}, PlotStyle {Dashing[{0.03}], Thickness[0.01]}
Out[36]=
2 4 6 8
2 4 6 8
Show dapat digunakan untuk menampilkan keduanya pada sumbu dan skala yang sesuai.
In[37]:= Show[plot1, plot2]
8
Berikut adalah pasangan data kelas usia (tahun) dan berat badan (kg):
Clear[data]
data={{1,35},{2,55},{3,68},{4,70},{5,71},{6,75},{7,79},{8,82},{9,81},{10,80},{11,78},{12,99},{
Tebaran tampilan data tersebut adalah sebagai berikut:
In[40]:= dataPlot = ListPlot[data, PlotStyle PointSize[0.02`], PlotRange {20, 100}]
Out[40]=
0 2 4 6 8 10 12 14
40 60 80 100
Misalkan pasangan data tersebut diduga dengan model nonlinear
y (t) = 87 1 + e-0.4 (t-1)
In[41]:= y[t_] := 87.0 / (1 + Exp[-0.4 (t - 1)])
In[42]:= modelPlot = Plot[y[t], {t, 1, 15}, PlotRange {20, 100}]
Out[42]=
0 2 4 6 8 10 12 14
40 60 80 100
Sekarang tebaran data maupun grafik model penduganya dapat ditampilkan bersama dengan perintah Show
In[43]:= Show[dataPlot, modelPlot]
Out[43]=
0 2 4 6 8 10 12 14
40 60 80 100
GraphicsArray
Perintah lainnya yang berguna untuk menampilkan beberapa grafik adalah GraphicsRow (baris), GraphicsColumn (kolom) dan Graphic- sGrid, (baris dan kolom).
In[44]:= Show[GraphicsRow[{plot1, plot2}]]
Out[44]=
2 4 6 8
2 4 6 8
2 4 6 8
2 4 6 8
GraphicsArray dapat digunakan untuk menampilkan tabel grafik dalam bentuk array dua dimensi.
In[45]:= Show[GraphicsGrid[{{plot1, plot2}, {plot2, plot1, plot2}}]]
Out[45]= 2 4 6 8
2 4 6 8
2 4 6 8
2 4 6 8
2 4 6 8
2 4 6 8
2 4 6 8
2 4 6 8
2 4 6 8
2 4 6 8
Pustaka
Ruskeepää, H. 2009. Mathematica Navigator - Mathematics, Statistics, and Graph, 3rd edition. Elsevier.
Abel, M. L., J. P. Braselton. 2022. Mathematica by Example, 6th edition. Elsevier.