aimaswx commited on
Commit
cdf8e54
1 Parent(s): 1cd86c5
Files changed (1) hide show
  1. app.py +54 -0
app.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import seaborn as sns
4
+ import matplotlib.pyplot as plt
5
+
6
+ st.title('护士排班 NRP problem')
7
+
8
+ st.subheader('请输入您的护士编号,即可获得您本周的排班表')
9
+
10
+ res = st.number_input('',0,100) #用于显示数字输入小部件
11
+
12
+ if res:
13
+ res = int(res)
14
+ df = pd.read_excel('result.xlsx')
15
+
16
+ key1 = df['a'].to_list()
17
+ key = [eval(k) for k in key1]
18
+ value = df['b'].to_list()
19
+
20
+ dic = dict(zip(key,value))
21
+
22
+ J = list(range(7)) # 星期几 1 2 3 4 5 6 7
23
+ I = list(range(6)) # 班次 {1:6-10,2:10-14,3:14-18,4:18-22,5:22-2,6:2-6}
24
+ nurse = [[0 for col in J] for row in I]
25
+ for k,v in dic.items():
26
+ if k[2] == res:
27
+ nurse[k[0]][k[1]] += v
28
+
29
+ week = ['Mon','Tus','Wed','Ths','Fri','Sat','Sun']
30
+
31
+ table = pd.DataFrame(nurse, columns= week) #将字典转换成为数据框
32
+ table.index = ['2:00-6:00','6:00-10:00','10:00-14:00','14:00-18:00','18:00-22:00','22:00-2:00']
33
+
34
+ print(f'nurse{res}\'s table')
35
+
36
+ plt.rcParams.update({"font.size":15})#此处必须添加此句代码方可改变标题字体大小
37
+
38
+ plt.figure(figsize=(12,8))
39
+ ax = sns.heatmap(table,linewidths=0.05,linecolor='black', cmap="YlGnBu")
40
+ ax.xaxis.tick_top()
41
+ ax.tick_params(axis='both', which='both', length=0) # 删除横纵坐标轴上的刻度线
42
+
43
+ plt.yticks( rotation=0)
44
+ plt.savefig(f'timetable_{res}.png',dpi=600)
45
+
46
+ st.caption('请查收您的排班表') #用于写字幕
47
+ st.image(f'timetable_{res}.png') #用于显示图像
48
+
49
+ with open("timetable.png", "rb") as file:
50
+ btn = st.download_button(
51
+ label="下载排班表",
52
+ data=file,
53
+ file_name="timetable.png",
54
+ )