Mes coordonnées sont Shenzhen Depuis 2022, la plupart du temps il faut 24 heures, quelques fois il faut 48 heures, et encore moins souvent il faut 72 heures. Il n'y a plus de situation.
Cet article est transformé en un calendrier basé sur mes enregistrements de tests d'acide nucléique, et les enregistrements de tests d'acide nucléique sont visualisés dans le calendrier.
La première plage horaire pouvant être trouvée pour les enregistrements de tests d'acide nucléique est d'un mois. Les enregistrements de tests précédents n'ont pas été enregistrés à l'avance, le calendrier a donc été créé en utilisant d'abord les données d'août.
Interrogez les dossiers d'inspection du mois d'août et saisissez-les dans le code.
# coding=utf-8 from datetime import datetime # 核酸检测数据,1表示当天做了核酸,0表示当天未做核酸 my_nucleic = { 'date': [datetime.strftime(datetime(2022, 8, i+1), '%Y-%m-%d') for i in range(31)], 'nucleic': [1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }
Si l'acide nucléique a été effectué le même jour, il est représenté par 1 ; si l'acide nucléique n'a pas été effectué ce jour-là, il est représenté par 0.
La date d'août est générée à l'aide de la bibliothèque standard Python datetime.
Cet article utilise la bibliothèque Python openpyxl pour générer un calendrier dans un tableau Excel.
import openpyxl # 创建一个workbook对象,而且会在workbook中至少创建一个表worksheet wb = openpyxl.Workbook() # 获取当前活跃的worksheet,默认就是第一个worksheet ws = wb.active
openpyxl est une bibliothèque en Python pour lire et écrire des fichiers Excel. Vous pouvez l'utiliser après l'installation de pip install openpyxl.
from openpyxl.styles import PatternFill, Font, Alignment, Border, Side def init_sheet(ws): for r in range(100): for c in range(100): ws.cell(row=r+1, column=c+1).fill = PatternFill('solid', fgColor='000000') def set_cell_style(ws, r, c, color): ws.cell(row=r, column=c).fill = PatternFill('solid', fgColor=color) ws.cell(row=r, column=c).font = Font(name="微软雅黑", size=14, bold=True) ws.cell(row=r, column=c).alignment = Alignment(horizontal='right', vertical='center') side = Side(style="medium", color="004B3C") ws.cell(row=r, column=c).border = Border(top=side, bottom=side, left=side, right=side)
Définissez une fonction qui remplit la couleur du tableau avec du blanc, initialise le tableau, définit l'arrière-plan sur un blanc pur et le calendrier est plus beau.
Définissez une fonction pour traiter le format de cellule, puis appelez directement la fonction pour formater la cellule pour une réutilisation facile.
import calendar # 将表格填充成白色 init_sheet(ws) # 设置年月单元格的边框 side = Side(style="medium", color="004B3C") for col in range(7): ws.cell(row=1, column=col+1).border = Border(top=side, bottom=side, left=side, right=side) # 合并年月单元格 ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=7) # 写入内容和设置格式 ws.cell(row=1, column=1).value = '2022年8月' set_cell_style(ws, r=1, c=1, color='418CFA') # 写入星期一至星期日,并设置格式 title_data = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'] for col in range(7): ws.cell(row=2, column=col+1).value = title_data[col] set_cell_style(ws, r=2, c=col+1, color='418CFA') # 获取一个月的天数和第一天是星期几 monthday = calendar.monthrange(2022, 8) # 设置日历的日期 col, row = monthday[0], 3 for i in range(len(my_nucleic['date'])): if col < 7: ws.cell(row=row, column=col + 1).value = i+1 col += 1 else: col = 0 row += 1 ws.cell(row=row, column=col + 1).value = i+1 col += 1 # 设置单元格格式 set_cell_style(ws, r=row, c=col, color='000000') # 根据核酸结果填充颜色 if my_nucleic['nucleic'][i] == 1: ws.cell(row=row, column=col).fill = PatternFill('solid', fgColor='009B3C') # 设置行高 for i in range(1, row+1): ws.row_dimensions[i].height = 30 # 保存表格 wb.save(filename='show_august_nucleic.xlsx') wb.close()
Effet calendrier :
Comme vous pouvez le constater, je n'ai eu que 4 jours sans acide nucléique en août, et la plupart du temps je l'ai gardé 24 heures.
Introduction à l'implémentation du code :
Après avoir créé un calendrier d'un mois, continuez à développer et créez un calendrier d'un an. Jetons d'abord un coup d'œil à l'effet :
. Introduction à la méthode de mise en œuvre :
Une autre méthode d'affichage par année :
from pyecharts import options as opts from pyecharts.charts import Calendar import pandas as pd nucleic_df = pd.DataFrame() for i in range(12): month_nucleic = made_data(2022, i+1) month_df = pd.DataFrame(month_nucleic) nucleic_df = pd.concat([nucleic_df, month_df]) data = [[row_data['date'], row_data['nucleic']] for row_index, row_data in nucleic_df.iterrows()] cal = Calendar(init_opts=opts.InitOpts(width='900px', height='500px')) cal.add( '', data, calendar_opts=opts.CalendarOpts(range_="2022", daylabel_opts=opts.CalendarDayLabelOpts(first_day=1, name_map='cn')) ).set_series_opts( label_opts=opts.LabelOpts(font_size=12) ).set_global_opts( title_opts=opts.TitleOpts(title='核酸检测日历', pos_left='450', pos_top='0', title_textstyle_opts=opts.TextStyleOpts(color='black', font_size=16)), visualmap_opts=opts.VisualMapOpts( max_=1, min_=0, orient="horizontal", is_piecewise=False, range_color=["white", "white", "green"], pos_top="250px", pos_left='50px' ), ).render('my_nucleic.html')
Effet Calendrier :
Le composant Calendrier dans pyecharts peut également réaliser un calendrier visualisation, mais le format Il est relativement fixe et affiché de manière plus intensive.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!