Showing posts with label pgfplots. Show all posts
Showing posts with label pgfplots. Show all posts

Thursday, December 24, 2015

Menggambar Fungsi Implisit

Pengantar

Perbedaan antara fungsi implisit dan fungsi eksplisit dapat dilihat dalam persamaan fungsinya. Secara umum fungsi dinyatakan secara eksplisit dimana variabel tak bebas dan variabel bebasnya dapat dinyatakan sebagai
\[y=f(x)\]
Dalam fungsi implisit, selain variabel tak bebas dan variabel bebasnya tidak berbentuk eksplisit seperti di atas, juga terdiri dari beberapa variabel dan dinyatakan sebagai
\[R(x_1,x_2,\ldots,x_n)=0\]
Untuk dua variabel, misalnya, berbentuk
\[R(x,y)=0\]
Nah, tulisan ini memang didasari oleh fungsi implisit yang disodorkan kepada saya dalam bentuk soal sebagai berikut.
Tentukan semua bilangan real $(x,y)$ dari sistem persamaan \begin{cases}
\sqrt{x-y}=x+y-7\\
\sqrt{x+y}=x-y-1
\end{cases}
Setelah itu, yang pertama terpikirkan adalah bagaimana menyelesaikan soal tersebut secara grafis; menyiasati penyelesaian soal selain cara aljabar. Soal ini tampak rumit, baik untuk diselesaikan secara aljabar maupun secara grafis. Secara aljabar saya coba menyelesaikannya dengan cara mengkuadratkan kedua ruas, tetapi ini menghasilkan jawaban yang keliru (karena cara tersebut tidak berlaku pada fungsi implisit). Hal ini diketahui setelah saya memeriksanya secara grafis pada WolframAlpha. Saya hentikan untuk menjawabnya secara aljabar, karena jawaban itu sudah ditemukan oleh Pak Anang. Saya kembali ke daya tarik semula, yaitu mencari cara untuk menyelesaikannya secara grafis. Akhirnya ditemukan juga, kita dapat menyelesaikannya dengan menggunakan paket pgfplots.

Menggambar Fungsi Implisit

Perhatikan gambar di atas. Berbeda dari penggunaan paket pgfplots sebelumnya dalam tulisan-tulisan ini, fungsi implisit digambar dengan menggunakan perintah utama dari gnuplot. Saya juga sudah mencobanya dengan menggunakan SageMath, tetapi pengkodeannya terlalu rumit.

Kurva dari fungsi implisit kita gambar dalam perintah dasar \addplot dengan dua opsi utama
raw gnuplot,empty line=jump
diiukuti oleh perintah
gnuplot {
    set contour base;
    set cntrparam levels discrete 0.001;
    unset surface;
    set view map;
    set isosamples 500;
    splot ... ;
    };
Ketiga titik itu kita ganti dengan rumus fungsi yang akan kita gambar.

Sebagai contoh, untuk menggambar kurva dari $\sqrt{x-y}=x+y-7$ kita harus menyatakan persamaan fungsinya secara implisit dengan ruas kanan nol menjadi $\sqrt{x-y}-x-y+7=0$. Kemudian fungsi dari ruas kiri itu kita cantumkan dalam perintah berikut ini.
\addplot[name path=satu,blue,
    raw gnuplot,very thick,
    empty line=jump 
    ] gnuplot {
      set contour base;
      set cntrparam levels discrete 0.001;
      unset surface;
      set view map;
      set isosamples 500;
      splot sqrt(x-y)-x-y+7;%biru
    };
Nama path dicantumkan dalam opsi karena (seperti tampak pada gambar di atas) saya akan menetapkan koordinat titik potong dari kedua kurva tersebut. Agar opsi ini diterima, lebih dulu kita muat library intersections pada preamble.
\usetikzlibrary{intersections}
Kurva kedua untuk $\sqrt{x+y}=x-y-1$ kita ubah menjadi $\sqrt{x+y}-x+y+1=0$, kemudian kita cantumkan dalam
\addplot[name path=dua,red,
    raw gnuplot,very thick,
    empty line=jump 
    ] gnuplot {
      set contour base;
      set cntrparam levels discrete 0.001;
      unset surface;
      set view map;
      set isosamples 500;
      splot sqrt(x+y)-x+y+1;%merah
    };


Menetapkan Koordinat Titik Potong antara Dua Kurva

