Community evolution visualization for student social networks using Bluetooth proximity data
Drag, zoom, and rotate graph nodes using JUNG's graph mouse. Explore community structures visually with cluster-based layouts.
Animate community graphs across 92 days with play/pause/stop controls. Watch relationships form and dissolve over time.
Classify social interactions as friends, classmates, study groups, familiar strangers, or strangers β each color-coded on the graph.
Tune meeting duration and frequency thresholds per relationship type in real-time to explore different classification parameters.
Real-time metrics including node/edge counts, graph density, average/max degree, edge weights, isolated nodes, and hub identification.
Save visualizations as PNG images, export edge lists for further analysis, and add notes for each timestamp during research.
| Type | Location | Duration | Frequency |
|---|---|---|---|
| Friends | Public areas | > 10 min | β₯ 2/day |
| Classmates | Classrooms | > 30 min | β₯ 1/day |
| Study Groups | Classrooms | > 20 min | β€ 1/day |
| Familiar Strangers | Public/paths | < 2 min | > 1/day |
| Strangers | Public/paths | < 2 min | < 2/day |
All thresholds are adjustable at runtime via the Category Panel sliders.
Raw Bluetooth proximity data from event_3 table
Extracts meetings β IMEI pairs, start/end time, duration
Maps device nodes to IMEI identifiers
Classifies meeting locations via WiFi access points
Generates edge-list files with parameterized SQL queries
Interactive JUNG graph visualization with timeline playback
git clone https://github.com/sauravbhattacharya001/GraphVisual.git
cd GraphVisual
Set environment variables for PostgreSQL credentials:
export DB_HOST=localhost
export DB_USER=your_user
export DB_PASS=your_pass
cd Gvisual
ant build
Requires Java JDK 8+ and Apache Ant.
# Match devices β Extract meetings β Classify locations
java -cp "build/classes:lib/*" app.matchImei
java -cp "build/classes:lib/*" app.findMeetings
java -cp "build/classes:lib/*" app.addLocation
java -cp "build/classes:lib/*" gvisual.Main
GraphVisual/
βββ Gvisual/
β βββ src/
β β βββ gvisual/
β β β βββ Main.java # Swing GUI β graph panel, timeline, controls
β β β βββ edge.java # Edge model (type, vertices, weight)
β β β βββ GraphStats.java # Network metrics (density, degree, hubs)
β β β βββ ShortestPathFinder.java # Path analysis
β β βββ app/
β β βββ Network.java # Edge-list generation from DB
β β βββ Util.java # Database connection factory
β β βββ findMeetings.java # Bluetooth β meeting extraction
β β βββ addLocation.java # Meeting location classification
β β βββ matchImei.java # Device β IMEI matching
β βββ test/ # JUnit test suites
β βββ lib/ # JUNG, PostgreSQL JDBC, Commons IO
β βββ images/ # UI icons
βββ docs/ # This documentation site
βββ .github/workflows/ # CI, CodeQL, Pages, Auto-label
βββ DATABASE.md # Database schema reference