Plotly adalah sebuah library Python yang digunakan untuk membuat grafik interaktif. Dalam artikel ini, kita akan membahas cara menggunakan Plotly untuk membuat grafik scatter.
Dalam contoh di atas, kita akan membuat grafik scatter yang terdiri dari 100000 titik dengan koordinat acak. Kita akan menggunakan library Numpy untuk mengenerate data acak dan Plotly untuk membuat grafik.
Membuat Grafik Scatter
Untuk membuat grafik scatter, kita dapat menggunakan fungsi go.Scattergl
dari Plotly. Fungsi ini memiliki beberapa argumen, termasuk:
x
: koordinat x dari titik-titik yang akan digraph.y
: koordinat y dari titik-titik yang akan digraph.mode
: mode grafik, dalam hal ini kita menggunakan mode "markers" untuk membuat grafik scatter.marker
: argumen ini memiliki beberapa sub-argumen, termasuk:
color
: warna titik-titik yang akan digraph.colorscalet
: skalarnya warna yang akan digunakan.
Berikut adalah kode lengkapnya:
import plotly.graph_objects as go
import numpy as np
N = 100000
r = np.random.uniform(0, 1, N)
theta = np.random.uniform(0, 2*np.pi, N)
fig = go.Figure(data=go.Scattergl(
x=r * np.cos(theta),
y=r * np.sin(theta),
mode='markers',
marker=dict(
color=np.random.randn(N),
colorscale='Viridis',
line_width=1
)
))
fig.show()
Kode di atas akan mengenerate 100000 titik dengan koordinat acak dan membuat grafik scatter yang terdiri dari titik-titik tersebut. Grafik ini dapat dilihat menggunakan fungsi fig.show()
.
Menggunakan Dash untuk Membuat Aplikasi Interaktif
Plotly juga dapat digunakan dalam aplikasi interaktif dengan menggunakan library Dash. Dash adalah sebuah framework Python yang digunakan untuk membuat aplikasi web interaktif. Berikut adalah contoh cara menggunakan Plotly dan Dash untuk membuat aplikasi interaktif:
import plotly.graph_objects as go # or plotly.express as px
fig = go.Figure() # or any Plotly Express function e.g. px.bar(...)
# fig.add_trace( ... )
# fig.update_layout( ... )
from dash import Dash, dcc, html
app = Dash()
app.layout = html.Div([
dcc.Graph(figure=fig)
])
app.run_server(debug=True, use_reloader=False) # Turn off reloader if inside Jupyter
Kode di atas akan membuat aplikasi web interaktif yang terdiri dari grafik scatter. Aplikasi ini dapat diakses menggunakan browser dan memungkinkan pengguna untuk melakukan interaksi dengan grafik.
Menganimasikan Grafik Scatter
Plotly juga dapat digunakan untuk menganimasikan grafik. Berikut adalah contoh cara menganimasikan grafik scatter:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D, proj3d
import matplotlib.animation as animation
N_points = 10
def update(num, my_ax):
# the following corresponds to whatever logic must append in your code
# to get the new coordinates of your points
# in this case, we're going to move each point by a quantity (dx,dy,dz)
dx, dy, dz = np.random.normal(size=(3,N_points), loc=0, scale=1)
debug_text.set_text("{:d}".format(num)) # for debugging
x,y,z = graph._offsets3d
new_x, new_y, new_z = (x+dx, y+dy, z+dz)
graph._offsets3d = (new_x, new_y, new_z)
for t, new_x_i, new_y_i, new_z_i in zip(annots, new_x, new_y, new_z):
# animating Text in 3D proved to be tricky. Tip of the hat to @ImportanceOfBeingErnest
# for this answer https://stackoverflow.com/a/51579878/1356000
x_, y_, _ = proj3d.proj_transform(new_x_i, new_y_i, new_z_i, my_ax.get_proj())
t.set_position((x_,y_))
return [graph,debug_text]+annots
# generate initial data
N_points = 10
points = [(np.random.uniform(0,1), np.random.uniform(0,1)) for _ in range(N_points)]
x,y,z = zip(*[point + (i*0.05) for point in points for i in range(100)])
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
graph, = ax.plot(x, y, z)
annots = [ax.text2D(x[i],y[i],"{}".format(i)) for i in range(N_points)]
ani = animation.FuncAnimation(fig, update, frames=100, fargs=(ax,), blit=True)
plt.show()
Kode di atas akan menganimasikan grafik scatter yang terdiri dari 10 titik dengan koordinat acak. Grafik ini dapat dilihat menggunakan fungsi plt.show()
.
Dalam artikel ini, kita telah membahas cara menggunakan Plotly untuk membuat grafik scatter dan menganimasikannya. Plotly adalah sebuah library Python yang sangat powerful dan digunakan dalam banyak aplikasi.