Dengan library intersections kita sudah menamai masing-masing path dari kedua kurva sebagai satu dan dua. Sekarang kita sebut nama titik potongnya itu sebagai $P$, maka kita nyatakan
\path [name intersections={of=satu and dua,by=P}];
Bila pada $P$ kita ingin menandainya dengan noktah berupa lingkaran kecil, maka kita gambar (misalnya) dengan
\draw[fill=yellow] (P) circle [radius=1.25pt];
Hal-hal lainnya dalam pengkodean ini dapat Anda pelajari dalam tulisan sebelumnya tentang penggunaan paket pgfplots.


Penutup

Nah, berikut ini saya sertakan pengkodean selengkapnya dan dokumen yang dihasilkannya. Contoh dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX. 
Demikian semoga bermanfaat.


$\square$ Adjie Gumarang Pujakelana 2015
\documentclass{article}
\usepackage[margin=2cm,a4paper]{geometry}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{intersections}
\let\ds\displaystyle
\pagestyle{empty}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[clip=false,
  axis lines=center, 
  xmin=-1,xmax=12,
  ymin=-1,ymax=5,
  xtick={1,6,7,8,10},ytick={2,3,4},
  enlargelimits=false
  ]
\addplot[name path=satu,blue,
    raw gnuplot,very thick,
    empty line=jump 
    ] gnuplot {
      set contour base;
      set cntrparam levels discrete 0.001;
      unset surface;
      set view map;
      set isosamples 500;
      splot sqrt(x-y)-x-y+7;%biru
    };
\addplot[name path=dua,red,
    raw gnuplot,very thick,
    empty line=jump 
    ] gnuplot {
      set contour base;
      set cntrparam levels discrete 0.001;
      unset surface;
      set view map;
      set isosamples 500;
      splot sqrt(x+y)-x+y+1;%merah
    };
\path [name intersections={of=satu and dua,by=P}];
\draw[fill=yellow] (P) circle [radius=1.25pt];
\draw[dashed,gray] (axis cs:0,2.5)--(P) (axis cs:6.5,0)--(P);
\node[coordinate,pin=95:{\color{red}\small{$\ds\sqrt{x+y}=x-y-1$}}] at (axis cs:7.9,3.5){};
\node[blue,coordinate,pin=80:{\color{blue}\small{$\ds\sqrt{x-y}=x+y-7$}}] at (axis cs:8,1.5){};
  \end{axis}
\end{tikzpicture}

\end{document}





Tuesday, December 15, 2015

Menggambar Grafik Fungsi Trigonometri

Pada tulisan ini kita akan menggambar grafik fungsi trigonometri dengan daerah asal (absis) berupa sudut dalam radian yang dinyatakan dalam $\small\pi$, seperti tampak pada gambar di samping ini, dengan menggunakan paket pgfplots.

Preamble

Tentu saja kita muat
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
Tetapi untuk keperluan lainnya (ukuran dan letak) kita memerlukan library tikz
\usetikzlibrary{calc,positioning,intersections}
Hal utama dalam contoh grafik ini adalah menetapkan ukuran (jarak) absis yang dinyatakan dalam $\small\pi$. Agar ukuran ini menyatakan ukuran sebenarnya, kita memerlukan makro berikut ini.
\makeatletter
\newcommand*{\ArrayToCommaList}[1]{%
  \let\ArrayToCommaList@Result\@empty
  \expandafter\@tfor\expandafter\ArrayToCommaList@Entry
  \expandafter:\expandafter=#1\do{%
    \edef\ArrayToCommaList@Result{%
      \ArrayToCommaList@Result,\ArrayToCommaList@Entry
    }%
  }%
  % Remove first comma
  \edef#1{%
    \expandafter\@cdr\ArrayToCommaList@Result\@empty\@nil
  }%
}
\makeatother
Dengan makro tersebut kita akan mendaftar nilai-nilai absis pada sumbu $\small{X}$ dan mengurutkannya pada jarak yang tepat berdasarkan nilai $\small\pi$.

Opsi-opsi Grafik

