AseemD's picture
Upload 12 files
0ee871b verified
import pandas as pd
import streamlit as st
import plotly.express as px
import streamlit.components.v1 as components
def character_evolution(character_list):
index = ['Philosopher\'s Stone',
'Chamber of Secrets',
'Prisoner of Azkaban',
'Goblet of Fire',
'Order of the Phoenix',
'Half-Blood Prince',
'Deathly Hallows']
df = pd.read_csv('character_evolution.csv')
df = df.set_index(pd.Index(index))
fig = px.line(df[character_list], markers=True)
fig.update_layout(height=550,
width=1000,
xaxis_title="",
yaxis_title="Importance",
title={'text': "Evolution of Characters over the Books",
'y': 0.95,
'x': 0.5,
'xanchor': 'center',
'yanchor': 'top'})
left, middle, right = st.columns((2, 5, 2))
with middle:
st.plotly_chart(fig, theme=None, use_container_width=False)
def main():
df = pd.read_csv('character_evolution.csv')
st.set_page_config(layout="wide")
st.title("Relationship Extraction in Harry Potter Books")
st.write('')
st.write('')
# Select Type of Analysis
tab1, tab2 = st.tabs(['Network Graphs',
'Evolution of Characters'
])
# Network Graphs
with tab1:
st.write('')
book = st.selectbox('Pick a Book to generate its graph',
['1. Philosopher\'s Stone',
'2. Chamber of Secrets',
'3. Prisoner of Azkaban',
'4. Goblet of Fire',
'5. Order of the Phoenix',
'6. Half-Blood Prince',
'7. Deathly Hallows',
'All Books Combined'])
if st.button('Show Graph'):
left, middle, right = st.columns((1, 5, 1))
with middle:
st.write('')
HtmlFile = open(f'graphs/{book}.html', 'r', encoding='utf-8')
components.html(HtmlFile.read(), height=1500, width=1000)
# Evolution of Characters
with tab2:
st.write('')
character_list = st.multiselect('Select Characters', list(df.columns)[1:])
if st.button('Plot'):
st.write('')
character_evolution(character_list)
if __name__ == '__main__':
main()