ก่อนหน้านี้การสร้าง Web Data Visulization อาจต้องความรู้ด้าน computer programming language มากกว่า 1 ภาษา แต่ปัจจุบันเปลี่ยนไป มี platform เกิดขึ้นหลาย platform ส่งผลให้การทำงานง่ายขึ้น หนึ่งใน platform เหล่านั้นคือ Dash[1]
Dash เป็น dual license (ในข้อเขียนจะใช้ opensource license) เขียนด้วย Python (ปัจจุบันรองรับ R และ Julia) ใช้หลักการของ declarative programming [2] คือผู้พัฒนางานบอกให้ระบบทราบว่าต้องการอะไรบ้าง ลำดับการเสนอผลลัพธ์เป็นอย่างไร โดยไม่ต้องบอกรายละเอียด การคำนวณต่างๆ ระบบจะเป็นผู้กระทำเอง หลักการนี้ช่วยให้ผู้พัฒนาไม่จำเป็นต้องเรียนรู้การใช้ภาษาคอมพิวเตอร์มากเกินไป ยกตัวอย่างกรณีการใช้งาน Dash ใช้ภาษา Python ภาษาเดียว ไม่จำเป็นต้องใช้ javascript , CSS, HTML (จำเป็นต้องมีความรู้บ้างเพื่อให้เข้าใจโครงสร้างของงาน)
องค์ประกอบหลักในการทำงานของ Dash มี 3 ส่วนคือ
- Flask ทำหน้าที่ของ web server [3]
- Plottly เป็น interactive graphing python และ javascript library [4]
- ReactJs เป็น front end javascript library สำหรับงาน user interface [5]
การติดตั้ง
Hardware :
Raspberry Pi 3 model B ระบบปฎิบัติการ Raspbian buster (debian 10)
สร้าง Virtual environment (venv):
การสร้าง virtual environment อาจไม่จำเป็น แต่หากต้องการให้ระบบนี้แยกออกเป็นอิสระเพื่อจัดการเรื่อง package ง่ายก็ควรจะทำ กรณีที่ไม่ต้องการสร้าง venv ข้ามไปขั้นตอนต่อไปเลย
$ mkdir dash_proj
$ python3 -m vevn dash_proj
$ cd dash_proj
$ source bin/activation
หมายเหตุ หากไม่สามารถใช้คำสั่ง venv ได้ ต้องทำการติดตั้งก่อน ด้วยคำสั่ง sudo pip3 install virtualenv
Install packages:
(dash_proj) $ python -m pip install dash pandas
เนื่องจากกรอบของงานในคราวนี้คือการสร้าง data visualization ซึ่งต้องอาศัย data analysis package และในที่นี้เลือกใช้ pandas [6]
Dash application structure
Packages
ในการสร้าง application เรามักใช้ packages หลัก 3 packages คือ
- Dash
- เป็น back bone ของ application
- Dash Core Components
- บรรจุ interactive component เช่น drop down list, date selector ฯล
- Dash HTML Component
- บรรจุ component ดูแลการใช้ HTML tag เช่น div, h1 ฯล
นอกจากนี้จะเป็น package ที่ผู้พัฒนาต้องพิจารณาเองว่าจะใช้อะไรเพิ่ม
Code structure
โครงสร้างโดยทั่วไปแบ่งได้เป็น 5 ส่วนดังนี้
Part | Python code |
---|---|
1.Libraries |
|
2. Initiation |
|
3. Layout ออกแบบหน้าตาของ application |
|
4. Callback |
|
5. Running |
|
Hello World App
Application แรกนี้ใช้โครงสร้างแบบที่กล่าวมาข้างต้นยกเว้นในส่วน callback functions
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash(__name__)
app.layout = html.Div(children=[
html.H1(children='Hello World')
])
if __name__ == '__main__':
app.run_server('0.0.0.0',debug=True)
เขียน Code ตามตัวอย่าง บันทึกไว้ในไฟล์ชื่อ hello_world.py (เปลี่ยนได้) แล้วทดลองใช้งานด้วยคำสั่ง
(dash_proj) $ python hello_world.py
บนหน้าจอจะปรากฏดังรูปที่ 2
เนื้อหาในตอนนี้ได้แนะนำให้รู้จักกับ Dash ในภาพรวม องค์ประกอบพื้นฐาน โครงสร้างหลักในการสร้าง Dash application การใช้งานในลักษณะของ web application เบื้องต้น การใช้งานที่มากกว่าจะได้กล่าวถึงในตอนต่อๆ ไป
อ้างอิง
[5] https://reactjs.org/
Sign up here with your email
ConversionConversion EmoticonEmoticon