最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用Python创建生命倒计时图表,珍惜时间,活在当下。

生命之轮(Wheel of life),这一概念最初由 Success Motivation Institute, Inc. 的创始人 Paul J. Meyer 提出,生命之轮使人能够根据此刻的价值观、愿景和优先事项,规划ta将为ta生活的每个领域付出的时间量。

✍️ 要创造和使用生命之轮,应该遵循以下步骤:

1、确定你人生的重点领域
2、使用你选择的类别创建一个轮子
3、评价每个领域
4、连接这些打过分的点
5、将结果与你理想的状况进行比较
6、采取步骤解决你想要改进的领域

创建生命倒计时代码如下:

  1 """
2 导入必需的库:
3 matplotlib.pyplot用于绘图,
4 numpy用于数值计算,
5 datetime用于获取当前日期
6
7 """
8 import matplotlib.pyplot as plt
9 import numpy as np
10 from datetime import datetime
11
12 # 出生年月日
13 birth_year = 1991
14 birth_month = 9
15 birth_day = 1
16
17 # 当前年月日
18 current_date = datetime.now()
19 current_year = current_date.year
20 current_month = current_date.month
21
22 # 设置图表的总年数和每行的年数
23 # 设置图表的总年数为80年,每行显示4年
24 total_years = 80
25 years_per_row = 4
26
27 # 计算总行数和总列数
28 total_rows = total_years // years_per_row
29 total_columns = years_per_row * 12
30
31 # 创建图表
32 fig, ax = plt.subplots(figsize=(12, 8))
33
34 # 计算从出生到当前日期已经过去的月份数
35 months_passed = (current_year - birth_year) * 12 + (current_month - birth_month)
36
37 # 绘制所有月份
38 # for i in range(total_rows * total_columns):
39 # color = 'red' if i < months_passed else 'black'
40 # ax.scatter(i % total_columns, i // total_columns, marker='o', edgecolors=color, facecolors='none', s=30)
41
42
43 # 绘制所有月份
44 # 如果该月份已经过去,用红色边框和绿色填充来表示,否则用黑色边框和空心来表示。
45 for i in range(total_rows * total_columns):
46 if i < months_passed:
47 ax.scatter(i % total_columns, i // total_columns, marker='o', edgecolors='red', facecolors='green', s=150)
48 else:
49 ax.scatter(i % total_columns, i // total_columns, marker='o', edgecolors='black', facecolors='none', s=150)
50
51 # 添加每12列之后的分割线
52 """
53 通过plt.axvline()函数在每12列之后添加一条分割线。
54 x=col - 0.5表示分割线的位置,
55 color='gray'设置分割线的颜色为灰色,
56 linestyle='--'设置分割线为虚线,
57 linewidth=1设置分割线的宽度为1。
58 这样可以在每行显示的4年的12个月份之间添加分割线,使图表更清晰。
59 """
60 for col in range(12, total_columns, 12):
61 plt.axvline(x=col - 0.5, color='gray', linestyle='--', linewidth=1)
62
63 # 设置轴标签
64 ax.set_xlabel('Months')
65 ax.set_ylabel('Years')
66
67 # 设置轴刻度
68 """
69
70 ax.set_xticks(np.arange(0, total_columns, 12))
71 ax.set_xticklabels(np.arange(1, years_per_row + 1))
72 """
73
74 """
75 ax.set_xticks(np.arange(0, total_columns + 1, 1))设置了X轴的刻度,使其每列都显示刻度线,
76 而xtick_labels使用np.tile函数重复生成1到12的标签。
77 这样可以在每个1到4的列中分别显示1到12的刻度值。
78 """
79 ax.set_xticks(np.arange(0, total_columns, 1))
80 xtick_labels = np.tile(np.arange(1, 13), 4)
81 # print(xtick_labels)
82 ax.set_xticklabels(xtick_labels)
83
84
85
86 # 设置Y轴刻度
87 ax.set_yticks(np.arange(0, total_rows, 1))
88 ax.set_yticklabels(np.arange(0, total_years, years_per_row))
89
90 # 设置标题
91 ax.set_title('A 80-Year Human Life in Months')
92
93 # 隐藏右边和上边的轴线
94 ax.spines['right'].set_visible(False)
95 ax.spines['top'].set_visible(False)
96
97 # 显示网格
98 # ax.grid(True)
99
100 # 反转y轴,使得0岁在顶部
101 plt.gca().invert_yaxis()
102
103 # 显示图表
104 plt.tight_layout()
105 plt.savefig("WhellOfLife.png")
106 plt.show()

展示如下:

绿色的圆点表示以及一去不返的过去,空心圆圈表示剩余的时间,设置目标年龄80岁,每行展示4年。每过一个月就涂掉一个圆圈。

Python 代码实现生命之轮Wheel of life的更多相关文章

  1. Effective Python之编写高质量Python代码的59个有效方法

                                                         这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码 ...

  2. 编写高质量Python代码的59个有效方法

    Python学习资料或者需要代码.视频加Python学习群:960410445 1. 用Pythonic方式思考 第一条:确认自己使用的Python版本 (1)有两个版本的python处于活跃状态,p ...

  3. XGBoost参数调优完全指南(附Python代码)

    XGBoost参数调优完全指南(附Python代码):http://www.2cto.com/kf/201607/528771.html https://www.zhihu.com/question/ ...

  4. 六行python代码的爱心曲线

    前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题 ...

  5. 利用Python代码编写计算器小程序

    import tkinter import tkinter.messagebox import math class JSQ: def __init__(self): #创建主界面 self.root ...

  6. [转]使用Cython来保护Python代码库

    转自:http://blog.csdn.net/chenyulancn/article/details/77168621 最近,我在做一个需要使用Cython来保护整个代码库的Python项目. 起初 ...

  7. Python进阶【第二篇】编写Python代码

    一.第一句Python代码——Hello Word 在 /home/dev/ 目录下创建 hello.py 文件,内容如下: print "hello,world" 执行 hell ...

  8. 一种部署 Python 代码的新方法

    在Nylas,我们喜欢使用Python进行开发.它的语法简单并富有表现力,拥有大量可用的开源模块和框架,而且这个社区既受欢迎又有多样性.我们的后台是纯用 Python 写的,团队也经常在 PyCon ...

  9. 在树莓派上读取土壤湿度传感器读书-python代码实现及常见问题(全面简单易懂)

    本篇文章简单介绍了如何在树莓派上配置土壤湿度传感器以读取土壤湿度(以百分比的形式出现)及代码实现. 主要包含有以下4个模块: 一.土壤湿度传感器常见类型及介绍 二.实验所需设备 三.设备连线方式与代码 ...

  10. 上传python代码到pypi

    上传python代码到pypi 去pypi官网注册账号 在项目中添加setup.py # coding = utf-8 from setuptools import setup, find_packa ...

随机推荐

  1. bash 连接操作符(& && | 等)的使用

    链式操作(Chaining Operators),就是用于将多个命令组合在一起,根据操作符类型执行各种复杂指令.链式操作常用于你在交互shell中写下一长串指令执行的时候,它让shell脚本的自动化能 ...

  2. 修改Linux服务的文件打开句柄数

    在bash中,有个ulimit命令,提供了对shell及该shell启动的进程的可用资源控制.主要包括打开文件描述符数量.用户的最大进程数量.coredump文件的大小等. 在centos 5/6 等 ...

  3. jsp页面访问数据库根据数据情况,定时弹出提醒

    需求:根据数据库情况,在页面定时弹出相应的消息 实现: 1. 展示DIV设置 <script language="javascript" type="text/ja ...

  4. 基于HarmonyOS NEXT 5.0自定义增强版导航栏组件|鸿蒙ArkUI自定义标题栏

    这段时间比较热门的莫过于华为推出的自主研发的面向全场景分布式操作系统HarmonyOS. https://developer.huawei.com/ 最新一直潜心学习鸿蒙os开发,于是基于Harmon ...

  5. Centos模板机配置

    icentos7标准化配置 挂载光盘 mkdir /media/cdrom mount /dev/sr0 /media/cdrom vi /etc/yum.repo.d/ 配置本地yum源 vim l ...

  6. CUDA编程学习 (4)——thread执行效率

    1. Warp 和 SIMD 硬件 1.1 作为调度单位的 Warp 每个 block 分为 32-thread warp 在 CUDA 编程模型中,虽然 warp 不是显式编程的一部分,但在硬件实现 ...

  7. 只有ip地址没有域名怎么申请https证书

    ​只有IP地址没有域名,如何申请HTTPS证书? 在日常生活中,我们通常会为网站的域名申请HTTPS证书,以保护用户的数据安全.然而,有时候你可能需要为一个只有IP地址的服务或设备申请HTTPS证书. ...

  8. 从零开始的Python世界生活——内置模块(Math)

    从零开始的Python世界生活--内置模块(Math) Python的math模块提供了丰富的数学函数和常数,支持基本的数学运算.三角函数.对数.指数等,适用于科学计算和工程应用. 数学常量: 注意m ...

  9. 鸿蒙NEXT开发案例:简体繁体转换器

    [引言] 简体繁体转换器是一个实用的小工具,它可以帮助用户轻松地在简体中文和繁体中文之间进行转换.对于需要频繁处理两岸三地文档的用户来说,这样的工具无疑是提高工作效率的好帮手.本案例将展示如何利用鸿蒙 ...

  10. BLOG-1

    前言 回顾这三次作业的心路历程,可以说每一次都带来了新的挑战与收获,随着题目数量和复杂度的增加,对Java编程的理解和面向对象设计的认知逐步加深.作为Java编程初学者,最初对编程架构.模块分层和错误 ...