Di dalam environment gambar tikz, sebelum environment axis, kita tetapkan dulu nilai-nilai absis yang akan kita tunjukkan, dengan menggunakan makro tadi, misalnya
\pgfmathsetmacro\xticklist{(1/4)*pi, (1/2)*pi, (3/4)*pi, pi, (5/4)*pi, (3/2)*pi, (7/4)*pi, 2*pi}
\ArrayToCommaList\xticklist
Agar bagian kurva kita termuat seluruhnya pada bidang gambar maka kita nyatakan
clip=false,
Kedua sumbu kita letakkan di tengah dan saya pilih warna bistre untuk kedua sumbu tersebut.
axis lines=middle,
axis line style={-stealth,bistre},
Warna bistre itu kita tetapkan dengan paket xcolor sebagai
\definecolor{bistre}{RGB}{61, 43, 31}
Kemudian kita namai dan kita letakkan nama kedua sumbu itu sebagai
xlabel=$x$,ylabel=$y$,
xlabel style=right,ylabel style=above,
Sesuai dengan cakupannya, kita batasi daerah asal dan daerah kawan, misalnya
xmin=-.25,xmax=2*pi+.25,
ymin=-2.5,ymax=2.5,
Noktah untuk absis yang kita tunjukkan merujuk pada daftar dalam perintah \xticklist semula, sedangkan ordinatnya cukup kita tunjukkan bilangan $\small-2$, $\small-1$, $\small1$, dan $\small2$.
xtick=\xticklist,ytick={-2,-1,1,2},
Khusus untuk nilai-nilai absisnya kita namai sesuai dengan daftar tersebut, yaitu
xticklabels={$\frac{\pi}{4}$,$\frac{\pi}{2}$,$\frac{3\pi}{4}$,$\pi$,$\frac{5\pi}{4}$,$\frac{3\pi}{2}$,$\frac{7\pi}{4}$,$2\pi$},
Agar tak terlalu besar, ukuran huruf untuk bilangan-bilangan absis dan ordinat itu kita perkecil, misalnya dengan
xticklabel style={font=\small,bistre},
yticklabel style={font=\small,bistre}
Bila dianggap masih terlalu besar juga, maka ukuran huruf itu dapat kita ganti dengan \scriptsize atau \footnotesize.

Grafik Fungsi

Setelah opsi-opsi tersebut kita muat, barulah sekarang kita bersiap untuk menyatakan kurva yang ingin kita buat. Dalam menggambar grafik fungsi trigonometri, sudut kita nyatakan di dalam tanda kurung setelah fungsinya dan sudut itu dinyatakan dalam derajat (degree) sebagai
cos(deg(sudut))
Dengan demikian untuk menyatakan kurva dari fungsi $\small{y=\cos{3x}+\cos{x}}$, kita nyatakan (dalam tanda kurung siku) sebagai
{cos(deg(3*x))+cos(deg(x))}
Kurva pada gambar di atas dinyatakan oleh
\addplot [samples=500,thick,stempel,domain=0:2*pi] {cos(deg(3*x))+cos(deg(x))} node[above left] {$y=\cos 3x + \cos x$};
Perhatikan opsi yang menyertainya. Kurva yang kita buat mencakup daerah asal $\small0\le{x}\le2\pi$, diwarnai oleh warna stempel, ketebalan garisnya seukuran thick, dan kerapatan plot setingkat $\small500$. Kemudian sekaligus juga kita namai kurva ini oleh perintah node dengan persamaan fungsinya yang diletakkan (pada ujung kanan kurva) di atas-kirinya.
Warna stempel ditetapkan sebagai
\definecolor{stempel}{RGB}{0 34 85}

Pengkodean dan Hasilnya

Nah, berikut ini pengkodean selengkapnya untuk menggambar grafik fungsi trigonometri seperti tampak pada gambar di atas, kemudian hasilnya dapat Anda lihat pada Gambar 1 dalam dokumen terlampir di bawahnya. Kemudian silakan Anda coba gunakan cara-cara yang telah diuraikan di atas untuk menghasilkan kurva seperti tampak pada Gambar 2 dan Gambar 3 dalam dokumen terlampir.
\documentclass[10pt]{article}
\usepackage[margin=2cm,a4paper]{geometry}
\usepackage{mathtools}
\usepackage[dvipsnames,svgnames]{xcolor}
\definecolor{bistre}{RGB}{61, 43, 31}
\definecolor{stempel}{RGB}{0 34 85}
%-------------------------------------------------

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{calc,positioning,intersections}

