Rumah >pembangunan bahagian belakang >Tutorial Python >Gunakan Python untuk membuat kalendar ujian asid nukleik saya

Gunakan Python untuk membuat kalendar ujian asid nukleik saya

王林
王林ke hadapan
2023-05-10 14:19:06882semak imbas

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.

Masukkan data

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.

Membuat Kalendar

Artikel ini menggunakan perpustakaan Python openpyxl untuk menjana kalendar dalam jadual excel.

1. Gunakan openpyxl untuk mencipta jadual

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 .

2. Tentukan fungsi untuk permulaan jadual dan tetapan sel

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.

3. Laksanakan kalendar

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:

Gunakan Python untuk membuat kalendar ujian asid nukleik saya

Seperti yang anda lihat, Ogos Saya hanya melakukan 4 hari tanpa asid nukleik, dan kebanyakan masa saya menyimpannya 24 jam.

Pengenalan kepada pelaksanaan kod:

  • Pertama gabungkan 7 lajur pertama sel dalam baris pertama, tulis tahun dan bulan, dan kemudian pada yang kedua baris dari kiri ke kanan Tulis Isnin hingga Ahad dan formatkannya.
  • Gunakan kalendar pustaka kalendar Python untuk mengembalikan hari dalam minggu yang merupakan hari pertama bulan semasa, dan kemudian tentukan kedudukan permulaan kalendar pertama.
  • Bermula dari 1, tulis tarikh dalam excel secara berurutan Apabila lajur mencapai hari Ahad, bungkus baris dan kembali ke lajur Isnin.
  • Isikan warna latar belakang sel mengikut sama ada asid nukleik dilakukan pada hari itu. Dalam artikel ini, jika asid nukleik dilakukan pada hari itu, latar belakang tarikh ditetapkan kepada hijau (warna kod asid nukleik 24 jam Jika tiada asid nukleik dilakukan, latar belakang tarikh ditetapkan kepada). putih.
  • Akhir sekali, simpan keputusan ke dalam fail excel Buka fail excel untuk melihat kalendar yang dibuat.

Buat kalendar setahun

Selepas membuat kalendar sebulan, teruskan mengembangkan dan membuat kalendar setahun pada kesan pertama:

Gunakan Python untuk membuat kalendar ujian asid nukleik saya

Gunakan Python untuk membuat kalendar ujian asid nukleik saya

Pengenalan kepada kaedah pelaksanaan:

  • Tambahan data, memandangkan hanya satu bulan boleh ditemui rekod asid nukleik, jadi kecuali Ogos 2022, data untuk bulan lain dalam artikel ini dijana dengan nombor rawak.
  • Merangkumkan kod untuk membuat kalendar satu bulan Dengan melepasi tahun dan bulan, anda boleh menjana kalendar untuk mana-mana bulan.
  • Dalam fail excel, reka satu baris untuk dipaparkan selama beberapa bulan, dan artikel ini akan dipaparkan berturut-turut selama 3 bulan. Dan hitung kedudukan sel permulaan kalendar setiap bulan.
  • Akhir sekali, masukkan tahun, kemudian buat kalendar 12 bulan dalam setahun dan paparkannya pada satu halaman. Selagi anda mempunyai data, anda boleh menggambarkan kalendar untuk mana-mana tahun. (Kod lebih panjang, anda boleh mendapatkan kod lengkap di penghujung artikel)

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:

Gunakan Python untuk membuat kalendar ujian asid nukleik saya

Komponen Kalendar dalam pyecharts juga boleh merealisasikan visualisasi kalendar, tetapi formatnya agak tetap dan paparannya agak padat.

Ringkasan

  • Artikel ini menggunakan python untuk mencipta kalendar ujian asid nukleik untuk menggambarkan bilangan hari untuk ujian asid nukleik.
  • Artikel ini menggunakan dua kaedah untuk memaparkan kalendar selama satu tahun.
  • Jika anda memerlukan kod sumber, terus masukkan latar belakang akaun rasmi: pembantu, kata laluan "kalendar asid nukleik" untuk mendapatkan kod lengkap.

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!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam