Artikel Terkait

dasar tukang pamer! beginian ajah dijadiin artikel!

Prakata

Tujuan: Menggambar Bagan Berdasar Persamaan Matematika

Akibat Kurang Bergaul

Saya juga berharap ada yang memperkenalkan matplotlib atau sejenisnya, saat saya berkuliah di fakultas teknik. Dijaman djadoel dahulu adanya Matlab, itupun saya sama sekali tidak tahu. Kebetulan skripsi saya terkait dengan akusisi data, yaitu data realtime yang diambil dari mesin diesel, dengan gambaran diagram P-V, yang harus ditampilkan seketika di layar komputer.

Saya pikir, matplotlib adalah peralatan yang tepat, untuk pembikinan diagram seperti ini. Dengan maraknya data science dan pemrograman fungsional. Sekarang saya merasa perlu juga, untuk memberi gambaran grafik dari suatu rumus matematika, di blog. Dan juga mengirim gambaran tersebut, ke telegram atau whatsapp dalam format PNG.

Daripada saya berkeluh kesah, saya membikin skrip bikinan sendiri berdasarkan tutorial yang ada, untuk menampilkan grafik berdasarkan rumus, dengan menggunakan matplotlib.

Daftar Isi

Bahasa Inggris

Artikel ini juga disajikan di blog penulis yang lain, dalam bahasa Inggris:


1: Garis Dua Dimensi

$$ y = x^2 - 12x - 64 $$

Skrip python-nya sederhana saja sih.

import numpy as np
import matplotlib
matplotlib.rcParams['text.usetex'] = True
import matplotlib.pyplot as plt

def f(x):
return x**2 - 12*x - 64

x = np.arange(-6, 16, 0.2)
xdot = np.arange(-6, 16, 1)

plt.plot(x, f(x), 'k', xdot, f(xdot), 'bo')
plt.axis([-10, 20, -120, 60])

plt.axhline(y=0, color='k')
plt.axvline(x=0, color='k')

plt.grid()
plt.suptitle('Easy Quadratic Chart')
plt.title(r'$y = x^2 - 12x - 64$', fontsize=16, color='b', y=1.04)
plt.xlabel('Just X')
plt.ylabel('Just Y')

plt.show()

Lalu jalankan perintah ini:

$ python yourscript.py

Maka sohib dapat melihat penampakan berikut:

Python 2D matplotlib: y = x^2 - 12x - 64


2: Permukaan Tiga Dimensi

$$ z = x^2 + y^2 - 12x + 12y + xy - 64 $$

Skrip python-nya agak lebih panjang sedikit.

# This import registers the 3D projection, but is otherwise unused.
from mpl_toolkits.mplot3d import Axes3D

import matplotlib
matplotlib.rcParams['text.usetex'] = True

import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np

def f(x, y):
return x**2 + y**2 - 12*x + 12*y + x*y - 64

# plot figure

fig = plt.figure()
ax = fig.gca(projection='3d')

# Make data.
X = np.arange(-5, 5.1, 0.2)
Y = np.arange(-5, 5.1, 0.2)
X, Y = np.meshgrid(X, Y)

Xline = np.arange(-5, 5.1, 1)
Yline = np.arange(-5, 5.1, 1)
Xline, Yline = np.meshgrid(Xline, Yline)

# Compute z to make the surface.
Z = f(X, Y)
Zline = f(Xline, Yline)

# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.viridis,
linewidth=1, antialiased=False)

wire = ax.plot_wireframe(Xline, Yline, Zline)

# Customize the z axis.
ax.set_zlim(-151, 76)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

# Add a color bar which maps values to colors.
fig.colorbar(surf, shrink=0.5, aspect=5)

# Make a 3D quiver plot
x, y, z = np.zeros((3,3))
u, v, w = np.array([[1,1,0],[1,0,1],[0,1,1]])

ax.quiver(x,y,z,u,v,w,arrow_length_ratio=0.1)

# Some decoration
plt.suptitle('Easy Quadratic Chart')
plt.xlabel('Just X')
plt.ylabel('Just Y')
ax.set_zlabel('Just Z', rotation=90)

# set z ticks
ax.set_zticks(np.arange(-150, 50, 25))

# latex
plt.title(r'$z = x^2 + y^2 - 12x + 12y + xy - 64$',
fontsize=16, color='b', y=1.06)

# finally
plt.show()

Maka sekali lagi, sohib dapat melihat penampakan sebagaimana di bawah:

Python 3D matplotlib: z = x^2 + y^2 - 12x + 12y + xy - 64


Penutup

Ya sudah, itu saja. Saya simpankan kedua skrip tersebut di dalam blog, supaya saya mudah untuk menemukannya suatu hari. Menggambar grafik dengan matplotlib cukup menyenangkan.

Bagaimana menurut sohib sekalian?