แดชบอร์ดยอดขายที่สมบูรณ์แบบ
บริษัท e-commerce จากบทที่ 1 ติดต่อมาพร้อมงบประมาณสำหรับต่อยอดงานที่คุณทำไว้ นั่นคือแดชบอร์ดยอดขายเบื้องต้น
เมื่อฝึกทักษะการจัดสไตล์และการจัดวางมาแล้ว ตอนนี้คุณสามารถพัฒนาแดชบอร์ดนี้ให้พร้อมนำเสนอได้เลย
บริษัทต้องการกราฟเส้นแสดงยอดขายรายเดือน กราฟแท่งแสดงยอดขายแต่ละประเทศ และสถิติสรุประดับสูงเกี่ยวกับปริมาณออเดอร์สูงสุดในช่วงเวลานั้น โดยต้องการให้วางองค์ประกอบเหล่านี้เรียงกันในแนวนอน และใช้พื้นหลังสีฟ้าอ่อนตามสไตล์ของบริษัท นอกจากนี้ยังขอให้มีโลโก้สองอัน วางอยู่สองข้างของหัวข้อหลัก เพื่อให้แบรนด์โดดเด่น
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างแดชบอร์ดด้วย Dash และ Plotly
คำแนะนำการฝึกหัด
- เพิ่มโลโก้ด้านซ้ายไว้ข้างๆ H1 โดยกำหนด margin
25pxใต้บรรทัดที่ 17 - เพิ่มโลโก้ด้านขวาไว้ข้างๆ H1 โดยกำหนด margin
25pxใต้บรรทัดที่ 22 - กำหนดความกว้างกราฟเส้นเป็น
500pxวางเรียงแถวกันโดยกำหนด margin5pxใต้บรรทัดที่ 25 - กำหนดความกว้างกราฟแท่งเป็น
350pxวางเรียงแถวกันโดยกำหนด margin5pxใต้บรรทัดที่ 28
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
from dash import Dash, dcc, html
import plotly.express as px
import pandas as pd
logo_link = 'https://assets.datacamp.com/production/repositories/5893/datasets/fdbe0accd2581a0c505dab4b29ebb66cf72a1803/e-comlogo.png'
ecom_sales = pd.read_csv('/usr/local/share/datasets/ecom_sales.csv')
ecom_line = ecom_sales.groupby('Year-Month')['OrderValue'].agg('sum').reset_index(name='TotalSales')
line_fig = px.line(data_frame=ecom_line, x='Year-Month', y='TotalSales',title='Total Sales by Month')
line_fig.update_layout({'paper_bgcolor':'rgb(224, 255, 252)' })
ecom_bar = ecom_sales.groupby('Country')['OrderValue'].agg('sum').reset_index(name='TotalSales')
bar_fig = px.bar(data_frame=ecom_bar, x='TotalSales', y='Country', orientation='h',title='Total Sales by Country')
bar_fig.update_layout({'yaxis':{'dtick':1, 'categoryorder':'total ascending'}, 'paper_bgcolor':'rgb(224, 255, 252)'})
app = Dash()
app.layout = [
html.Img(src=logo_link,
# Add the left-side logo next to the H1 with 25px margin
style={'display':'____', 'margin':'____'}),
html.H1(children=['Sales Figures'],
style={'display':'inline-block'}),
html.Img(src=logo_link,
# Add the right-side logo next to the H1 with 25px margin
style={'display':'____', 'margin':'____'}),
dcc.Graph(figure=line_fig,
# Set line graph to 500px wide, side-by-side with 5px margin
style={'width':'____', 'display':'____', 'margin':'____'}),
dcc.Graph(figure=bar_fig,
# Set bar graph to 350px wide, side-by-side with 5px margin
style={'width':'____', 'display':'____', 'margin':'____'}),
html.H3(f'The largest order quantity was {ecom_sales.Quantity.max()}')
]
if __name__ == '__main__':
app.run(debug=True)