#!/usr/bin/env python # coding: utf-8 # In[6]: physical_health = 4 mental_health = 3 social_life = 3 academic = 10 relationship = 5 perseverance = 5 financial_support = 7 # the index is calculated by the average of the 7 factors divided by the stdev of the 7 values import math average = (physical_health + mental_health + social_life + academic + relationship + perseverance + financial_support) / 7 stdev = math.sqrt((math.pow(physical_health - average, 2) + math.pow(mental_health - average, 2) + math.pow(social_life - average, 2) + math.pow(academic - average, 2) + math.pow(relationship - average, 2) + math.pow(perseverance - average, 2) + math.pow(financial_support - average, 2)) / 7) index = average / stdev print("The wlb index is: " + str(index)) # In[7]: # use sns to draw a figure consists of 7 horizontal bars with different colors import seaborn as sns import matplotlib.pyplot as plt sns.set(style="whitegrid") fig, ax = plt.subplots(figsize=(10, 5), dpi=200) ax = sns.barplot(x=[physical_health, mental_health, social_life, academic, relationship, perseverance, financial_support], y=["Physical Health", "Mental Health", "Social Life", "Academic", "Relationship", "Perseverance", "Financial Support"], palette="Blues_d") ax.set(xlim=(0, 10), ylabel="", xlabel="Ability Level") plt.title("Master WLB Index of Jack: " + str(round(index, 2))) plt.show() # In[13]: # create a gradio app as interface # display the sns figure in the interface using gradio.Plot import gradio as gr def wlb_index(physical_health, mental_health, social_life, academic, relationship, perseverance, financial_support): average = (physical_health + mental_health + social_life + academic + relationship + perseverance + financial_support) / 7 stdev = math.sqrt((math.pow(physical_health - average, 2) + math.pow(mental_health - average, 2) + math.pow(social_life - average, 2) + math.pow(academic - average, 2) + math.pow(relationship - average, 2) + math.pow(perseverance - average, 2) + math.pow(financial_support - average, 2)) / 7) index = average / stdev sns.set(style="whitegrid") fig, ax = plt.subplots(figsize=(10, 5), dpi=200) ax = sns.barplot(x=[physical_health, mental_health, social_life, academic, relationship, perseverance, financial_support], y=["Physical Health", "Mental Health", "Social Life", "Academic", "Relationship", "Perseverance", "Financial Support"], palette="Blues_d") ax.set(xlim=(0, 10), ylabel="", xlabel="Ability Level") plt.title("Master WLB Index of Jack: " + str(round(index, 2))) return plt iface = gr.Interface(fn=wlb_index, inputs=["number", "number", "number", "number", "number", "number", "number"], outputs="plot") iface.launch() # In[ ]: