Membuat Grafik Scatter dengan Pandas dan Matplotlib

Membuat Grafik Scatter dengan Pandas dan Matplotlib

Pada artikel ini, kita akan membahas cara membuat grafik scatter yang menunjukkan hubungan antara harga rumah dan koordinat geografis menggunakan colormap. Kita juga akan mengatasi beberapa masalah yang muncul saat membuat grafik.

Contoh Kasus

Kita memiliki sebuah data frame df yang berisi informasi tentang lokasi dan harga rumah. Data frame ini telah di-filter untuk hanya menampilkan nilai harga yang lebih dari 150. Kita ingin membuat grafik scatter yang menunjukkan koordinat geografis (longitude dan latitude) sebagai titik, serta menggunakan harga rumah sebagai ukuran dan warna pada plot.

Kode

Berikut adalah kode yang kita gunakan:

import pandas as pd
import matplotlib.pyplot as plt

# Filter data frame untuk hanya menampilkan nilai harga lebih dari 150
df2 = df[['longitude', 'latitude', 'price']]
df_Scatter = df2[df2['price']>150]

# Membuat grafik scatter dengan menggunakan longitude dan latitude sebagai koordinat, serta harga rumah sebagai ukuran dan warna
plt.scatter(df_Scatter.longitude, df_Scatter.latitude, c=df_Scatter.price, s=df_Scatter.price)
plt.show()

Namun, kode di atas tidak berfungsi karena df_Scatter.price adalah tipe integer yang tidak dapat digunakan sebagai ukuran dan warna pada plot. Kita perlu mengkonversi tipe data menjadi float.

Mengatasi Error

Kita juga memiliki error lain yang muncul saat membuat grafik scatter:

AttributeError: 'int' object has no attribute 'sqrt'
TypeError: loop of ufunc does not support argument 0 of type int which has no callable sqrt method

Error ini terjadi karena kita mencoba menggunakan fungsi np.sqrt pada tipe data integer. Kita perlu mengkonversi tipe data menjadi float sebelum menggunakan fungsi tersebut.

Menggunakan Basemap untuk Membuat Grafik Scatter dengan Colormap

Berikut adalah contoh lain yang memanfaatkan library Basemap untuk membuat grafik scatter dengan colormap:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

# Membuat data frame dari latitude dan longitude
lats = df['latitude'].values
lons = df['longitude'].values

# Membuat objek Basemap
m = Basemap(projection='merc', llcrnrlat=40, urcrnrlat=50,
 llcrnrlon=-100, urcrnrlon=-60, resolution='i')

# Konversi data latitude dan longitude ke koordinat proyektor
x, y = m(lons, lats)

# Membuat colormap
cm = plt.cm.get_cmap('coolwarm')

# Membuat grafik scatter dengan menggunakan longitude dan latitude sebagai koordinat, serta harga rumah sebagai ukuran dan warna
plot = m.scatter(x, y, 'o', c=df['price'], cmap=cm)

# Menambahkan legenda pada plot
plt.colorbar(plot)
plt.title("House Price with Geographic Coordinate")
plt.show()

Dalam contoh di atas, kita menggunakan library Basemap untuk membuat objek proyektor yang dapat digunakan untuk membuat grafik scatter dengan colormap. Kita juga mengkonversi tipe data integer menjadi float sebelum menggunakan fungsi np.sqrt.

Solusi

Untuk mengatasi error yang muncul saat membuat grafik scatter, kita perlu mengkonversi tipe data integer menjadi float sebelum menggunakan fungsi np.sqrt. Kita juga perlu memilih tipe data yang sesuai untuk ukuran dan warna pada plot.

Dalam contoh di atas, kita telah menyelesaikan beberapa masalah yang muncul saat membuat grafik scatter dengan colormap. Kita dapat menggunakan library Basemap untuk membuat grafik scatter yang lebih rumit dan memanfaatkan colormap untuk menggambarkan hubungan antara harga rumah dan koordinat geografis.