Rumah >pembangunan bahagian belakang >Tutorial Python >Gunakan Python untuk membuat kalendar ujian asid nukleik saya
Koordinat saya adalah Shenzhen, kebanyakan masa ia memerlukan 24 jam, beberapa kali memerlukan 48 jam, malah lebih jarang ia memerlukan 72 jam keadaan.
Artikel ini dijadikan kalendar berdasarkan rekod ujian asid nukleik saya, dan rekod ujian asid nukleik divisualisasikan dalam kalendar.
Julat masa terawal rekod ujian asid nukleik boleh ditemui ialah satu bulan Rekod ujian sebelumnya tidak disimpan terlebih dahulu, jadi data pada bulan Ogos digunakan dahulu.
Soal rekod pemeriksaan pada bulan Ogos dan masukkannya ke dalam kod.
# 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] }
Jika asid nukleik dilakukan pada hari tersebut, ia akan diwakili oleh 1. Jika asid nukleik tidak dilakukan pada hari tersebut, ia akan diwakili oleh 0.
Tarikh Ogos dijana menggunakan waktu tarikh perpustakaan standard Python.
Artikel ini menggunakan perpustakaan Python openpyxl untuk menjana kalendar dalam jadual excel.
import openpyxl # 创建一个workbook对象,而且会在workbook中至少创建一个表worksheet wb = openpyxl.Workbook() # 获取当前活跃的worksheet,默认就是第一个worksheet ws = wb.active
openpyxl ialah perpustakaan dalam Python untuk membaca dan menulis fail excel anda boleh menggunakannya selepas pemasangan pip openpyxl dipasang .
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)
Tentukan fungsi yang mengisi warna jadual dengan putih, memulakan jadual dan menetapkan latar belakang kepada Tulen putih, kalendar kelihatan lebih cantik.
Tentukan fungsi untuk memproses format sel, dan kemudian panggil terus fungsi tersebut untuk memformat sel agar mudah digunakan semula.
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()
Kesan kalendar:
Seperti yang anda lihat, Ogos Saya hanya melakukan 4 hari tanpa asid nukleik, dan kebanyakan masa saya menyimpannya 24 jam.
Pengenalan kepada pelaksanaan kod:
Selepas membuat kalendar sebulan, teruskan mengembangkan dan membuat kalendar setahun pada kesan pertama:
Pengenalan kepada kaedah pelaksanaan:
Kaedah paparan lain mengikut tahun:
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')
Kesan Kalendar:
Komponen Kalendar dalam pyecharts juga boleh merealisasikan visualisasi kalendar, tetapi formatnya agak tetap dan paparannya agak padat.
Atas ialah kandungan terperinci Gunakan Python untuk membuat kalendar ujian asid nukleik saya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!