首页 > 编程语言 >Python 代码实现生命之轮Wheel of life

Python 代码实现生命之轮Wheel of life

时间:2024-12-30 21:20:49浏览次数:1  
标签:Wheel life set Python 12 np ax total columns

  最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用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年。每过一个月就涂掉一个圆圈。

标签:Wheel,life,set,Python,12,np,ax,total,columns
From: https://www.cnblogs.com/flysh/p/18642440

相关文章

  • python的collections包
    collections模块是Python标准库的一部分,提供了多种用于处理集合数据结构的工具,其中defaultdict是一个非常常用的容器类。它是字典的一个子类,可以在访问不存在的键时返回一个默认值,而不是抛出KeyError异常。除此之外,collections模块还提供了许多类似于defaultdict的工......
  • python中的可不可变,可不可哈希,可不可修改
    在Python中,可不可变性、可不可哈希性、以及是否支持修改是理解数据类型行为的关键。以下是对这些特性的详细分析,包括定义、例子和它们之间的联系。1.可变性vs不可变性定义可变性:可变类型的数据可以直接修改,而不会改变其引用(内存地址)。不可变性:不可变类型的数据在创建后......
  • 强化学习算法环境报错:python报错 —— gym DuplicatedInput doesn't exist
    运行强化学习pcl算法,报错,原因是gym版本过高,gym停止维护版本为0.26版本,降低版本到0.18,运行成功。pcl算法的官方地址:https://github.com/tensorflow/models/blob/master/research/pcl_rl......
  • 【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
    问题描述根据GraphAPI的实例文档,在单个请求中将多个成员添加入组。代码执行后,无错误消息,但是,用户也没有添加成功。在单个请求中向组添加多个成员文档地址:https://learn.microsoft.com/zh-cn/graph/api/group-post-members?view=graph-rest-1.0&tabs=python 问题解答......
  • Python AI 教程之五: 强化学习
    强化学习强化学习:概述强化学习(RL)是机器学习的一个分支,专注于在特定情况下做出决策以最大化累积奖励。与依赖具有预定义答案的训练数据集的监督学习不同,强化学习涉及通过经验进行学习。在强化学习中,代理通过执行操作并通过奖励或惩罚获得反馈来学习在不确定、可能复杂的环......
  • 探索PIL库:Python图像处理的强大工具
    文章一览前言一、PIL图像处理库简介二、基本概念2.1颜色模型2.1.1RGB颜色模型2.1.2CMY色彩空间2.2通道2.3图像数据2.4模式三、用PIL做图像处理3.1图像缩放、翻转等处理3.1.1图像缩放处理3.1.2图像旋转处理(1)PIL提供的函数:(2)利用numpy数组处理3.2调整亮度3.......
  • 【IDAPython】段操作
    打印一行指令并没有什么用处。IDAPython的强大之处在于遍历所有指令,交叉引用地址并搜索代码或数据。指令、交叉引用地址以及搜索代码或数据,将在后面详细介绍。我们从遍历所有程序段开始。forseginidautils.Segments():print(idc.get_segm_name(seg),hex(idc.get_segm......
  • 【IDAPython】基本用法
    IDAPython是由GergelyErdelyi开发的一种插件,它在IDA中集成了Python解释器。除提供Python的功能外,使用这个插件还可以编写出能够实现IDC脚本语言所有功能的Python脚本。IDAPython的一个显著优势在于,它可以访问Python的数据处理功能以及所有Python模块。此外,IDAPyt......
  • Python 进阶:深入理解 import 机制与 importlib 的妙用
    大家好,今天我们来深入探讨Python中的导入机制和importlib模块。相信不少朋友和我一样,平时写代码时可能只用过最基础的import语句,或者偶尔用importlib.import_module来做些动态导入。但其实这背后的机制非常有趣,而且importlib提供的功能远比我们想象的要丰富。Python的......
  • Python+Django大学生入伍人员管理系统--(Pycharm Flask Django Vue mysql)
    收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我项目介绍大学生入伍人员管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。......