Proyek DATACAMP: Menggambar Bunga

SHELLA THERESYA PANDIANGAN
6 min readMar 13, 2021
Bunga
  1. Pola di alam

“Ilmuwan tidak mempelajari alam karena berguna; dia mempelajarinya karena dia menyukainya, dan dia menyukainya karena indah.” (Henri Poincaré)

Ada banyak contoh fakta alam yang bisa dideskripsikan dalam istilah matematika. Contoh bagusnya adalah bentuk kepingan salju, geometri fraktal romanesco brokoli atau bagaimana kesamaan diri mengatur pertumbuhan tanaman.

R adalah alat untuk melakukan analisis serius, tetapi tidak semua hal dalam hidup ini serius. Hidup juga lucu, dan R bisa digunakan untuk bersenang-senang dan melakukan hal-hal indah. Kekuatan grafisnya dapat digunakan untuk menghasilkan gambar artistik seperti yang mengilustrasikan bagian ini, yang diilhami oleh bagaimana tanaman menata daunnya. Fakta ini disebut phyllotaxis dan akan menjadi dasar dari proyek ini.

Di notebook ini, menggunakan paket ggplot2. Selain bersenang-senang, kita akan belajar banyak fitur penting darinya yang berguna tidak hanya untuk seni tetapi juga untuk merepresentasikan data dalam masalah kehidupan nyata. Mari kita mulai dengan memuat perpustakaan.

2. Pemanasan: menggambar titik pada lingkaran
Ada banyak cara untuk merepresentasikan data dengan ggplot2: dari plot sebar sederhana hingga plot biola yang lebih kompleks. Fungsi yang dimulai dengan geom_ menentukan tipe plot. Di notebook ini, kami hanya akan bekerja dengan geom_point () yang memplot poin dalam dua dimensi. Kami membutuhkan kumpulan data dengan dua variabel; sebut saja mereka x dan y.

Kita akan mulai dengan menggambar 50 titik pada lingkaran berjari-jari 1. Karena setiap titik (x, y) harus berada dalam lingkaran satuan, maka x² + y² = 1. Kita bisa mendapatkan ini menggunakan identitas trigonometri Pythagoras yang sangat terkenal yang menyatakan bahwa sin² (θ) + cos² (θ) = 1 untuk bilangan real apa pun θ.

# Create circle data to plot
t <- seq(0, 2*pi, length.out = 50)
x <- sin(t)
y <- cos(t)
df <- data.frame(t, x, y)

