我的座標是深圳,2022年以來,大部分時候要求24小時,少部分時候要求48小時,更少的時候要求72小時,沒有更長的情況。
本文根據我的核酸檢測記錄,製作成日曆,將核酸檢測記錄視覺化到日曆中。
輸入資料
核酸檢測記錄能查到的最早時間範圍是一個月,以前的檢測記錄沒有事先保存,所以先用8月份的資料製作日曆。
查詢8月份的偵測記錄,錄入程式碼。
# 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] }
如果當天做了核酸,用1表示,如果當天沒有做核酸,用0表示。
8月的日期使用Python標準函式庫datetime產生。
製作日曆
本文使用Python庫openpyxl在excel表格中產生日曆。
1.使用openpyxl建立表格
import openpyxl # 创建一个workbook对象,而且会在workbook中至少创建一个表worksheet wb = openpyxl.Workbook() # 获取当前活跃的worksheet,默认就是第一个worksheet ws = wb.active
openpyxl是Python中用來讀寫excel檔案的函式庫,pip install openpyxl安裝即可使用。
2.定義表格初始化和單元格設定的函數
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)
#定義一個將表格顏色填入白色的函數,對表格初始化處理,將背景設定成純白,日曆看起來更美觀。
定義一個用於處理單元格格式的函數,後面直接呼叫函數給單元格設定格式,方便重複使用。
3.實作行事曆
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()
行事曆效果:
可以看到,8月份我只有4天沒有做核酸,大部分時間都是維持24小時。
程式碼實現介紹:
- 先合併首行的前7列單元格,寫入年月,然後在第二行從左到右寫入星期一到星期日,並設定格式。
- 使用Python的日曆庫calendar返回目前月第一天是星期幾,然後確定日曆的1號的起始位置。
- 從1號開始,依序在excel中寫入日期,當欄位到達星期日時,換行並回到星期一的欄位。
- 依照當天是否做了核酸,為儲存格填滿背景顏色。本文如果當天做了核酸,則日期的背景設定為綠色(24小時核酸碼的顏色),如果未做核酸,則日期的背景設定為白色。
- 最後將結果儲存到excel檔案中,開啟excel檔案即可看到製作的行事曆。
製作一年的日曆
製作了一個月的日曆後,繼續擴展做一年的日曆,先看一下效果:
實作方式介紹:
- 資料補充,由於只能查到一個月的核酸記錄,所以本文除2022年8月外,其他月份的數據用隨機數產生。
- 將製作一個月日曆的程式碼進行封裝,傳入年和月,就可以產生任何一個月的日曆。
- 在excel檔案中,自己設計一排展示幾個月,本文一排展示3個月。並計算每個月日曆的起始儲存位置。
- 最後傳入年份,依序將一年12個月的日曆製作出來,展示在一個頁面上。只要有數據,可以對任意一年的日曆進行視覺化。 (程式碼較長,可在文末取得完整程式碼)
按年的另一種展示方式:
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')
行事曆效果:
pyecharts中的Calendar元件也可以實現日曆視覺化,不過格式比較固定,展示得比較密集。
總結
- 本文以python製作了核酸檢測的日曆,對核酸檢測的天數進行視覺化。
- 本文花了兩種方式實現一年的日曆展示。
- 需要原始碼,直接公眾號後台輸入:小助手,暗號「核酸日曆」可以取得完整程式碼。
以上是用Python製作我的核酸檢測日曆的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器