Hướng dẫn dùng plotly r python

Nhân dịp những ngày cuối năm Kỷ Hợi mình xin cảm ơn mọi người đã đọc bài viblo của mình trong một năm vừa qua. Và mình xin kính chúc tất cả mọi người một năm mới " Vạn Sự Như Ý, An Khang Thịnh Vượng".

Nội dung chính

  • Seaborn and Plotly
  • Plotly Library
  • Những kiểu đồ thị mà chúng ta có thể vẽ với Plotly là gì?
  • Install and Import Plotly
  • Distribution Plots
  • Kết Luận

Tiếp tục với bài viết thôi nào =]]. Ở bài viết lần này mình sẽ chia sẻ về việc Visualization trong data như thế nào. Tuy nhiên ở bài viết này mình sẽ sử dụng plotly thay vì matplotlib hay seaborn. Thứ nhất bởi vì mình cảm thấy nó khá là thú vị :v những cái gì mà càng trực quan thì càng làm cho chúng ta thích thú hơn mà =]]. Tiếp theo là lợi ích của nó:

  • Nhanh
  • Dễ sử dụng
  • sự kết hợp tốt với pandas

Okay bây giờ chúng ta cùng bắt đầu nhé! Ở đây mình sử dụng tập dataset Titanic ở đây nha mn. Mình sẽ so sánh giữa seaborn với plotly nha. Còn ở phần practise mình sẽ thực hiện code để so sánh Plotly với Matplotlib and Seaborn.

Seaborn and Plotly

Seaborn

Seaborn là thư viện thú vị và có nhiều mẫu biểu đồ hơn, cú pháp câu lệnh cũng dễ sử dụng. Seaborn được rất nhiều người sử dụng và yêu thích.

Hình 1: Ví dụ histogram: distribution for Fare [Titanic Dataset] in Seaborn

Thư viện seaborn cũng cung cấp nhiều biểu đồ đa dạng:

Hình 2: Những biểu đồ bạn có thể sử dụng với thư viện seaborn

Tuy nhiên, vẫn có một vài hạn chế đó là tất cả đồ thị, biểu đồ của seaborn đều là static [tĩnh]. Nó chỉ chỉ ra cho chúng ta thấy những gì được show ra trên màn hình và không thể xem chi tiết từng ô trong biểu đồ hoặc giá trị tại 1 khoảng thời gian nào đó. Hơn nữa cũng không thể di chuột hay click để hiển thị thông tin chi tiết.

Plotly có thể đáp ứng được hạn chế của seaborn. Chúng ta cùng tìm hiểu xem plotly hữu ích như thế nào nhé!

Plotly

Plotly có khả năng thực hiện những functions "Interactive Visualization". "Interactive Visualization" có thể giúp tăng thêm cảm giác thu hút =]] cũng như việc bạn có thể trình bày dữ liệu một cách trực quan hơn nữa đối với người nghe. Hình 3 dưới đây cũng là distribution cho Fare trong tập dataset Titanic cùng xem và so sánh nhé

Hình 5: Dữ liệu tập train titanic dataset

Pie chart

Mình sẽ vẽ Survived column với Plotly và matplotlib nhé

Plotly:

#labels
lab = df["Survived"].value_counts[].keys[].tolist[]
#values
val = df["Survived"].value_counts[].values.tolist[]
trace = go.Pie[labels=lab, 
                values=val, 
                marker=dict[colors=['red']], 
                # Seting values to 
                hoverinfo="value"
              ]
data = [trace]

layout: bạn có thể plot title, x và y axis titles hoặc show legends

#set title 
layout = go.Layout[title="Survived Distribution"]

figure: khi bạn muốn show trên đồ thị, nó lấy thông số data và layout đã được định nghĩa

fig = go.Figure[data = data,layout = layout]

Tiếp theo là dùng iplot để show ra thôi:

iplot[fig]

Hình 7: plot pie chart by matplotlib

histogram

plotly:

# defining data
trace = go.Histogram[x=df['Age'],nbinsx=40,histnorm='percent']
data = [trace]
# defining layout
layout = go.Layout[title="Age Distribution"]
# defining figure and plotting
fig = go.Figure[data = data,layout = layout]
iplot[fig]

Hình 9: plot histogram by matplotlib

Scatter

Plotly:

#defining data
trace = go.Scatter[x = df['Age'],y=df['Fare'],text = df['Survived'],mode='markers']
data=[trace]
#defining layout
layout = go.Layout[title='Fare Vs Age Scatter Plot',xaxis=dict[title='Age'],yaxis=dict[title='Fare'],hovermode='closest']
#defining figure and plotting
figure = go.Figure[data=data,layout=layout]
iplot[figure]

Hình 11: Scatter by Seaborn

Bar Chart

Plotly: Mỗi Pclass chúng ta sẽ show ra average age và fare bằng Bar Chart.

y=[]
fare = []
for i in list[df['Pclass'].unique[]]:
    result = df[df['Pclass']==i]['Age'].mean[]
    fares = df[df['Pclass']==i]['Fare'].mean[]
    y.append[result]
    fare.append[fares]
#defining data
trace = go.Bar[x = list[df['Pclass'].unique[]],y=y,marker=dict[color=fare,colorscale='Viridis',showscale=True],text = fare]
data=[trace]
#defining layout
layout = go.Layout[title='Age/Fare vs Pclass Bar Chart',xaxis=dict[title='Pclass'],yaxis=dict[title='Age'],hovermode='closest']
#defining figure and plotting
figure = go.Figure[data=data,layout=layout]
iplot[figure]

Hình 13: Bar Chart by Seaborn

Distribution Plots

Lưu ý với đồ thị distribution các giá trị của data phải khác "NAN" nếu không thì phải khắc phục bằng cách fillna[] nhé!!!! Plotly:

#defining data
a = df[df['Pclass']==1]['Fare']
b = df[df['Pclass']==2]['Fare']![][//images.viblo.asia/e1c99ce8-cd1e-4e0a-a6f4-793b478daf68.gif]

c = df[df['Pclass']==3]['Fare']
hist_data=[a,b,c]
group_labels=['1','2','3']
#defining fig and plotting
fig = ff.create_distplot[hist_data,group_labels,bin_size=
[1,1,1],show_curve=False]
fig.update_layout[title_text='Distribution for Fares']
iplot[fig]

Hình 15: Distribution by Matplotlib

Kết Luận

Visualize data bằng Plotly trông "cool" hơn đúng không ạ? Thực ra mọi người muốn visualize data bằng library hay tool nào cũng được hết. Quan trọng nhất vẫn là bạn sẽ thu được gì sau khi trực quan hóa dữ liệu thôi đúng không nào. Tuy nhiên mình cảm thấy Plotly khá là hữu ích bởi những tính năng của nó cũng như việc sẽ thu hút người nghe hơn. Nhìn vào những hình ảnh động cảm giác vẫn hấp dẫn hơn là ảnh tĩnh phải không nào =]]]. Cảm ơn mn đã dành thời gian để đọc bài của mình. Mong được sự góp ý của mn dành cho bài viết của mình ạ.

Reference

//towardsdatascience.com/python-for-data-science-a-guide-to-data-visualization-with-plotly-969a59997d0c

//www.kaggle.com/c/titanic/data

Chủ Đề