Files
DHGeography/ratios.py
2023-10-17 18:44:36 +03:00

60 lines
1.6 KiB
Python

import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
# Read the CSV file into a Pandas DataFrame
file_path = "texts_by_period_and_location_saparated_by_periods_in_columns.csv"
df = pd.read_csv(file_path)
# Define the columns to summarize
columns_to_summarize = ["ancient", "old", "middle", "new", "late"]
# Group the data by the "place" column and calculate sums within each group
grouped = df.groupby("place")[columns_to_summarize].sum().reset_index()
# Create a bar chart using Plotly
fig = go.Figure()
# Add a bar trace for each category
for col in columns_to_summarize:
fig.add_trace(go.Bar(x=grouped["place"], y=grouped[col], name=col))
# Customize the layout
fig.update_layout(
title="Summary of Categories by Place with Selection",
xaxis_title="Place",
yaxis_title="Total Count",
xaxis=dict(categoryorder='total descending'),
barmode='group'
)
# Enable selection by clicking
fig.update_traces(selector=dict(mode='lasso'))
# Enable searching for place names
fig.update_layout(updatemenus=[
{
'buttons': [
{
'args': [{'visible': [True] * len(grouped)}],
'label': 'Show All',
'method': 'restyle'
},
{
'args': [{'visible': [grouped["place"] == place for place in grouped["place"]]}],
'label': 'Select Place',
'method': 'restyle'
}
],
'direction': 'down',
'showactive': False,
'x': 0.1,
'xanchor': 'left',
'y': 1.1,
'yanchor': 'top'
}
])
# Show the interactive graph
fig.show()