diff --git a/graphs/rmr_fuel_mix_charts.png b/graphs/rmr_fuel_mix_charts.png new file mode 100644 index 0000000..305749e Binary files /dev/null and b/graphs/rmr_fuel_mix_charts.png differ diff --git a/notebook.ipynb b/notebook.ipynb index 35a213f..24f119e 100644 --- a/notebook.ipynb +++ b/notebook.ipynb @@ -2109,6 +2109,164 @@ "print(\"=\" * 60)" ] }, + { + "cell_type": "markdown", + "id": "eec769b7", + "metadata": {}, + "source": [ + "# Generate Charts for 33% Fat / 67% Carbs Fuel Mix\n", + "\n", + "Now let's create the visualizations that match the report format." + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "9ea60b1d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RMR calculation:\n", + " Number of resting data points: 3\n", + " Daily RMR: 1453 kcal/day\n", + " Fuel mix: 33% Fat / 67% Carbs\n" + ] + }, + { + "data": { + "image/png": "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kqRHH31ULi4uN62Hg4ODOnbsqG+//VZSRhjJDNhr165VTEyMJKlu3boqWbKkIiIijHBdpEgRDRkyRHnz5lV4eLiOHDmidevWZevzX+vcuXM3fPb222+/VYsWLVSsWDENHjxYpUqVkqenp5ydnRUdHa0ZM2Zow4YNOnfunGbNmmXcic+8KODl5aVhw4apaNGiioiI0IkTJ7R27VqjG/+0adO0YcMG/fDDD5KkypUra/jw4XdU90w+Pj564oknNHfuXM2aNUt9+vTR77//Lkl65JFHbnrH+OjRo0a4dnBw0KuvvqqAgACdPXtWo0ePVlRUlH788UcFBQUpKCgoW3V2dHTUG2+8obJly8rHx0dubm5KSEjQpk2bNGXKFKWkpOjbb7/VxIkTb1iny5cva+TIkfLy8tLEiRO1Z88eWa1WffTRR2revLnc3d01bdo0I1w7Ozvr9ddfV7Vq1bRixQrNnj1bkjR27FjVr19fNWrUuOO/Z3BwsBGuAwMD9fLLL8vJyUkXL17Url27dObMmZsum5KSorFjxyoyMlIfffSRrFardu3aJQcHB/Xr10/VqlXT559/rpMnTyolJUUzZszQ4MGD77iOAIDcgYANAPepp556Snv27NH06dNltVqN6RcvXtTixYu1ePFiNW/eXN9+++0tQ6bVarW5w9q/f3/jblz9+vXVvHlzXbp0ScnJyVq8eLF69uypevXqyWKxyGq1avv27ZJk/LdSpUo6fPiw8f7au8uZ3W1vpWPHjvruu+9ktVq1ePFiDR06VA4ODlq4cKFRJvPutYeHhxwdHZWWliYvLy+VKlVK5cuXl6urqyTpv//97223d6fKlSunffv2afr06QoJCTG6PF9rz549xmtPT0/Fx8crT548Kl26tCpVqiR3d3dJUt++fY1yderU0enTp433Xl5et+yqfjvdu3fX3LlzFRERoQ8//FCHDx82pl97IeRaf/75p3Hnul69emrUqJHxmVu0aGF0z589e7aCgoKyVWcnJyc1atRIU6ZM0d69e3X58mWlpKTYlLn273W9Tz75RE2aNJEk1ahRQ82aNVNKSoqio6O1ceNGtWzZUvPmzTPKd+nSRX369JGUcRHq0KFDxuMJ8+bNu6uAfW1vkQIFCqhMmTIqXry4HB0d1alTp1su+/777xv1nzZtmo4dOyZJat26tfH///jx4/ryyy8l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t2/fHPtseLBt375dLi4uevrppzV//nx16NBBP/74o0qWLKl27doZ5aZNmyar1apu3bopLS1NixcvVnBwsBISElSuXDk9//zz8vX1lZRxd6JLly5au3atLl26pE8//VSbNm3S+vXrFRUVJS8vL7Vo0UKPPfaYsf4jR47ojz/+0JUrV1S5cmV5eHgoPT1dL730kqSMC7UzZ85UaGioXFxc1LBhQ7Vp08bmDghwL61YseKmbTglJUXTp0/Xnj17lJaWJj8/P7344os6ceKEgoODZbFYtHHjRvn5+emDDz6w7wfBQ83emeBWJk+erJCQECUlJalgwYJ65plnjMB/+fJlTZ06VSdPnpSDg4OKFCmiAQMG6JdfflFERIQmTZokBwcHBQYG6vnnnzfxL/bw4Gh6hxwdHRUYGKhNmzYZ086fP69Tp04pKChIZ8+e1cSJE9WhQweNGTNG3bp1088//6ywsDCj/NatW9WgQQONHTtWLVu2VI0aNbR582Zj/q5du+Tj43PDHalUqVKKiorStGnTtH//fsXFxd2yvn///bf27t2rIUOG6NNPP5XFYtHkyZMlSf7+/jpy5IgkKS4uTpGRkbp06ZISExNltVp15MiRO776BvxbHh4eKlSokH799Vdt375dV65cuWnZI0eOaPr06Xr++ec1evRoPfLIIxo/frwSEhJUsmRJJScnG3e+Q0JClC9fPh07dsx4f6+7buHh8s8//yggIEB16tRRcnKy9uzZo8DAQAUHBxtlUlNTtWPHDtWrV0+SNH/+fB07dkxDhgzRl19+qUKFCumnn36yWe/WrVv12muvqUePHnJxcVG+fPk0cOBAff3113rhhRc0d+5co13HxcXpu+++U4sWLTR27Fg1bNjQZvvJyckaO3asKlWqpC+++EJvvfWWtm/fbnNMA+61W7XhzZs36+zZs/rkk080btw4vfbaa/L29lazZs0UGBioJk2aaPz48YRr2J29M8GtVKpUSR9++KHGjBmjOnXq6Mcff1RiYqKkjONOwYIFNWbMGI0aNUqdOnWSg4ODevfuLT8/P/Xs2VPjx48nXP8LBOy70KBBAx06dEgRERGSMq5UValSRXnz5tX69esVFBSkSpUqycHBQeXLl1eNGjW0Y8cOY/kqVaqoatWqcnBwkIuLixo0aKAtW7YYXf82b96s+vXr33Db+fPn15AhQ5SU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HDlS+/btk7u7u5o0aaLBgwera9eudxWwJal58+aaP3++pkyZoi1btujChQtycHAw/jZubm6SJAcHB40ePVotWrTQ3LlzdeDAAUVHR8vLy0sFCxZU7dq11axZs7t+xhwAgNzAYs18oAsAAAAAANw1B3tXAAAAAACABwEBGwAAAAAAExCwAQAAAAAwAQEbAAAAAAATELABAAAAADABARsAAAAAABMQsAEAAAAAMAEBGwAAAAAAExCwAQAAAAAwAQEbAAAAAAATELABAAAAADABARsAAAAAABMQsAEAAAAAMAEBGwAAAAAAExCwAQAAAAAwAQEbAAAAAAATELABAAAAADABARsAAAAAABMQsAEAAAAAMAEBGwAAAAAAE9glYO/YsUNJSUn22DSAW0hKSmL/BHIh9k0gd2LfBHIve+2XdruDnZaWZq9NA7iJzP2S/RPIXdg3gdyJfRPIvey1X9JFHAAAAAAAExCwAQAAAAAwAQEbAAAAAAATELABAAAAADABARsAAAAAABMQsAEAAAAAMAEBGwAAAAAAExCwAQAAAAAwAQEbAAAAAAATELABAAAAADABARsAAAAAABMQsAEAAAAAMAEBGwAAAAAAExCwAQAAAAAwAQEbAAAAAAATELABAAAAADABARsAAAAAABMQsAEAAAAAMAEBGwAAAAAAExCwAQAAAAAwAQEbAAAAAAATELABAAAAADABARsAAAAAABMQsAEAAAAAMAEBGwAAAAAAExCwAQAAYDeJiYlq37692rdvr8TERHtXBwD+FQI2AAAAAAAmIGADAAAAAGACJ3tXAAAAAA8vBwcH1alTx3gNAPczAjYAAADsxsXFRe+//769qwEApuAyIQAAAAAAJiBgAwAAAABgAgI2AAAA7CYxMVHPPPOMnnnmGX6mC8B9j2ewAQAAYFdJSUn2rgIAmII72AAAAAAAmMAud7ATEhIUFxcnq9Vqj80DuIn4+Hj2z9uwWq2Kj4+XJLm7u8tisdi5RngYsG/iQZaYmKi0tDRJUlxcnPH6fsC+CeRe8fHxcnd3z/HtWqx2+DbghBQAAAAAcC/Z48IXXcQBAAAAADCB3QY5O7G2szzyMMYagPtLeESiqrWZJ0katTpUrnk87FwjALi/pSQl6ud3e0qSXv50kpxd3excIwD3u6SEOP23WRm7bNtuCdcjj5M83J3ttXkAuCtx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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "āœ… Charts saved to 'graphs/rmr_fuel_mix_charts.png'\n" + ] + } + ], + "source": [ + "# Calculate values for RER = 0.901 (33% fat / 67% carbs)\n", + "target_rer = 0.901\n", + "fat_percent = 33\n", + "carbs_percent = 67\n", + "\n", + "# For RMR, we need the resting metabolic rate\n", + "# Use the data where MET < 1.3 (resting phase)\n", + "rest_phase = df[df['MET'] < 1.3]\n", + "if len(rest_phase) > 0:\n", + " # The EE(kcal/day) column already contains the daily values\n", + " rmr_kcal = rest_phase['EE(kcal/day)'].mean()\n", + "else:\n", + " # Fallback: use first 50 points\n", + " rest_phase = df.head(50)\n", + " rmr_kcal = rest_phase['EE(kcal/day)'].mean()\n", + "\n", + "print(f\"\\nRMR calculation:\")\n", + "print(f\" Number of resting data points: {len(rest_phase)}\")\n", + "print(f\" Daily RMR: {rmr_kcal:.0f} kcal/day\")\n", + "print(f\" Fuel mix: {fat_percent}% Fat / {carbs_percent}% Carbs\")\n", + "\n", + "# Create the two charts matching the image\n", + "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 4.5), facecolor='white')\n", + "\n", + "# Chart 1: Slow vs Fast Metabolism\n", + "ax1.barh([0], [rmr_kcal], height=0.5, color='#90EE90', edgecolor='black', linewidth=1.5)\n", + "ax1.set_xlim(1000, 2500)\n", + "ax1.set_ylim(-0.6, 0.6)\n", + "ax1.set_yticks([])\n", + "ax1.set_xlabel('')\n", + "ax1.set_title('Slow vs Fast Metabolism', fontsize=13, fontweight='bold', pad=15)\n", + "\n", + "# Add tick marks with labels\n", + "ax1.set_xticks([1000, 1250, 1500, 1750, 2000, 2250, 2500])\n", + "# Draw small tick marks\n", + "for x in [1000, 1250, 1500, 1750, 2000, 2250, 2500]:\n", + " ax1.plot([x, x], [-0.35, -0.25], color='black', linewidth=1, clip_on=False)\n", + "\n", + "# Add value label on the bar\n", + "ax1.text(rmr_kcal, 0, f'{int(rmr_kcal)}kCals', \n", + " ha='center', va='center', fontsize=11, fontweight='bold', color='black')\n", + "\n", + "# Add labels below the bar\n", + "ax1.text(1125, -0.45, 'Very Slow', ha='center', va='top', fontsize=9, color='#666')\n", + "ax1.text(1450, -0.45, 'Slow', ha='center', va='top', fontsize=9, color='#666')\n", + "ax1.text(1750, -0.45, 'Average', ha='center', va='top', fontsize=9, color='#666')\n", + "ax1.text(2050, -0.45, 'Fast', ha='center', va='top', fontsize=9, color='#666')\n", + "ax1.text(2375, -0.45, 'Very Fast', ha='center', va='top', fontsize=9, color='#666')\n", + "\n", + "# Remove spines\n", + "ax1.spines['top'].set_visible(False)\n", + "ax1.spines['right'].set_visible(False)\n", + "ax1.spines['left'].set_visible(False)\n", + "ax1.spines['bottom'].set_visible(True)\n", + "ax1.spines['bottom'].set_linewidth(1)\n", + "\n", + "# Chart 2: Fuel Source\n", + "# Create stacked horizontal bar\n", + "fat_color = '#F4D35E' # Yellow/tan for fats\n", + "carbs_color = '#9AD0F5' # Light blue for carbs\n", + "\n", + "ax2.barh([0], [fat_percent], height=0.5, color=fat_color, edgecolor='black', linewidth=1.5, label='Fats')\n", + "ax2.barh([0], [carbs_percent], left=[fat_percent], height=0.5, color=carbs_color, \n", + " edgecolor='black', linewidth=1.5, label='Carbs')\n", + "\n", + "ax2.set_xlim(0, 100)\n", + "ax2.set_ylim(-0.6, 0.6)\n", + "ax2.set_yticks([])\n", + "ax2.set_xlabel('')\n", + "ax2.set_title('Fuel Source', fontsize=13, fontweight='bold', pad=15)\n", + "\n", + "# Add percentage labels on the bars\n", + "ax2.text(fat_percent/2, 0, f'{fat_percent}%', \n", + " ha='center', va='center', fontsize=11, fontweight='bold', color='black')\n", + "ax2.text(fat_percent + carbs_percent/2, 0, f'{carbs_percent}%', \n", + " ha='center', va='center', fontsize=11, fontweight='bold', color='black')\n", + "\n", + "# Add labels below the bar\n", + "ax2.text(2, -0.45, 'Fats', ha='left', va='top', fontsize=10, fontweight='bold', color='black')\n", + "ax2.text(98, -0.45, 'Carbs', ha='right', va='top', fontsize=10, fontweight='bold', color='black')\n", + "\n", + "# Add tick marks\n", + "ax2.set_xticks([0, 25, 50, 75, 100])\n", + "# Draw small tick marks\n", + "for x in [0, 25, 50, 75, 100]:\n", + " ax2.plot([x, x], [-0.35, -0.25], color='black', linewidth=1, clip_on=False)\n", + "\n", + "# Add \"Optimal\" label and line around 70%\n", + "ax2.axvline(70, ymin=0.2, ymax=0.8, color='black', linestyle='--', linewidth=1.5, alpha=0.7)\n", + "ax2.text(70, -0.45, 'Optimal', ha='center', va='top', fontsize=9, color='#666')\n", + "\n", + "# Remove spines\n", + "ax2.spines['top'].set_visible(False)\n", + "ax2.spines['right'].set_visible(False)\n", + "ax2.spines['left'].set_visible(False)\n", + "ax2.spines['bottom'].set_visible(True)\n", + "ax2.spines['bottom'].set_linewidth(1)\n", + "\n", + "plt.tight_layout()\n", + "plt.savefig('graphs/rmr_fuel_mix_charts.png', dpi=300, bbox_inches='tight', facecolor='white')\n", + "plt.show()\n", + "\n", + "print(f\"\\nāœ… Charts saved to 'graphs/rmr_fuel_mix_charts.png'\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "3862aaf2", + "metadata": {}, + "source": [] + }, { "cell_type": "code", "execution_count": 43,