Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9ffee2e

Browse files
some changes
1 parent f055077 commit 9ffee2e

File tree

2 files changed

+32
-38
lines changed

2 files changed

+32
-38
lines changed

‎analysis.py‎

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,48 @@
1+
import numpy as np
12
import matplotlib.pyplot as plt
23
import json
34

45
def analyze_data(data):
56
numbers = data.get("numbers", [])
6-
77
if not numbers:
8-
return {"error": "No numbers provided for analysis"}
8+
return {"error": "No numbers provided"}
99

10-
average = sum(numbers) / len(numbers)
11-
12-
result = {
13-
"average": average,
14-
"category": "High" if average > 50 else "Low",
15-
"input_size": len(numbers),
10+
arr = np.array(numbers)
11+
mean = arr.mean()
12+
median = np.median(arr)
13+
std_dev = arr.std()
14+
# Possibly detect outliers
15+
outliers = arr[np.abs(arr - mean) > 2 * std_dev]
16+
17+
return {
18+
"mean": mean,
19+
"median": median,
20+
"std_dev": std_dev,
21+
"outliers": outliers.tolist()
1622
}
17-
return result
1823

1924
def visualize_analysis(result, filename="./output/analysis_visualization.png"):
20-
# Extract values
21-
average = result["average"]
22-
category = result["category"]
23-
input_size = result["input_size"]
24-
25-
# Visualization
26-
plt.figure(figsize=(8, 5))
27-
28-
# Bar chart for numeric values
29-
metrics = ["Average", "Input Size"]
30-
values = [average, input_size]
31-
colors = ["blue", "green"]
32-
33-
plt.bar(metrics, values, color=colors, alpha=0.7)
34-
35-
# Add titles and labels
36-
plt.title(f"Data Analysis Visualization(METACALL)\nCategory: {category}", fontsize=14, pad=15)
37-
plt.xlabel("Metrics", fontsize=12)
38-
plt.ylabel("Values", fontsize=12)
39-
40-
# Add value labels on top of bars
41-
for i, value in enumerate(values):
42-
plt.text(i, value + 1, f"{value:.2f}", ha="center", va="bottom", fontsize=10)
43-
44-
# Grid for better readability
45-
plt.grid(axis="y", linestyle="--", alpha=0.7)
46-
47-
# Save the plot to a file
25+
mean = result["mean"]
26+
std_dev = result["std_dev"]
27+
outliers = result["outliers"]
28+
29+
fig, ax = plt.subplots(2, 1, figsize=(8, 8))
30+
31+
# Top subplot: bar chart
32+
metrics = ["Mean", "Standard Deviation"]
33+
values = [mean, std_dev]
34+
ax[0].bar(metrics, values, color=["blue", "red"])
35+
ax[0].set_title("Basic Statistics", fontsize=14)
36+
37+
# Bottom subplot: outliers
38+
ax[1].bar(range(len(outliers)), outliers, color="orange")
39+
ax[1].set_title("Detected Outliers", fontsize=14)
40+
4841
plt.tight_layout()
4942
plt.savefig(filename, dpi=300)
5043
plt.close()
51-
print(f"Visualization saved as {filename}")
44+
print(f"Visualization saved as {filename}")
45+
5246

5347

5448
def process_message(message):

‎output/analysis_visualization.png‎

4.12 KB
Loading[フレーム]

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /