Added ChatGPT generated piechart

This commit is contained in:
2025-04-18 18:48:37 +02:00
parent 2bf664e25f
commit bfe04e9c2e
2 changed files with 20 additions and 7 deletions

View File

@@ -20,16 +20,15 @@ makedirs("output", exist_ok=True)
test = processRawMessages(chat)
total_frequency = 0
total_frequency_dict: dict[str, int] = Counter()
total_frequency_dict: dict[str, int] = {}
word_frequency_dict: dict[str, dict[str, int]] = {}
for author in test:
word_frequency_dict[author] = {}
messageList = test.get(author)
messageList = test[author]
if messageList:
wordList = Counter(processMessageList(messageList))
word_frequency_dict[author] = wordList
for count in wordList.items():
total_frequency_dict.update({author: count[1]})
total_frequency += count[1]
wordFreqList = Counter(processMessageList(messageList))
word_frequency_dict[author] = wordFreqList
total_frequency_dict[author] = sum(wordFreqList.values())
total_frequency = sum(total_frequency_dict.values())

View File

@@ -2,6 +2,7 @@ from backend.process_data import (
total_frequency_dict as freq_dict,
total_frequency as total,
)
import matplotlib.pyplot as plt
for author in freq_dict:
fraction = round(freq_dict[author] / total * 100, 1)
@@ -10,3 +11,16 @@ for author in freq_dict:
f"{str(freq_dict.get(author))+"/"+str(total):>15}",
f"({fraction:>4}%)",
)
# ChatGPT generated
# Prepare labels and sizes
labels = list(freq_dict.keys())
sizes = [v / total * 100 for v in freq_dict.values()] # percentages
# Plot
plt.figure(figsize=(8, 8)) # type: ignore
plt.pie(sizes, labels=labels, autopct="%.1f%%", startangle=90) # type: ignore
plt.title("Word Frequency Distribution by Author") # type: ignore
plt.axis("equal") # type: ignore # Equal aspect ratio for a perfect circle
plt.tight_layout()
plt.show() # type: ignore