Plotly adalah sebuah library Python yang dapat digunakan untuk membuat plot grafik yang sangat beragam. Salah satu contoh penggunaannya adalah membuat scatter plots 3D.
Menggunakan Plotly, Anda dapat membuat plot 3D yang memvisualisasikan data sepatu iris yang terdiri atas panjang, lebar, dan tinggi bunga. Berikut adalah kode Python untuk membuat plot 3D tersebut:
import plotly.express as px
df = px.data.iris()
fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
color='petal_length', size='petal_length', size_max=18,
symbol='species', opacity=0.7)
# tight layout
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.show()
Kode di atas menggunakan fungsi px.scatter_3d()
untuk membuat plot 3D. Fungsi ini memerlukan beberapa argumen, yaitu:
df
: dataset yang akan digunakan untuk membuat plotx
,y
, danz
: nama kolom yang akan digunakan sebagai sumbu-x, y, dan zcolor
: nama kolom yang akan digunakan untuk warna plotsize
: nama kolom yang akan digunakan untuk ukuran markersymbol
: nama kolom yang akan digunakan untuk simbol marker
Setelah membuat plot 3D, Anda dapat memvisualisasikannya menggunakan fungsi fig.show()
.
Membuat Plot 3D dengan Warna dan Simbol Marker
Plotly juga dapat digunakan untuk membuat plot 3D dengan warna dan simbol marker. Berikut adalah contoh kode Python untuk membuat plot 3D seperti itu:
import plotly.graph_objects as go
import numpy as np
# Helix equation
t = np.linspace(0, 20, 100)
x, y, z = np.cos(t), np.sin(t), t
fig = go.Figure(data=[go.Scatter3d(
x=x,
y=y,
z=z,
mode='markers',
marker=dict(
size=12,
color=z, # set color to an array/list of desired values
colorscale='Viridis', # choose a colorscale
opacity=0.8
)
)])
# tight layout
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.show()
Kode di atas menggunakan fungsi go.Figure()
untuk membuat plot 3D. Fungsi ini memerlukan beberapa argumen, yaitu:
data
: array/list of data yang akan digunakan untuk membuat plotx
,y
, danz
: nama kolom yang akan digunakan sebagai sumbu-x, y, dan zmode
: mode plot yang akan digunakan (dalam kasus ini,markers
)
Dalam fungsi marker
, Anda dapat mengatur ukuran marker, warna, dan opacity. Pada contoh di atas, warna marker dipengaruhi oleh nilai z
.
Membuat Plot 3D dengan Garis
Plotly juga dapat digunakan untuk membuat plot 3D dengan garis. Berikut adalah contoh kode Python untuk membuat plot 3D seperti itu:
import plotly.graph_objs as go
import numpy as np
# Helix equation
t = np.linspace(0, 20, 100)
x, y, z = np.cos(t), np.sin(t), t
fig = go.Figure(data=[go.Scatter3d(
x=x,
y=y,
z=z,
mode='lines',
line=dict(width=2)
)])
# tight layout
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.show()
Kode di atas menggunakan fungsi go.Figure()
untuk membuat plot 3D. Fungsi ini memerlukan beberapa argumen, yaitu:
data
: array/list of data yang akan digunakan untuk membuat plotx
,y
, danz
: nama kolom yang akan digunakan sebagai sumbu-x, y, dan zmode
: mode plot yang akan digunakan (dalam kasus ini,lines
)
Dalam fungsi line
, Anda dapat mengatur lebar garis.
Membuat Plot 3D dengan Dash
Plotly juga dapat digunakan untuk membuat aplikasi analitis dengan menggunakan Dash. Berikut adalah contoh kode Python untuk membuat plot 3D dengan Dash:
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.express as px
app = dash.Dash(__name__)
df = px.data.iris()
fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
color='petal_length', size='petal_length', size_max=18,
symbol='species', opacity=0.7)
app.layout = html.Div([
dcc.Graph(id='graph')
])
@app.callback(Output('graph', 'figure'), [Input('graph', 'id')])
def update_graph():
return fig
if __name__ == '__main__':
app.run_server(debug=True)
Kode di atas menggunakan Dash untuk membuat aplikasi analitis yang memvisualisasikan plot 3D. Fungsi app.layout
digunakan untuk mendefinisikan struktur aplikasi, sedangkan fungsi update_graph()
digunakan untuk mengupdate plot 3D.
Menggunakan Plotly dan Dash, Anda dapat membuat plot 3D yang sangat beragam dan interaktif.