%-----------------absis dalam pi
\makeatletter
\newcommand*{\ArrayToCommaList}[1]{%
  \let\ArrayToCommaList@Result\@empty
  \expandafter\@tfor\expandafter\ArrayToCommaList@Entry
  \expandafter:\expandafter=#1\do{%
    \edef\ArrayToCommaList@Result{%
      \ArrayToCommaList@Result,\ArrayToCommaList@Entry
    }%
  }%
  % Remove first comma
  \edef#1{%
    \expandafter\@cdr\ArrayToCommaList@Result\@empty\@nil
  }%
}
\makeatother
%---------------------------------------
\pagestyle{empty}

\begin{document}

\begin{figure}[!ht] 
\centering
\begin{tikzpicture}
\pgfmathsetmacro\xticklist{(1/4)*pi, (1/2)*pi, (3/4)*pi, pi, (5/4)*pi, (3/2)*pi, (7/4)*pi, 2*pi}
\ArrayToCommaList\xticklist
\begin{axis}[
    clip=false,axis lines=middle,
    axis line style={-stealth,bistre},
    xlabel=$x$,ylabel=$y$,
    xlabel style=right,ylabel style=above,
    xmin=-.25,xmax=2*pi+.25,
    ymin=-2.5,ymax=2.5,
    xtick=\xticklist,ytick={-2,-1,1,2},
    xticklabels={$\frac{\pi}{4}$,$\frac{\pi}{2}$,$\frac{3\pi}{4}$,$\pi$,$\frac{5\pi}{4}$,$\frac{3\pi}{2}$,$\frac{7\pi}{4}$,$2\pi$},
    xticklabel style={font=\small,bistre},
    yticklabel style={font=\small,bistre}
]
\addplot [samples=500,thick,stempel,domain=0:2*pi] {cos(deg(3*x))+cos(deg(x))} node[above left] {$y=\cos 3x + \cos x$};
\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}



Penutup

Demikianlah, dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX. 
Semoga bermanfaat.

Adjie Gumarang Pujakelana 2015


Monday, December 7, 2015

Menggambar Grafik Fungsi Aljabar

Pada tulisan ini saya akan mengulas cara menggambar grafik fungsi aljabar dengan menggunakan paket pgfplots. Sebagai contoh, saya kutip dari soal Ujian Nasional Matematika SMA/MA IPA Tahun Pelajaran 2014/2015 berikut ini.
Luas daerah antara kurva $\small{y=x^3-x^2-6x}$ dan sumbu $\small{X}$ adalah
  1. $\small23\frac{5}{12}$ satuan luas
  2. $\small23\frac{1}{12}$ satuan luas
  3. $\small22\frac{3}{12}$ satuan luas
  4. $\small21\frac{5}{12}$ satuan luas
  5. $\small21\frac{1}{12}$ satuan luas
Gambar akhir yang kita tuju tampak seperti di samping ini.
Nah, bagaimana cara menggambar grafik fungsi $\small{y=x^3-x^2-6x}$ dengan menggunakan paket pgfplots?

Paket

Pada preamble kita muat
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

Environment

"Kerangka" untuk menggambar grafik dalam pgfplots menggunakan environment sebagai berikut
\begin{tikzpicture}
\begin{axis}[opsi]
... pengkodean grafik
\begin{axis}
\end{tikzpicture}

Menggambar Grafik

Persamaan fungsi yang akan kita gambar adalah $\small{y=x^3-x^2-6x}$, maka dalam pengkodeannya kita cukup mencantumkan $\small{x^3-x^2-6x}$ saja, dan untuk perkalian digunakan tanda bintang.
\begin{tikzpicture}
\begin{axis}
\addplot {x^3-x^2-6*x};
\end{axis}
\end{tikzpicture}
Perhatikan pengkodean di atas. Kita tidak menggunakan opsi, baik pada environment tikzpicture maupun pada environment axis. addplot adalah perintah untuk menggambar kurva dalam pgfplots. Perintah ini pun tidak menyertakan opsi. Hasilnya dapat dilihat pada Gambar 1 dalam dokumen terlampir di bawah ini.

Sekarang, apa yang terjadi jika kita cantumkan opsi pada environment axis dengan meletakkan kedua sumbu di tengah, kemudian pada perintah addplot kita cantumkan opsi daerah asal, kehalusan kurva, dan ketebalan kurva?
\begin{tikzpicture}
\begin{axis}[axis lines=middle]
\addplot[domain=-2.5:4.25,smooth,very thick] {x^3-x^2-6*x};
\end{axis}
\end{tikzpicture}
Perhatikan juga bahwa setiap perintah diakhiri oleh titik-koma, setiap opsi dipisahkan oleh koma, dan rentang daerah asal dipisahkan oleh titik-dua. Penetapan nilai pada rentang daerah asal bersifat subjektif, menurut selera. Hasilnya dapat dilihat pada Gambar 2 dalam dokumen terlampir di bawah ini.

Pada Gambar 2 tampak bahwa rentang absis dan rentang ordinat "tidak imbang", karena nilai $\small{y}$ terlalu besar. Kita (subjektif) dapat mengaturnya dengan menambahkan opsi nilai minimum dan maksimum untuk keduanya pada environment axis, misalnya
xmin=-3, xmax=5, 
ymin=-9, ymax=9,
Hasilnya dapat dilihat pada Gambar 3 dalam dokumen terlampir di bawah ini.

Selanjutnya, kita dapat menunjukkan semua atau sebagian dari nilai absis dan ordinat pada grafik yang kita buat. Jika kita ingin menunjukkan hanya sebagiannya (tertentu) saja, maka kita menyatakannya dengan, misalnya,
xtick={-2,-1,0,1,2,3},
ytick={-8,4},
Ini juga (tambahkan) merupakan opsi pada environment axis, dan hasilnya dapat dilihat pada Gambar 4 dalam dokumen terlampir di bawah ini.

Opsi berikutnya adalah kerapatan dari plot kurva yang kita buat, yaitu samples. Kita dapat menetapkan nilai yang memadai. Kemudian, kita dapat memperluas atau tidak memperluas bagian kiri dan kanan bidang grafik. Ini ditetapkan dalam opsi enlargelimits oleh true atau false. Dengan demikian, sebagai opsi environment axis, dapat kita tambahkan, misalnya,
samples=500,
enlargelimits=false,
Hasilnya dapat dilihat pada Gambar 5 dalam dokumen terlampir di bawah ini.

Sekarang kita akan menamai kedua sumbu koordinat. Dalam opsi label dapat kita tetapkan beberapa perintah untuk penamaannya. Dalam contoh ini, misalnya, nama sumbu adalah $\small{x}$ dan $\small{y}$ dengan ukuran huruf large.
xlabel={\large $x$},
ylabel={\large $y$}
Perhatikan bahwa ukuran huruf itu bersifat lokal, sehingga harus diperintahkan di dalam tanda kurung kurawal. Penamaan semacam ini bersifat asal (bawaan) dari pgfplots dan hasilnya dapat dilihat pada Gambar 6 dalam dokumen terlampir di bawah ini.

Bila diinginkan nama sumbu $\small{x}$ terletak di kanan dan nama sumbu $\small{y}$ terletak di atas, maka pada opsi label ditambahkan style sebagai berikut.
xlabel={\large $x$},xlabel style=right,
ylabel={\large $y$},ylabel style=above,
Hasilnya dapat dilihat pada Gambar 7 dalam dokumen terlampir di bawah ini.

Terakhir kita akan menamai kurva yang kita buat dengan persamaan fungsinya. Dalam hal ini kita gunakan perintah node dari paket tikz (yang merupakan dasar dari paket pgfplots). Kita letakkan namanya pada suatu koordinat (disesuaikan), yang ditautkan oleh pin dengan sudut tertentu. Misalnya,
\node[coordinate,pin=95:{\small{$y=x^3-x^2-6x$}}] at (axis cs:3.3,5){};

Nah, bila keseluruhan pengkodean itu kita rangkai maka akan kita peroleh gambar seperti di atas. Berikut ini pengkodean selengkapnya untuk gambar tersebut dan hasilnya dapat dilihat pada Gambar 8 dalam dokumen terlampir di bawah ini.
\documentclass[10pt]{article}
\usepackage[margin=2cm,a4paper]{geometry}
\usepackage[svgnames,dvipsnames]{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}

\centering
\begin{tikzpicture}
\begin{axis}[
    axis lines=middle,
    xmin=-3, xmax=5, 
    ymin=-9, ymax=9,
    xtick={-2,-1,0,1,2,3},ytick={-8,4},
    samples=500,enlargelimits=false,
    xlabel={\large $x$},xlabel style=right,
    ylabel={\large $y$},ylabel style=above]
\addplot[domain=-2.5:4.25, Navy, smooth,very thick] {x^3-x^2-6*x} ;
\node[coordinate,pin=95:{\small{$y=x^3-x^2-6x$}}] at (axis cs:3.3,5){};
\end{axis}
\end{tikzpicture}

\end{document}




Penutup

Demikianlah, dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX. 
Semoga bermanfaat.

Adjie Gumarang Pujakelana 2015


Friday, December 4, 2015

Menggambar Grafik Fungsi Logaritma

Saya memulung soal dari Ujian Nasional Matematika SMA/MA IPA Tahun Pelajaran 2014/2015, seperti tampak pada gambar di samping ini.
Sekarang kita akan menggambar grafik fungsi logaritma yang tampak pada gambar tersebut dengan menggunakan (lagi-lagi) paket pgfplots.

Selain teknis menggambar grafik tersebut, kita juga akan menambahkan dua perintah dari paket tikz untuk:
  • menghubungkan absis dan ordinat dari satu titik yang terletak pada kurva tersebut,
  • meletakkan nama (persamaan fungsi) dari kurva tersebut,
  • makro untuk menuliskan dengan baik lambang logaritma beserta bilangan pokoknya.

Fungsi untuk Grafik

Fungsi yang memenuhi kurva tersebut adalah $\small{y={}^3\log{x}}$. Dalam pgfplots, fungsi logaritma dinyatakan dalam bentuk logaritma dengan bilangan pokok $\small10$, yaitu dalam bentuk seperti
log10(x)
yang berarti $\small{y={}^{10}\log{x}}$. Oleh karena itu, dengan menggunakan sifat logaritma
\[\boxed{{}^{a}\log{b} = \frac{\log{b}}{\log{a}}}\]
maka kita peroleh $\displaystyle\small{{}^3\log{x}=\frac{\log{x}}{\log3}}$ yang dalam perintah pgfplots dinyatakan sebagai
log10(x)/log10(3)

Menuliskan Lambang Logaritma dengan Baik

