|
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() |
|
|
|
|
|
min_date = date2num(dates[0]) |
|
max_date = date2num(dates[-1]) |
|
days = int(max_date - min_date + 1) |
|
|
|
|
|
x = np.arange(min_date, max_date + 1) |
|
y = np.zeros(days) |
|
|
|
|
|
for date in dates: |
|
index = int(date2num(date) - min_date) |
|
y[index] += 1 |
|
y_sum = np.cumsum(y) |
|
|
|
|
|
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") |