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.