龙岗-网站建设深圳信科seo排名哪家正规
文章目录
- 项目说明
- 关于人体生物节律
- 用到的技术
- 代码实现
- 获取每月有多少天
- 计算每天到生日过了多少天
- 计算节律
- 绘图
- 结果
项目说明
这里仿照 http://www.4qx.net/The_Human_Body_Clock.php 做一个人体生物节律的计算和展示
关于人体生物节律
- 百度/维基百科 解释
https://zh.wikipedia.org/wiki/生理节律
https://baike.baidu.com/item/人体生物节律/9883446
基本生物节律
情绪(28天)
影响:情绪、灵敏度、创造力
体力(23天)
影响:力量、韧性、耐久力、协调性
智力(33天)
影响:分析思考、逻辑、学习能力、记忆力
次级生物节律
精神(53天)
直觉(38天)
意识(48天)
美感(43天)
用到的技术
- 计算日期间隔
- 图表展示,使用 pyecharts;
https://echarts.apache.org/zh/index.html
https://github.com/pyecharts/pyecharts
https://github.com/pyecharts/pyecharts-gallery
代码实现
获取每月有多少天
import time
import datetime
import os def get_days_4month(y, m):if m < 1 and m > 12: # 保证用户输入月份是在1-12月份print('输入日期错误')return 0t = 0 # t 变量用于表示闰年和平年的标志位list_maxm = [1, 3, 5, 7, 8, 10, 12] # 创建大月的列表list_litem = [4, 6, 9, 11] # 创建小月的列表if y % 4 == 0 and y % 100 != 0 or y % 400 == 0:t = 1if m in list_maxm:d = 31 # 计算大月的天数elif m == 2 and t == 0:d = 28 # 计算平年中2月的天数elif m == 2 and t == 1:d = 29 # 计算闰年中2月的天数elif m in list_litem:d = 30 # 计算小月的天数return d
计算每天到生日过了多少天
format = '%Y-%m-%d'# 2023-02-12
def get_gap(birthday, day):d1 = datetime.datetime.strptime(birthday , format)d2 = datetime.datetime.strptime(day , format)diff = d2 - d1# print(diff.days)return diff.days
计算节律
TL_DUR = 23
QX_DUR = 28
ZL_DUR = 33def get_rhythm(gap):tl_circle = int(gap / TL_DUR)tl_day = gap % TL_DURqx_circle = int(gap / QX_DUR)qx_day = gap % QX_DURzl_circle = int(gap / ZL_DUR)zl_day = gap % ZL_DUR# print(tl_circle, tl_day, qx_circle, qx_day, zl_circle, zl_day)return tl_circle, tl_day, qx_circle, qx_day, zl_circle, zl_day
绘图
from pyecharts.charts import Line
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowserimport mathdef get_gap_rate(gap_day, dur):rate = math.sin(math.pi * 2 * float(gap_day)/dur)# return round(rate, 5)return ratedef get_month_rhythm(year, month):days = get_days_4month(year, month)print('-- days : ', days) birthday = '1991-08-26' tl_arr = []qx_arr = []zl_arr = []day_arr = []for i in range(days):# day = '{%d}-{%02d}-{%02d}'.format(year, month, i+1) day = '%d-%02d-%02d'%(year, month, i+1) gap = get_gap(birthday, day)print('-- ', day, gap)tl_circle, tl_day, qx_circle, qx_day, zl_circle, zl_day = get_rhythm(gap)# tl_arr.append(tl_day) # qx_arr.append(qx_day) # zl_arr.append(zl_day) day_arr.append(str(i+1))tl_arr.append(get_gap_rate(tl_day, TL_DUR))qx_arr.append(get_gap_rate(qx_day, QX_DUR))zl_arr.append(get_gap_rate(zl_day, ZL_DUR))line4=(Line().add_xaxis(day_arr).add_yaxis('体力', tl_arr, is_smooth=True, is_symbol_show=False) .add_yaxis('情绪', qx_arr, is_smooth=True, is_symbol_show=False).add_yaxis('智力', zl_arr, is_smooth=True, is_symbol_show=False).set_global_opts(title_opts=opts.TitleOpts(title=f'人体生物节律 {year}年{month}月\n生日:{birthday}')))file_path = 'rhythm.html'line4.render(file_path)webbrowser.open("file://" + os.path.realpath(file_path))year, month = 2023, 2
get_month_rhythm(year, month)
结果
是不是和该网站的效果比较接近呢?
伊织 2023-02-20(一)