countvis / app.py
tykimos's picture
Update app.py
8e8b7aa
import gradio as gr
import matplotlib.pyplot as plt
from matplotlib.dates import date2num
import numpy as np
import io
from PIL import Image
import pandas as pd
def countvis(fobj):
df = pd.read_csv(fobj.name, sep=",")
dates = pd.to_datetime(df['date']).dt.date.tolist()
dates.sort()
# Get some auxilliary values
min_date = date2num(dates[0])
max_date = date2num(dates[-1])
days = int(max_date - min_date + 1)
# Initialize X and Y axes
x = np.arange(min_date, max_date + 1)
y = np.zeros(days)
# Iterate over dates, increase registration array
for date in dates:
index = int(date2num(date) - min_date)
y[index] += 1
y_sum = np.cumsum(y)
# Plot
plt.figure(dpi=200)
plt.plot_date(x, y_sum, xdate=True, ydate=False, ls='-', ms=0, color='#16171E')
plt.fill_between(x, 0, y_sum, facecolor='#D0F3FF')
plt.xticks(rotation=15)
plt.title('Cumulative Growth')
img_buf = io.BytesIO()
plt.savefig(img_buf, format='png')
im = Image.open(img_buf)
return im
iface = gr.Interface(fn=countvis, inputs="file", outputs="image", allow_flagging="never")
iface.launch(debug="True")