| import gradio as gr |
| import pygal |
| import requests |
| import pandas as pd |
| import pandas_bokeh |
| import matplotlib.pyplot as plt,mpld3 |
| import seaborn as sns |
| import bokeh.plotting as bk |
| from bokeh.embed import json_item |
| from highcharts import Highchart |
| import pyecharts |
| from pyecharts.charts import Bar |
| import cufflinks as cf |
| import plotly.offline |
| cf.go_offline() |
| cf.set_config_file(offline=True, world_readable=True) |
|
|
| |
| |
| |
| def pd_bar(): |
| pd.options.plotting.backend='matplotlib' |
| plt.close('all') |
| df = pd.DataFrame({'课程':['语文', '数学', '英语'], '成绩':[66, 98, 78]}) |
| ax = df.plot(x='课程',y='成绩',kind='bar',title='chinese word error!', color=["red","green","purple"]) |
| ax.table(cellText=df.values,colLabels=df.columns,loc='bottom',colLoc='center') |
| return ax.get_figure() |
| def plt_line(): |
| plt.close('all') |
| df = pd.DataFrame({'课程':['yw', 'sx', 'yy'], '成绩':[66, 98, 100]}) |
| plt.plot(df['成绩'],color='green',linestyle='dashed',marker='o',markerfacecolor='blue',markersize=20) |
| return plt.gcf() |
| def pd_plotly(): |
| pd.options.plotting.backend='plotly' |
| df = pd.DataFrame({'课程':['语文', '数学', '英语'], '成绩':[66, 98, 78]}) |
| ax = df.plot.bar(x='课程',y='成绩') |
| return ax |
| def pd_bokeh(): |
| pd.set_option('plotting.backend','pandas_bokeh') |
| pandas_bokeh.output_file("test.html") |
| df=pd.DataFrame({'班级':['天','地','玄','黄'],'姓名':['诸葛清明','公孙轩辕','李耳','石破天'],'成绩':[66,78,99,85]}) |
| tt=df.plot_bokeh.bar(x='姓名',y='成绩',ylabel="群员吹水战绩",title="吹牛逼你们是认真的",alpha=0.6,figsize=(600,300),show_figure=False,legend="bottom_right") |
| pandas_bokeh.save(tt) |
| p = bk.figure(plot_width=400,plot_height=400) |
| p.patch([1,2,3,4,5],[6,7,8,7,3],alpha=0.5,line_width=2) |
| item_text = json_item(p, "plotDiv") |
| return 'test.html',item_text |
| def pyecharts1(): |
| bar = Bar() |
| bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) |
| bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) |
| bar.render('test.html') |
| with open('test.html',"r",encoding="utf-8") as aa: |
| bb=aa.read() |
| return 'test.html',bb |
| def cff(): |
|
|
| df=pd.DataFrame([[0.2,0.4,0.6],[0.4,0.3,0.4],[0.4,0.5,0.2],[0.5,0.4,0.4]],columns=['a','b','c']) |
| cfft=df.iplot(kind='bubble',x='a',y='b',size='c') |
| return cfft |
| def seab(): |
| df = pd.DataFrame({'a': range(10), 'b': [1,3,1,4,5,2,0,5,8,5]}) |
| g=sns.relplot(x="a", y="b", kind="line", data=df) |
| return plt |
| def pyg2(): |
| return '' |
| |
| |
| |
| |
| def pyhighchats(): |
| H = Highchart() |
| data = list(range(1,20)) |
| H.add_data_set(data,'line') |
| H.save_file('test.html') |
| return 'test.html' |
| def d3_js(): |
| fig=plt.figure() |
| obj,=plt.plot([3,1,4,1,5]) |
| rr=mpld3.fig_to_html(fig) |
| return rr |
| def pygalc(): |
| aa=pygal.Bar()(1,3,3,7)(1,6,6,4) |
| bb=aa.render(is_unicode=True) |
| cc=aa.render_data_uri() |
| aa.render_to_file("test.svg") |
| return 'test.svg',bb,cc,bb |
| |
| demo=gr.Blocks() |
| with demo: |
| gr.Markdown("# <center>图表渲染测试") |
| with gr.Tabs(): |
| with gr.TabItem("pd_bar"): |
| pd_button=gr.Button("pd_bar>>") |
| pd_output=gr.Plot(label="pd_chart1") |
| pd_button.click(pd_bar, inputs=[], outputs=pd_output,api_name='pd_bar') |
| with gr.TabItem("plt_line"): |
| plt_button=gr.Button("plt_line>>") |
| plt_output=gr.Plot(label="plt_chart") |
| plt_button.click(plt_line, inputs=[], outputs=plt_output,api_name='plt_line') |
| with gr.TabItem("pd_plotly"): |
| plotly_button=gr.Button("pd_plotly>>") |
| plotly_output=gr.Plot(label="plotly_chart") |
| plotly_button.click(pd_plotly, inputs=[], outputs=plotly_output,api_name='pd_plotly') |
| with gr.TabItem("pd_bokeh"): |
| bokeh_button=gr.Button("pd_bokeh>>") |
| bokeh_output=[gr.File(label="bokeh_chart"),gr.Plot(label="bokeh_chart2")] |
| bokeh_button.click(pd_bokeh, inputs=[], outputs=bokeh_output,api_name='pd_bokeh') |
| with gr.TabItem("pyecharts"): |
| ehc_button=gr.Button("pyecharts>>") |
| ehc_output=[gr.File(label="pyecharts_chart"),gr.Textbox(label="pyecharts_chart2",lines=18)] |
| ehc_button.click(pyecharts1, inputs=[], outputs=ehc_output,api_name='pyecharts') |
| with gr.TabItem("cufflinks"): |
| cff_button=gr.Button("cufflinks>>") |
| cff_output=gr.Plot(label="cufflinks_chart") |
| cff_button.click(cff, inputs=[], outputs=cff_output,api_name='cuffl') |
| with gr.TabItem("seaborn"): |
| sb_button=gr.Button("seaborn>>") |
| sb_output=gr.Plot(label="seaborn_chart") |
| sb_button.click(seab, inputs=[], outputs=sb_output,api_name='seaborn') |
| with gr.TabItem("pyg2plot"): |
| g2plot_button=gr.Button("pyg2plot>>") |
| g2plot_output=gr.Plot(label="pyg2plot_chart") |
| g2plot_button.click(pyg2, inputs=[], outputs=g2plot_output,api_name='pyg2plot') |
| |
| |
| |
| |
| with gr.TabItem("pyhighcharts"): |
| pyhc_button=gr.Button("pyhc>>") |
| pyhc_output=gr.File(label="pyhc_chart") |
| pyhc_button.click(pyhighchats, inputs=[], outputs=pyhc_output,api_name='pyhcharts') |
| with gr.TabItem("d3JS"): |
| d3_button=gr.Button("D3JS>>") |
| d3_output=gr.Textbox(label="D3_chart1",lines=18) |
| d3_button.click(d3_js, inputs=[], outputs=d3_output,api_name='d3_js') |
| with gr.TabItem("pygal"): |
| pyga_button=gr.Button("pygal>>") |
| pyga_output=[gr.File(label="pygal_chart"),gr.Textbox(label="pygal_chart1",lines=10),gr.Textbox(label="pygal_chart2",lines=3),gr.HTML(label="html渲染")] |
| pyga_button.click(pygalc, inputs=[], outputs=pyga_output,api_name='pygal') |
|
|
| with gr.TabItem("echarts"): |
| with gr.Accordion("可伸缩扩展布局容器",open=False): |
| gr.Markdown("测试伸缩布局") |
| |
| htmls=''' |
| <html> |
| <head><style type="text/css">body {margin: 0;}#main2 {height: 100%;}</style></head> |
| <body><div id="main2"></div> |
| <script src="https://cdn.jsdelivr.net/npm/echarts@5.0.2/dist/echarts.min.js"></script> |
| <script>var myChart = echarts.init(document.getElementById("main2")); |
| option = {tooltip:{formatter:"{a} <br/>{b} : {c}%"},series:[{name:'业务指标',type:'gauge',detail:{formatter:'{value}%'},axisLine:{lineStyle:{width:20}},splitLine:{length:20},data:[{value:50,name:'完成率'}]}]}; |
| myChart.setOption(option); |
| </script></body> |
| </html> |
| ''' |
| gr.HTML(htmls) |
| demo.launch() |