DeepSeek-Coder/athelete_speed_dashboard5.ipynb

174 lines
177 KiB
Plaintext
Raw Normal View History

2025-02-04 03:51:58 -05:00
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
2025-02-04 04:03:17 -05:00
"authorship_tag": "ABX9TyMwlYOkE7uzIiBV3XCaaj3+",
2025-02-04 03:51:58 -05:00
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/Orrm23/DeepSeek-Coder/blob/main/athelete_speed_dashboard5.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
2025-02-04 04:03:17 -05:00
"execution_count": null,
2025-02-04 03:51:58 -05:00
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
2025-02-04 04:03:17 -05:00
"height": 658
2025-02-04 03:51:58 -05:00
},
"id": "G2vIOdeGG43G",
2025-02-04 04:03:17 -05:00
"outputId": "824713ec-86cb-45ab-ffa1-f126466c8e79"
2025-02-04 03:51:58 -05:00
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
2025-02-04 04:03:17 -05:00
"<Figure size 1600x1000 with 4 Axes>"
2025-02-04 03:51:58 -05:00
],
2025-02-04 04:03:17 -05:00
"image/png": "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CCGEWq0W/fr1EwCEjY2NaN68uejdu7coV66cACCcnJzE1q1bs9wHzeM+fPhwAUDUqVNH9OnTR4SGhor9+/cLIYT2uB988IF23927dxcBAQECgPD39xePHj0SPXv2FA4ODqJt27aiS5cu2udItWrVREpKis5xb968qX1+NmjQQPTo0UO0b99e+Pn5CQDC29tbXLlyJcdz8sEHHwg7OztRsWJF0bt3bxEaGiqsra0FADFq1Khsz9eIESO096VGjRqid+/eol27diI4OFgAEOHh4Trbr169Wjg4OAgAokKFCqJLly6iefPmokiRIgKAGDhwYLbHycmUKVMEABEaGvrKbceMGSMAiPLly+usj4iI0D4+TZo0Eb169RKtW7cWnp6eAoAoU6aMePDggc5tYmNjtY9rQECA6NSpk+jVq5cICQkRRYsWFW5ubjrbh4eHCwCiUaNGomXLlsLJyUm0bdtWdOvWTfj7+wsAwt3dXURGRurcLvPrvmvXrsLW1la0bNlS9O7dW/sYOzs7i0OHDmW5v//8848oWrSoNsZevXqJtm3bah//Nm3a6P059O677worKytRqVIl0bt3b9G6dWuxcuVKIYQQFy5c0D5/fX19tft2dHQUDRs2FA0bNsz2OUNERET6w2QjERGRgi5duiQACFtbW3Hv3j3t+goVKggAYunSpdneTpN4yYkm2aj5sB8fH6+97tGjR6JGjRoCgPjiiy90bpdTslGtVovGjRsLAGLw4MEiISFBe11qaqo2WdisWTOd22mSHy9L0vz444/aZMu///6rc92+ffuEi4uLsLOzE5cvX85xHy96WbLx9u3bwsXFRQAQn3zyiRBCJnU8PT2FSqUS33//vUhPT9du/+DBA9G8eXMBQEybNk1nX5kTiR988IHO7TJ72flauHChACC8vLzEyZMntevVarU2yeXu7q7z/BAiI9lobW0tNm3a9NLjenp6ilOnTmnXJyYmiiZNmggAomrVqqJ06dI6ieL79++LMmXKCABi+fLlOvtMSEgQmzZtypJAev78uZg0aZIAINq3b58lFs05ASAWLVqkc93u3bu1ieWbN2/qXPfNN99o78OePXuy7Pfvv/8W0dHR2t9Pnz4t7O3thYODg1i3bp3OtlFRUdqE+W+//ZbtY5advCQbly9frr2fqamp2vU3b94Uu3btyvIcefbsmTbZ/O677+pcN23aNAFADBkyRKjVap3rnj9/Lnbt2qWzTvN6AyBq1qwpYmNjtdclJSVpk/9DhgzRuZ3mda95HmZ+HaalpWmTvYGBgSI5OVl7XXJysvZ5OGzYMJ1k/LVr10RQUJAAID788EOd4+njOfTdd99luV4IIerWrSsAiJ49e4qkpCTt+hs3bojSpUtrb89kIxERkeEw2UhERKSgiRMnCgCiW7duOutnzZr10uRGbpONRYoUEbdv385y/R9//CEAiObNm+uszynZuHXrVu2osswJFI309HRRpUoVAUCcOXNGu/5Vycb09HTtaKZjx45lu43msXhxNOTLZJdsfPr0qdi3b5+oVauW9rHRJKk052H48OHZ7u/WrVvC1tZWeHt76yR9NMnGcuXKibS0tBzjedn50iRAvvnmmyzXqdVqUa1aNQFAfP755zrXaZI8gwYNeuVxs0vMrF+/Xnv9X3/9leX62
2025-02-04 03:51:58 -05:00
},
"metadata": {}
}
],
"source": [
2025-02-04 04:03:17 -05:00
"# prompt: create visual dashboard for speed,power,mean velocity,horsepower persecond analysis using rpm for atheletes speed analysis device where we calculate athelets speed through revolution per minute through absolute encoder sensor live.the dashboard should be more visual and should use 2d modeling for graphs of all above parameter and clearity in all above graphs ploted\n",
2025-02-04 03:51:58 -05:00
"\n",
2025-02-04 04:03:17 -05:00
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
2025-02-04 03:51:58 -05:00
"import time\n",
2025-02-04 04:03:17 -05:00
"from IPython.display import display, clear_output\n",
2025-02-04 03:51:58 -05:00
"import random\n",
"\n",
2025-02-04 04:03:17 -05:00
"# --- Simulation Data Generation (Replace with Live Data) ---\n",
"def simulate_data(rpm_values):\n",
" \"\"\"Simulates speed, power, mean velocity, and horsepower/sec data based on RPM.\"\"\"\n",
" speed_values = [rpm * 0.1 for rpm in rpm_values] # Example relationship: speed proportional to RPM\n",
" power_values = [rpm**2 * 0.0001 for rpm in rpm_values] # Example relationship: power increases with RPM^2\n",
" mean_velocity_values = [rpm * 0.05 for rpm in rpm_values]\n",
" horsepower_per_sec_values = [power * 0.001 for power in power_values] #Example: Horsepower increase with power\n",
" return speed_values, power_values, mean_velocity_values, horsepower_per_sec_values\n",
"\n",
"# --- Initialize Parameters ---\n",
"rpm_data = []\n",
"time_data = []\n",
"speed_data = []\n",
"power_data = []\n",
"mean_velocity_data = []\n",
"horsepower_per_sec_data = []\n",
"start_time = time.time()\n",
"max_points = 50\n",
"\n",
"# --- Create the Figure and Axes ---\n",
"plt.ion() # Turn on interactive mode\n",
"fig, axs = plt.subplots(2, 2, figsize=(16, 10))\n",
"fig.suptitle('Athlete Performance Dashboard', fontsize=16)\n",
"\n",
"# --- Initialize Plot Lines ---\n",
"line_speed, = axs[0, 0].plot([], [], '-o', color='blue')\n",
"line_power, = axs[0, 1].plot([], [], '-o', color='green')\n",
"line_mean_velocity, = axs[1, 0].plot([], [], '-o', color='purple')\n",
"line_horsepower_per_sec, = axs[1, 1].plot([], [], '-o', color='red')\n",
"\n",
"# --- Set Plot Labels and Limits ---\n",
"axs[0, 0].set_title('Speed vs. Time')\n",
"axs[0, 0].set_xlabel('Time (seconds)')\n",
"axs[0, 0].set_ylabel('Speed (units)')\n",
"axs[0, 0].set_xlim(0, 10)\n",
"axs[0, 0].set_ylim(0, 10)\n",
"axs[0, 0].grid(True)\n",
"\n",
"axs[0, 1].set_title('Power vs. Time')\n",
"axs[0, 1].set_xlabel('Time (seconds)')\n",
"axs[0, 1].set_ylabel('Power (units)')\n",
"axs[0, 1].set_xlim(0, 10)\n",
"axs[0, 1].set_ylim(0, 1)\n",
"axs[0, 1].grid(True)\n",
"\n",
"axs[1, 0].set_title('Mean Velocity vs. Time')\n",
"axs[1, 0].set_xlabel('Time (seconds)')\n",
"axs[1, 0].set_ylabel('Mean Velocity (units)')\n",
"axs[1, 0].set_xlim(0, 10)\n",
"axs[1, 0].set_ylim(0, 5)\n",
"axs[1, 0].grid(True)\n",
"\n",
"axs[1, 1].set_title('Horsepower/sec vs. Time')\n",
"axs[1, 1].set_xlabel('Time (seconds)')\n",
"axs[1, 1].set_ylabel('Horsepower/sec (units)')\n",
"axs[1, 1].set_xlim(0, 10)\n",
"axs[1, 1].set_ylim(0, 0.1)\n",
"axs[1, 1].grid(True)\n",
"\n",
"# --- Animation Loop ---\n",
"try:\n",
" while True:\n",
" # Simulate Data (Replace with Live Sensor Readings)\n",
" current_time = time.time() - start_time\n",
" rpm = random.uniform(50, 150) #random generation of rpm replace with live rpm sensor data\n",
"\n",
" rpm_data.append(rpm)\n",
" time_data.append(current_time)\n",
" speed, power, mean_velocity, horsepower_per_sec = simulate_data([rpm])\n",
" speed_data.extend(speed)\n",
" power_data.extend(power)\n",
" mean_velocity_data.extend(mean_velocity)\n",
" horsepower_per_sec_data.extend(horsepower_per_sec)\n",
"\n",
" # --- Trim Data if Exceeding Max Points ---\n",
" if len(time_data) > max_points:\n",
" time_data = time_data[-max_points:]\n",
" speed_data = speed_data[-max_points:]\n",
" power_data = power_data[-max_points:]\n",
" mean_velocity_data = mean_velocity_data[-max_points:]\n",
" horsepower_per_sec_data = horsepower_per_sec_data[-max_points:]\n",
"\n",
" # --- Update Line Data ---\n",
" line_speed.set_data(time_data, speed_data)\n",
" line_power.set_data(time_data, power_data)\n",
" line_mean_velocity.set_data(time_data, mean_velocity_data)\n",
" line_horsepower_per_sec.set_data(time_data, horsepower_per_sec_data)\n",
"\n",
" # --- Update Axis Limits (Dynamic Scaling) ---\n",
" axs[0, 0].set_xlim(max(0, current_time - 10), current_time + 1)\n",
" axs[0, 0].set_ylim(0, max(speed_data) * 1.1)\n",
" axs[0, 1].set_xlim(max(0, current_time - 10), current_time + 1)\n",
" axs[0, 1].set_ylim(0, max(power_data) * 1.1)\n",
" axs[1, 0].set_xlim(max(0, current_time - 10), current_time + 1)\n",
" axs[1, 0].set_ylim(0, max(mean_velocity_data) * 1.1)\n",
" axs[1, 1].set_xlim(max(0, current_time - 10), current_time + 1)\n",
" axs[1, 1].set_ylim(0, max(horsepower_per_sec_data) * 1.1)\n",
"\n",
" # --- Redraw and Update ---\n",
" fig.canvas.draw()\n",
" fig.canvas.flush_events()\n",
" clear_output(wait=True)\n",
" display(fig)\n",
"\n",
" time.sleep(0.1) # Adjust for faster/slower updates\n",
"\n",
"except KeyboardInterrupt:\n",
" plt.ioff()\n",
" plt.show()\n",
" print(\"Dashboard stopped by user.\")\n"
2025-02-04 03:51:58 -05:00
]
}
]
}