Dapat Anda perhatikan penulisan lambang logaritma seperti di atas, di dalam blog ini, yaitu $\small{{}^3\log{x}}$ tampak kurang begitu baik karena ada jarak yang cukup renggang di antara bilangan pokok dan huruf "l" dari "log". Lambang tersebut dituliskan dengan
$\small{{}^3\log{x}}$
Selanjutnya, di dalam penyusunan dokumen $\small\LaTeX$ kita dapat menuliskan lambang logaritma semacam itu dengan lebih baik. Untuk hal ini kita gunakan paket xparse dan makro seperti tertulis di bawah ini, yang kita cantumkan pada preamble.
\usepackage{xparse}
\NewDocumentCommand{\Log}{o}{%
  \IfNoValueTF{#1}{}{{}^{#1}\!}\log}
Dalam penggunaannya kita tulis (misalnya) sebagai
$\Log[3]x$


Opsi-opsi Grafik

Sekarang kita bersiap untuk menggambar kurva tersebut. Opsi-opsi ini sebenarnya bersifat subjektif, tetapi sebagai contoh kita akan menetapkannya sebagai berikut.
Kedua sumbu kita letakkan di tengah, nama sumbu $\small{Y}$ kita letakkan di atasnya, nama sumbu $\small{X}$ kita letakkan di kanannya, dan kita perlebar ruang di kiri dan kanan bidang grafik.
axis lines=middle,
ylabel style=above,ylabel=$Y$,
xlabel style=right,xlabel=$X$,
enlargelimits,
Kemudian kita batasi ruang gambar dengan
xmin=-.25,xmax=5,
ymin=-2,ymax=2,
sehingga absis dan ordinat yang kita tampilkan cukuplah
xtick={1,2,3,4,5},ytick={1,2,3},
Terakhir, agar kurva kita tampil "halus-mulus" kita tetapkan "kerapatan plot" senilai
samples=500

Grafik

Kita gambar kurva dari $\small{y={}^3\log{x}}$ dalam warna biru, dengan daerah asal $\small{0\le{x}\le5}$, halus, dan ketebalan kurvanya seukuran thick.
\addplot[blue,domain=0:5,smooth,thick]  {log10(x)/log10(3)} ;
Kemudian kita hubungkan absis dan ordinat dari titik $\small(3,1)$ dalam bentuk garis putus-putus yang agak rapat dan diwarnai abu-abu.
\draw[densely dashed,gray] (axis cs:3,0)--(axis cs:3,1)--(axis cs:0,1);
Terakhir kita namai kurva kita ini dengan memakunya pada posisi $\small90^\circ$ dari suatu koordinat, yaitu
\node[coordinate,pin=95:{\small{$y=\Log[3]x$}}] at (axis cs:4,1.25){};

Pengkodean dan Hasilnya

Nah, berikut ini pengkodean selengkapnya untuk menggambar grafik fungsi logaritma seperti tampak pada gambar di atas, kemudian hasilnya dapat Anda lihat dalam dokumen terlampir di bawahnya.
\documentclass[10pt,a4paper]{article}
\usepackage{geometry}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
%--------------------------- notasi logaritma
\usepackage{xparse}
\NewDocumentCommand{\Log}{o}{%
  \IfNoValueTF{#1}{}{{}^{#1}\!}\log}%
%---------------------------

\begin{document}

\centering

\begin{tikzpicture}
\begin{axis}[
    axis lines=middle,
    ylabel style=above,ylabel=$Y$,
    xlabel style=right,xlabel=$X$,
    enlargelimits,
    xmin=-.25,xmax=5,
    ymin=-2,ymax=2,
    xtick={1,2,3,4,5},ytick={1,2,3},
    samples=500]
\addplot[blue,domain=0:5,smooth,thick]  {log10(x)/log10(3)} ;
\draw[densely dashed,gray] (axis cs:3,0)--(axis cs:3,1)--(axis cs:0,1);
\node[coordinate,pin=95:{\small{$y=\Log[3]x$}}] at (axis cs:4,1.25){};
\end{axis}
\end{tikzpicture}

\end{document}



Penutup

Demikianlah, dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX. 
Semoga bermanfaat.

Adjie Gumarang Pujakelana 2015


Thursday, December 3, 2015

Menggambar Histogram dengan Menggunakan Tabel Pgfplots

Histogram yang kita gambar terdahulu menempatkan tepi-tepi kelas dari data berkelompok sebagai absis untuk batang-batangnya. Sekarang kita akan menempatkan tiap-tiap kelasnya sebagai absis yang menamai batang yang bersesuaian, seperti tampak pada gambar di samping ini.

Paket


Pada tulisan ini akan saya tampilkan contoh histogram ini persis seperti gambar tersebut. Untuk itu saya gunakan warna bistre dan bistre Prancis dan Tan dengan paket xcolor. 
\usepackage[svgnames]{xcolor}
\definecolor{bistre}{RGB}{61, 43, 31}
\definecolor{bistref}{RGB}{133, 109, 77}
Paket xcolor ini harus kita muat sebelum paket pgfplots. Sama seperti sebelum ini, untuk menggambar histogram ini, kita gunakan paket pgfplots dan library patterns dari paket tikz untuk pengarsiran batang. Dengan demikian kita muat
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{patterns}

Tabel Pgfplots

Kali ini akan kita buat tabel pgfplots sebagai data yang digunakan oleh pgfplots dalam menggambar histogramnya. Kita akan memberitahu kepada pgfplots bahwa data kita berbentuk tabel, di mana kolom dipisahkan oleh tanda "&" dan baris dipisahkan oleh tanda "\\". Mirip seperti menuliskan tabel di samping ini, kita sebut kolom pertama sebagai Berat dan kolom kedua sebagai f, kemudian kita namai tabel ini sebagai (misalnya) dataku.
\pgfplotstableread[row sep=\\,col sep=&]{
    Berat    & f  \\
    51--60   & 8   \\
    61--70   & 10  \\
    71--80   & 11 \\
    81--90   & 8 \\
    91--100  & 3  \\
    }\dataku

Opsi-opsi Grafik


Sumbu koordinat kita warnai oleh warna bistref yang telah ditetapkan di dalam preamble.
axis line style={bistref},
Sumbu $\small{X}$ kita tetapkan di tengah sedangkan sumbu $\small{Y}$ kita tetapkan di kiri, kemudian pada awal sumbu $\small{X}$ positif kita buat rentang pemutus.
axis x line = center,
axis y line = left,
axis x discontinuity=crunch,
Batang histogram kita tegak, sejajar dengan sumbu $\small{Y}$, maka kita nyatakan
ybar,
Agar batang-batang itu merapat maka jarak antarbatang dan lebar tiap batang kita buat sama, misalnya
x=1cm,bar width=1cm,
sedangkan ruang kosong pada awal dan ujung bidang grafik dapat kita atur dengan menuliskan nilai yang cocok dalam
enlarge x limits=0.375,
Sekarang kita ganti nilai-nilai absisnya oleh kelas-kelas dari data kita, maka kita nyatakan 
symbolic x coords={51--60,61--70,71--80,81--90,91--100},
xtick=data,
kemudian noktah penanda nilai absis dan ordinat kita sembunyikan saja
tickwidth=0pt,
Berikutnya kita namai sumbu $\small{X}$ sebagai Berat dan kita letakkan di kanan, dan kita mewarnai nama ini dengan bistref
xlabel=Berat,
xlabel style={at={(1,0)},right,font=\color{bistre}\small,text width=1cm,align=center},
Agar nilai-nilai ordinat tidak tercetak (kosong) maka kita nyatakan
ytick=\empty,
kemudian kita namai sumbu $\small{Y}$ sebagai Frekuensi dan kita letakkan di (posisi paling) atas, dan kita mewarnai nama ini dengan bistref
ylabel=Frekuensi,
ylabel style={at={(0,1)},above,rotate=-90,font=\color{bistre}\small,text width=1cm,align=center},
Seluruh nilai absis dan ordinat (agar tak terlalu besar) kita buat dalam huruf berukuran small saja.
y tick label style={font=\color{bistre}\small},
x tick label style={font=\color{bistre}\small,text width=1cm,align=center},
Kemudian kita letakkan nilai-nilai itu secara asal (default).
nodes near coords,
nodes near coords align={vertical},
Dalam modus batang-tegak, kita nyatakan nilai $\small{y}$ minimum nol sedang maksimumnya disesuaikan dengan data. Pada data kita ini nilai maksimum frekuensi adalah $\small11$, maka
ymin=0,ymax=13,
Sebagai opsi terakhir, bila perlu, kita dapat membubuhkan judul sebagai keterangan terhadap histogram yang dibuat, misalnya
title=Histogram Berat Benda

Grafik


Kita perintahkan pgfplots untuk menggunakan data kita dari tabel dataku untuk menggambarkan histogramnya berdasarkan pada opsi-opsi grafik di atas. Kemudian kita minta pgfplots mewarnai sisi-sisi batangnya dengan warna bistref dan mengarsir daerah batangnya ke arah Barat Laut.
\addplot[draw=bistref,pattern=north west lines,pattern color=Tan] table[x=Berat,y=f]{\dataku};

Pengkodean dan Hasilnya


Nah, berikut ini pengkodean selengkapnya untuk menggambar histogram seperti tampak pada gambar di atas, kemudian hasilnya dapat Anda lihat dalam dokumen terlampir di bawahnya.
\documentclass{article}
\usepackage[svgnames]{xcolor}
\definecolor{bistre}{RGB}{61, 43, 31}
\definecolor{bistref}{RGB}{133, 109, 77}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{patterns}

\begin{document}

\pgfplotstableread[row sep=\\,col sep=&]{
    Berat    & f  \\
    51--60   & 8   \\
    61--70   & 10  \\
    71--80   & 11 \\
    81--90   & 8 \\
    91--100  & 3  \\
    }\dataku

\begin{tikzpicture}
    \begin{axis}[
    axis line style={bistref},
    axis x line = center,
    axis y line = left,
    axis x discontinuity=crunch,
    ybar,x=1cm,bar width=1cm,
    enlarge x limits=0.375,
    symbolic x coords={51--60,61--70,71--80,81--90,91--100},
    xtick=data,
    tickwidth=0pt,
    xlabel=Berat,
    xlabel style={at={(1,0)},right,font=\color{bistre}\small,text width=1cm,align=center},
    ytick=\empty,
    ylabel=Frekuensi,
    ylabel style={at={(0,1)},above,rotate=-90,font=\color{bistre}\small,text width=1cm,align=center},
    y tick label style={font=\color{bistre}\small},
    x tick label style={font=\color{bistre}\small,text width=1cm,align=center},
    nodes near coords,
    nodes near coords align={vertical},
    ymin=0,ymax=13,title=Histogram Berat Benda
    ]
    \addplot[draw=bistref,pattern=north west lines,pattern color=Tan] table[x=Berat,y=f]{\dataku};
    \end{axis}
\end{tikzpicture}
\end{document}



Penutup

Demikianlah, dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX. 
Semoga bermanfaat.

Adjie Gumarang Pujakelana 2015


Related Posts Plugin for WordPress, Blogger...