Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import seaborn as sns | |
import matplotlib.pyplot as plt | |
st.title('护士排班 NRP problem') | |
st.subheader('请输入您的护士编号,即可获得您本周的排班表') | |
res = st.number_input('',0,100) #用于显示数字输入小部件 | |
if res: | |
res = int(res) | |
df = pd.read_excel('result.xlsx') | |
key1 = df['a'].to_list() | |
key = [eval(k) for k in key1] | |
value = df['b'].to_list() | |
dic = dict(zip(key,value)) | |
J = list(range(7)) # 星期几 1 2 3 4 5 6 7 | |
I = list(range(6)) # 班次 {1:6-10,2:10-14,3:14-18,4:18-22,5:22-2,6:2-6} | |
nurse = [[0 for col in J] for row in I] | |
for k,v in dic.items(): | |
if k[2] == res: | |
nurse[k[0]][k[1]] += v | |
week = ['Mon','Tus','Wed','Ths','Fri','Sat','Sun'] | |
table = pd.DataFrame(nurse, columns= week) #将字典转换成为数据框 | |
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'] | |
print(f'nurse{res}\'s table') | |
plt.rcParams.update({"font.size":15})#此处必须添加此句代码方可改变标题字体大小 | |
plt.figure(figsize=(12,8)) | |
ax = sns.heatmap(table,linewidths=0.05,linecolor='black', cmap="YlGnBu") | |
ax.xaxis.tick_top() | |
ax.tick_params(axis='both', which='both', length=0) # 删除横纵坐标轴上的刻度线 | |
plt.yticks( rotation=0) | |
plt.savefig(f'timetable_{res}.png',dpi=600) | |
st.caption('请查收您的排班表') #用于写字幕 | |
st.image(f'timetable_{res}.png') #用于显示图像 | |
with open(f"timetable_{res}.png", "rb") as file: | |
btn = st.download_button( | |
label="下载排班表", | |
data=file, | |
file_name="timetable.png", | |
) | |