# Make a scatter plot of points in a circle
p <- ggplot(df, aes(x, y))
p + geom_point(

Output

3. Buat selaras dengan Golden Angle
Tanaman mengatur daunnya secara spiral. Spiral adalah kurva yang dimulai dari asalnya dan menjauh dari asalnya saat berputar mengelilinginya. Dalam plot di atas, semua titik memiliki jarak yang sama dari asalnya. Cara sederhana untuk menyusunnya dalam bentuk spiral adalah dengan mengalikan x dan y dengan faktor yang bertambah untuk setiap titik. Kita dapat menggunakan t sebagai faktor tersebut, karena memenuhi kondisi ini, tetapi kami akan melakukan sesuatu yang lebih harmonis. Kita akan menggunakan Golden Angle:

Golden Angle= π (3 — √5)

Angka ini terinspirasi dari Golden Ratio, salah satu angka paling terkenal dalam sejarah matematika. Bayangkan Anda memiliki sebuah keliling dan Anda memecahnya menjadi dua busur dengan panjang a dan b, dengan a> b (busur adalah bagian dari keliling). Sudut yang memutus lingkaran sehingga a / b = (a + b) / a disebut Golden Angle. Dengan kata lain: Golden Angle memecah lingkaran sehingga rasio busur besar dan busur kecil adalah Rasio Emas.

Sudut Emas adalah sudut yang ditubuhkan oleh busur yang lebih kecil (merah). Rasio Emas dan Sudut Emas muncul di tempat-tempat yang tidak terduga di alam. Selain kelopak bunga dan daun tanaman, Anda akan menemukannya di kepala biji, kerucut pinus, biji bunga matahari, cangkang, galaksi spiral, badai, dll.

Saatnya berputar!

# Define the number of points
# …. YOUR CODE FOR TASK 3 ….
points <- 500
# Define the Golden Angle
# …. YOUR CODE FOR TASK 3 ….
angle <-(pi*(3-sqrt(5)))
t <- (1:points) * angle
x <- sin(t)
y <-cos(t)
df <- data.frame(t, x, y)

# Make a scatter plot of points in a spiral
p <- ggplot(df, aes(x*t, y*t))
p + geom_point()

Output

4. Hapus semua yang tidak perlu
Selain data, plot mencakup banyak komponen lain yang menentukan tampilan akhirnya. Plot sebelumnya berisi:

latar belakang yang diisi dengan warna abu-abu
kisi garis putih horizontal dan vertikal
berdetak di sepanjang sumbu
judul di setiap sumbu
teks di sepanjang sumbu ke tanda label
Seni tidak cocok dengan sebagian besar elemen ini, jadi inilah saatnya untuk bergerak.

df <- data.frame(t, x, y)

# Make a scatter plot of points in a spiral and remove some plot components
p <- ggplot(df, aes(x*t, y*t))
p + geom_point() +
# …. YOUR CODE FOR TASK 4 ….
theme(panel.background = element_rect(fill=”white”),
panel.grid=element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank())

Output

5. Sedikit riasan: ukuran, warna dan transparansi
Gambar akan mulai terlihat seperti tanaman. Dengan mengubah warna, transparansi (disebut juga alpha), dan ukuran titik, gambar akan menjadi lebih menarik.

# Change the code from Task 4 to modify the
# size, transparency, and color of the points
p <- ggplot(df, aes(x*t, y*t))
p + geom_point(size = 8, alpha = 0.5, color = “darkgreen”) +
theme(panel.background = element_rect(fill=”white”),
panel.grid=element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank())

Output

6. Bermainlah dengan estetika: dandelion
Hingga saat ini, semua titik memiliki tampilan yang sama (ukuran, warna, bentuk, dan alpha). Terkadang kita ingin membuat tampilan poin bergantung pada variabel dalam dataset. Sekarang kita akan membuat variabel ukuran. Kami juga akan mengubah bentuk poin. Meskipun kami tidak dapat meniupnya, gambar yang dihasilkan harus mengingatkan Anda pada dandelion.

# Copy the code from Task 5 and modify the
# color, size, and shape of the points
p <- ggplot(df, aes(x*t, y*t))
p + geom_point(aes(size = t, alpha = 0.5), shape = 8) +
theme(panel.background = element_rect(fill=”white”),
panel.grid=element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
legend.position=”none”)

Output

7. Gabungkan semuanya: bunga matahari
Tanaman tidak hanya menggunakan Golden Angle untuk menyusun daun. Golden Angle juga ditemukan pada susunan biji bunga matahari. kita hanya perlu menggabungkan beberapa hal yang sudah kita ketahui.

# Copy the code from Task 6 and modify the color and
# shape of the points, and the background color
p <- ggplot(df, aes(x*t, y*t))
p + geom_point(aes(size = t, alpha = 0.5), shape = 17, color = “yellow”) +
theme(panel.background = element_rect(fill=”darkmagenta”),
panel.grid=element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
legend.position=”none”)

Output

8. Bagaimana jika Anda mengubah sudutnya?
Pola ini sangat sensitif terhadap sudut antar titik yang membentuk spiral. Perubahan kecil pada sudut dapat menghasilkan gambar yang sangat berbeda. Mari kita lihat contohnya.

# Change the value of the angle
angle <- 2
points <- 1000

t <- (1:points)*angle
x <- sin(t)
y <- cos(t)
df <- data.frame(t, x, y)

# Copy the plotting code from Task 7
# …. YOUR CODE FOR TASK 8 ….

p <- ggplot(df, aes(x*t, y*t))
p + geom_point(aes(size = t, alpha = 0.5), shape = 17, color = “yellow”) +
theme(panel.background = element_rect(fill=”darkmagenta”),
panel.grid=element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
legend.position=”none”)

Output

9. Semua bersama sekarang: bunga imajiner

Teknik yang telah di gunakan sejauh ini memungkinkan untuk membuat pola dalam jumlah tak terbatas yang terinspirasi oleh alam: satu-satunya batasan adalah imajinasi Tetapi membuat karya seni juga menjadi alasan yang menyenangkan untuk belajar menggunakan ggplot2. Semua trik yang telah kita lihat di notebook ini berguna saat memplot data nyata juga.

Gambar di atas adalah variasi sederhana dari bunga sebelumnya dan pada dasarnya sangat mirip dengan gambar pertama di mana kami memplot 50 titik dalam sebuah lingkaran. Saya harap Anda menikmati perjalanan antara lingkaran sederhana itu dan bunga yang indah ini.

Output

--

--