mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-05-14 05:18:46 +02:00
feat: NetworkX in Plotly Dash
This commit is contained in:
parent
b9e9475050
commit
af0578bb00
272
src/aki_prj23_transparenzregister/ui/assets/network_graph.html
Normal file
272
src/aki_prj23_transparenzregister/ui/assets/network_graph.html
Normal file
File diff suppressed because one or more lines are too long
@ -1,13 +1,14 @@
|
|||||||
"""Content of home page."""
|
"""Content of home page."""
|
||||||
import dash
|
import dash
|
||||||
from dash import html
|
|
||||||
import pandas as pd
|
|
||||||
import networkx as nx
|
import networkx as nx
|
||||||
|
import pandas as pd
|
||||||
import plotly.graph_objects as go
|
import plotly.graph_objects as go
|
||||||
from dash import Dash, Input, Output, dcc, html, callback, dash_table
|
from dash import Input, Output, callback, html
|
||||||
from aki_prj23_transparenzregister.config.config_providers import JsonFileConfigProvider
|
|
||||||
from aki_prj23_transparenzregister.utils.sql import connector, entities
|
from aki_prj23_transparenzregister.utils.networkx.networkx_data import (
|
||||||
from aki_prj23_transparenzregister.utils.networkx.networkx_data import find_top_companies, find_all_company_relations
|
find_all_company_relations,
|
||||||
|
find_top_companies,
|
||||||
|
)
|
||||||
|
|
||||||
dash.register_page(
|
dash.register_page(
|
||||||
__name__,
|
__name__,
|
||||||
@ -21,10 +22,11 @@ dash.register_page(
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Plotly figure
|
# Plotly figure
|
||||||
def networkGraph(EGDE_VAR: None) -> go.Figure:
|
def networkGraph(EGDE_VAR: None) -> go.Figure:
|
||||||
# find_all_company_relations()
|
# find_all_company_relations()
|
||||||
|
|
||||||
edges = []
|
edges = []
|
||||||
for index, row in find_all_company_relations().iterrows():
|
for index, row in find_all_company_relations().iterrows():
|
||||||
edges.append([row["company_name"], row["connected_company_name"]])
|
edges.append([row["company_name"], row["connected_company_name"]])
|
||||||
@ -92,12 +94,11 @@ def networkGraph(EGDE_VAR: None) -> go.Figure:
|
|||||||
"mirror": True,
|
"mirror": True,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
print(nx.eigenvector_centrality(network_graph))
|
print(nx.eigenvector_centrality(network_graph))
|
||||||
measure_vector = {}
|
measure_vector = {}
|
||||||
network_metrics_df = pd.DataFrame()
|
network_metrics_df = pd.DataFrame()
|
||||||
|
|
||||||
|
|
||||||
measure_vector = nx.eigenvector_centrality(network_graph)
|
measure_vector = nx.eigenvector_centrality(network_graph)
|
||||||
network_metrics_df["eigenvector"] = measure_vector.values()
|
network_metrics_df["eigenvector"] = measure_vector.values()
|
||||||
|
|
||||||
@ -120,31 +121,43 @@ def networkGraph(EGDE_VAR: None) -> go.Figure:
|
|||||||
# figure
|
# figure
|
||||||
return go.Figure(data=[edge_trace, node_trace], layout=layout)
|
return go.Figure(data=[edge_trace, node_trace], layout=layout)
|
||||||
|
|
||||||
|
|
||||||
df = find_top_companies()
|
df = find_top_companies()
|
||||||
|
with open("src/aki_prj23_transparenzregister/ui/assets/network_graph.html") as file:
|
||||||
|
html_content = file.read()
|
||||||
|
|
||||||
|
|
||||||
layout = html.Div(
|
layout = html.Div(
|
||||||
|
children=[
|
||||||
children = html.Div(
|
# NOTE lib dir created by NetworkX has to be placed in assets
|
||||||
children=[
|
html.Iframe(
|
||||||
html.Div(
|
src="assets/network_graph.html",
|
||||||
className="top_companytable_style",
|
style={"height": "100vh", "width": "100vw"},
|
||||||
children=[
|
allow="*",
|
||||||
html.Title(title="Top Ten Unternehmen", style={"align": "mid"}),
|
)
|
||||||
dash_table.DataTable(df.to_dict('records'), [{"name": i, "id": i} for i in df.columns])
|
]
|
||||||
]
|
# children = html.Div(
|
||||||
),
|
# children=[
|
||||||
html.Div(
|
# html.Div(
|
||||||
className="networkx_style",
|
# className="top_companytable_style",
|
||||||
children=[
|
# children=[
|
||||||
html.Header(title="Social Graph"),
|
# html.Title(title="Top Ten Unternehmen", style={"align": "mid"}),
|
||||||
dcc.Dropdown(['eigenvector', 'degree', 'betweeness', 'closeness'], 'eigenvector', id='demo-dropdown'),
|
# dash_table.DataTable(df.to_dict('records'), [{"name": i, "id": i} for i in df.columns])
|
||||||
"Text",
|
# ]
|
||||||
dcc.Input(id="EGDE_VAR", type="text", value="K", debounce=True),
|
# ),
|
||||||
# dcc.Dropdown(['eigenvector', 'degree', 'betweeness', 'closeness'], 'eigenvector', id='metric-dropdown'),
|
# html.Div(
|
||||||
dcc.Graph(id="my-graph"),
|
# className="networkx_style",
|
||||||
]
|
# children=[
|
||||||
)
|
# html.Header(title="Social Graph"),
|
||||||
]
|
# dcc.Dropdown(['eigenvector', 'degree', 'betweeness', 'closeness'], 'eigenvector', id='demo-dropdown'),
|
||||||
)
|
# "Text",
|
||||||
|
# dcc.Input(id="EGDE_VAR", type="text", value="K", debounce=True),
|
||||||
|
# # dcc.Dropdown(['eigenvector', 'degree', 'betweeness', 'closeness'], 'eigenvector', id='metric-dropdown'),
|
||||||
|
# dcc.Graph(id="my-graph"),
|
||||||
|
# ]
|
||||||
|
# )
|
||||||
|
# ]
|
||||||
|
# )
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -155,4 +168,4 @@ layout = html.Div(
|
|||||||
)
|
)
|
||||||
def update_output(EGDE_VAR: None) -> None:
|
def update_output(EGDE_VAR: None) -> None:
|
||||||
find_top_companies()
|
find_top_companies()
|
||||||
return networkGraph(EGDE_VAR)
|
return networkGraph(EGDE_VAR)
|
||||||
|
645
src/aki_prj23_transparenzregister/utils/networkx/Dev.ipynb
Normal file
645
src/aki_prj23_transparenzregister/utils/networkx/Dev.ipynb
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
272
src/aki_prj23_transparenzregister/utils/networkx/tmp.html
Normal file
272
src/aki_prj23_transparenzregister/utils/networkx/tmp.html
Normal file
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user