The simulation has been done on synthetic dataset. This visualizes the rankings of authors based on a composite score derived from their publication and citation data. The dashboard allows users to interactively explore a network of authors and view detailed metrics for each author.
-
Data Loading:
- The data is loaded from a JSON file (
authors.json
), which contains information about authors, including their citations, publications, and collaborators.
- The data is loaded from a JSON file (
-
Composite Score Calculation:
- Each author's ranking is computed based on a composite score that considers:
- Total citations
- Self-citation rate
- Collaboration dependency
- The formula used to calculate the composite score is:
(citations * 0.4) - (self_citation_rate * 20) - (collaborator_dependency * 10)
- The authors are sorted by this score, with higher scores indicating higher ranks.
- Each author's ranking is computed based on a composite score that considers:
-
Network Visualization:
- A directed graph is created using
NetworkX
, where each author is represented as a node. The graph layout is generated using thespring_layout
algorithm, which simulates a force-directed graph. - Authors are connected based on collaboration patterns, and the nodes are sized and colored based on their rank.
- A directed graph is created using
-
Interactive Dash Application:
- The dashboard is built using
Dash
andPlotly
. It features an interactive network graph where users can click on any author node to view more details about that author. - When a user clicks on a node, the following author metrics are displayed:
- Rank
- Composite Score
- Citations
- Publications
- Self-citation Rate
- The dashboard is built using
dash
plotly
networkx
json
You can install the required dependencies using pip:
pip install dash plotly networkx
from author_ranking import load_authors_data, generate_rankings, create_author_graph, generate_graph_figure
# Load data
authors_data = load_authors_data('path_to/authors.json')
# Generate rankings
rankings = generate_rankings(authors_data)
# Create a graph
G = create_author_graph(rankings)
# Generate a graph figure
fig = generate_graph_figure(G)