Visualization with ySights

This tutorial demonstrates ySights’ built-in visualization capabilities for creating publication-ready plots.

What You’ll Learn

  • Global trends visualization

  • Topic evolution plots

  • Profile similarity visualizations

  • Recommendation system plots


[1]:
from ysights import YDataHandler
from ysights import viz, algorithms
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline
[2]:
# Initialize data handler and network
db_path = 'ysocial_db.db'
ydh = YDataHandler(db_path)
network = ydh.social_network()

2. Topic Visualization

Topic Density Temporal Evolution

Visualize how topic interest evolves over time (requires Plotly).

[10]:
# Interactive topic evolution plot
try:
    fig = viz.topic_density_temporal_evolution(ydh, min_days=15)
    fig.show()
    print("Interactive plot showing topic evolution over time.")
    print("Hover over the heatmap to see detailed information.")
except Exception as e:
    print(f"Could not create plot: {e}")
    print("Make sure plotly is installed: pip install plotly")
../_images/tutorials_04_visualization_20_0.png
Interactive plot showing topic evolution over time.
Hover over the heatmap to see detailed information.

3. Profile Similarity Visualization

Profile Similarity Distribution

Visualize the distribution of similarity scores.

[11]:
# Calculate similarity scores
similarity = algorithms.profile_topics_similarity(ydh, network)

# Create distribution plot
fig = viz.profile_similarity_distribution([similarity], ['All Users'])
plt.tight_layout()
plt.show()

print("Distribution of profile similarity scores across all users.")
../_images/tutorials_04_visualization_23_0.png
Distribution of profile similarity scores across all users.

Similarity vs. Network Degree

Analyze the relationship between network position and profile similarity.

[12]:
# Plot similarity vs degree
fig = viz.profile_similarity_vs_degree([similarity], [network], ["All Users"])
plt.tight_layout()
plt.show()

print("Relationship between user connectivity and profile similarity.")
../_images/tutorials_04_visualization_25_0.png
Relationship between user connectivity and profile similarity.

Binned Similarity per Degree

Show average similarity for users grouped by their network degree.

[13]:
# Binned analysis
fig = viz.binned_similarity_per_degree([similarity], [network], ["All Users"], bins=10)
plt.tight_layout()
plt.show()

print("Average similarity scores grouped by network degree bins.")
../_images/tutorials_04_visualization_27_0.png
Average similarity scores grouped by network degree bins.

4. Recommendation System Visualization

Recommendations per Post

Analyze how many times posts are recommended.

[17]:
# Plot recommendation distribution
fig = viz.recommendations_per_post_distribution(ydh)
plt.tight_layout()
plt.show()

print("Distribution of recommendations per post.")
../_images/tutorials_04_visualization_30_0.png
Distribution of recommendations per post.

Recommendations vs. Reactions

Analyze the relationship between recommendations and user reactions.

[18]:
# Plot recommendations vs reactions
fig = viz.recommendations_vs_reactions(ydh)
plt.tight_layout()
plt.show()

print("Relationship between number of recommendations and reactions received.")
../_images/tutorials_04_visualization_32_0.png
Relationship between number of recommendations and reactions received.

Recommendations vs. Comments

Analyze how recommendations affect comment engagement.

[19]:
# Plot recommendations vs comments
fig = viz.recommendations_vs_comments(ydh)
plt.tight_layout()
plt.show()

print("Relationship between recommendations and comments.")
../_images/tutorials_04_visualization_34_0.png
Relationship between recommendations and comments.

5. Saving Visualizations

Save plots for publications or presentations.

[21]:
# Create and save a high-resolution plot
fig = viz.daily_contents_trends(ydh)
plt.tight_layout()

# Save as PNG
plt.savefig('daily_trends.png', dpi=300, bbox_inches='tight')
print("Saved as daily_trends.png (300 DPI)")

# Save as PDF for publications
plt.savefig('daily_trends.pdf', bbox_inches='tight')
print("Saved as daily_trends.pdf (vector format)")

plt.show()
Saved as daily_trends.png (300 DPI)
Saved as daily_trends.pdf (vector format)
../_images/tutorials_04_visualization_36_1.png

Summary

In this tutorial, you learned:

✓ Creating global trend visualizations (daily trends, emotions, hashtags)
✓ Visualizing topic evolution over time
✓ Plotting profile similarity distributions and relationships ✓ Analyzing recommendation system performance visually
✓ Saving high-quality figures for publications

Best Practices

  • Use high DPI (300+) for publication-quality figures

  • Save as PDF or SVG for vector graphics (scalable)

  • Use consistent color schemes across related plots

  • Add clear titles and labels to all axes

  • Include legends when comparing multiple datasets

  • Use grid lines sparingly for clarity

Next Steps

You now have a complete toolkit for analyzing YSocial simulations:

  • Combine insights from all tutorials for comprehensive analysis

  • Experiment with different parameters and configurations

  • Create custom analyses for your specific research questions

[ ]: