MCPcopy Create free account
hub / github.com/KentBeck/BPlusTree3 / create_visualizations

Function create_visualizations

analyze_programming_time.py:110–163  ·  view source on GitHub ↗

Create visualizations of programming time.

(sessions, daily_data)

Source from the content-addressed store, hash-verified

108
109
110def create_visualizations(sessions, daily_data):
111 """Create visualizations of programming time."""
112
113 # Create figure with subplots
114 fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(16, 12))
115 fig.suptitle(
116 "Programming Time Analysis for BPlusTree Repository",
117 fontsize=16,
118 fontweight="bold",
119 )
120
121 # 1. Daily programming time
122 dates = sorted(daily_data.keys())
123 daily_hours = [daily_data[date]["duration_minutes"] / 60 for date in dates]
124
125 ax1.bar(dates, daily_hours, alpha=0.7, color="steelblue")
126 ax1.set_title("Daily Programming Time (Hours)")
127 ax1.set_ylabel("Hours")
128 ax1.tick_params(axis="x", rotation=45)
129 ax1.grid(True, alpha=0.3)
130
131 # 2. Session timeline
132 session_starts = [s["start"] for s in sessions]
133 session_durations = [s["duration_minutes"] / 60 for s in sessions]
134
135 ax2.scatter(session_starts, session_durations, alpha=0.6, color="orange", s=50)
136 ax2.set_title("Programming Sessions Timeline")
137 ax2.set_ylabel("Session Duration (Hours)")
138 ax2.tick_params(axis="x", rotation=45)
139 ax2.grid(True, alpha=0.3)
140
141 # 3. Commits per day
142 daily_commits = [daily_data[date]["commits"] for date in dates]
143
144 ax3.bar(dates, daily_commits, alpha=0.7, color="green")
145 ax3.set_title("Commits per Day")
146 ax3.set_ylabel("Number of Commits")
147 ax3.tick_params(axis="x", rotation=45)
148 ax3.grid(True, alpha=0.3)
149
150 # 4. Session duration distribution
151 session_hours = [
152 s["duration_minutes"] / 60 for s in sessions if s["duration_minutes"] > 0
153 ]
154
155 ax4.hist(session_hours, bins=20, alpha=0.7, color="purple", edgecolor="black")
156 ax4.set_title("Session Duration Distribution")
157 ax4.set_xlabel("Session Duration (Hours)")
158 ax4.set_ylabel("Frequency")
159 ax4.grid(True, alpha=0.3)
160
161 plt.tight_layout()
162 plt.savefig("programming_time_analysis.png", dpi=300, bbox_inches="tight")
163 plt.show()
164
165
166def print_summary(sessions, daily_data):

Callers 1

mainFunction · 0.85

Calls 1

keysMethod · 0.45

Tested by

no test coverage detected