# -*- coding: utf-8 -*-
"""
Created on Thu Oct 14 15:44:45 2021
@author: 18200
"""
import streamlit as st
import warnings
import pandas as pd
from matplotlib import pyplot
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
import numpy as np
import plotly.graph_objects as go
warnings.filterwarnings('ignore') #ignore warnings
st.set_option('deprecation.showPyplotGlobalUse', False)
import plotly.express as px
st.balloons()
#设置标题
st.title("长三角城市创新能力数据分析")
st.markdown('长三角城市群作为祖国经济发展最高速的片区之一,在高度相似的区位因素下呈现百花齐放的发展态势。为更好的展示城市之间的数据异同,特建立如下可视化网站,使得使用者可以直观发掘数据的内涵。操作面板位于页面左侧,数据分析位于页面正中。')
#导入数据
df = pd.read_csv('')
st.subheader("第一部分:独立城市数据")
#选择城市
st.sidebar.markdown("第一部分:独立城市数据")
y = st.sidebar.selectbox("请选择所要查看的城市",df['城市'].unique())
#城市所有基础数据
def people():
fig = plt.figure()
a = df.loc[df['城市']==y]
an = a.loc[:,'城市总人口']
cn = df['年份'].unique()
trace=go.Scatter(x=cn,y=an,mode='lines+markers')
data=[trace]
fig = go.Figure(data)
fig.update_layout(title='城市人口情况',xaxis_title="年份",yaxis_title="总人口(万人)")
st.plotly_chart(fig)
def GDP():
fig = plt.figure()
a = df.loc[df['城市']==y]
bn = a.loc[:,'GDP']
dn = a.loc[:,'人均GDP']
cn = df['年份'].unique()
trace1=go.Bar(x=cn,y=bn,name='GDP',yaxis='y1')
trace2=go.Scatter(x=cn,y=dn,name='人均GDP',mode='lines+markers',yaxis='y2')
data=[trace1,trace2]
fig = go.Figure(data)
fig.update_layout(title='GDP及人均GDP情况',
xaxis_title="年份",yaxis_title="亿元",
yaxis1_range=[0,40000],
yaxis2=dict(title="元", overlaying='y', side="right"),
yaxis2_range=[0,170000],
legend = dict(
x = 0,#int,图例位置的x值
y = 0,#int,图例位置的y值
))
st.plotly_chart(fig)
def jinchukou():
fig = plt.figure()
a = df.loc[df['城市']==y]
bn = a.loc[:,'进口总值']
dn = a.loc[:,'出口总值']
cn = df['年份'].unique()
trace1=go.Bar(x=cn,y=bn,name='进口总额',yaxis='y1')
trace2=go.Bar(x=cn,y=dn,name='出口总额')
data=[trace1,trace2]
fig = go.Figure(data)
fig.update_layout(title='城市贸易进出口情况',
xaxis_title="年份",yaxis_title="亿元",
legend = dict(
x = 0,#int,图例位置的x值
y = 0,#int,图例位置的y值
))
st.plotly_chart(fig)
from plotly.subplots import make_subplots
def chanye():
fig = plt.figure()
a = df.loc[df['城市']==y]
bn = a.loc[:,'第一产业增加值']
dn = a.loc[:,'第二产业增加值']
en = a.loc[:,'第三产业增加值']
cn = df['年份'].unique()
trace1=go.Bar(x=cn,y=bn,name='第一产业增加值')
trace2=go.Bar(x=cn,y=dn,name='第二产业增加值')
trace3=go.Bar(x=cn,y=en,name='第三产业增加值')
fig = make_subplots(rows=3, # 将画布分为三行
cols=1, # 将画布分为一列
subplot_titles=["第一产业增加值",
"第二产业增加值",
"第三产业增加值",
"trace4的标题"], # 子图的标题
x_title="年份",
y_title="亿元"
)
# 添加轨迹
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 2, 1)
fig.append_trace(trace3, 3, 1)
fig.update_layout(title='城市三级产业增长情况')
st.plotly_chart(fig)
st.markdown('宏观经济')
with st.expander("展开"):
with st.container():
people()
GDP()
jinchukou()
chanye()
#城市居民生活
def income():
fig = plt.figure()
a = df.loc[df['城市']==y]
bn = a.loc[:,'城市居民人均可支配收入']
dn = a.loc[:,'城市居民平均消费支出']
en = a.loc[:,'农村居民人均可支配收入']
fn = a.loc[:,'农村居民平均消费支出']
cn = df['年份'].unique()
trace1=go.Bar(x=cn,y=bn,name='城市居民人均可支配收入')
trace2=go.Bar(x=cn,y=dn,name='城市居民平均消费支出')
trace3=go.Bar(x=cn,y=en,name='农村居民人均可支配收入')
trace4=go.Bar(x=cn,y=fn,name='农村居民平均消费支出')
fig = make_subplots(rows=2,
cols=2,
subplot_titles=["城市居民人均可支配收入",
"城市居民平均消费支出",
"农村居民人均可支配收入",
"农村居民平均消费支出"], # 子图的标题
x_title="年份",
y_title="元"
)
# 添加轨迹
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig.append_trace(trace3, 2, 1)
fig.append_trace(trace4, 2, 2)
fig.update_layout(title='城市居民收支情况')
st.plotly_chart(fig)
def shiye():
a = df.loc[df['城市']==y]
bn = a.loc[:,'城镇登记失业率']
cn = df['年份'].unique()
trace0 = go.Pie(labels=cn,values=bn,hole=0.7)
fig = go.Figure(data=[trace0], layout={"title": "城镇失业率", })
st.plotly_chart(fig)
st.markdown('居民生活')
with st.expander("展开"):
with st.container():
income()
shiye()
def college():
a = df.loc[df['城市']==y]
bn = a.loc[:,'高等学校数']
cn = df['年份'].unique()
trace0 = go.Pie(labels=cn,values=bn,hole=0.7)
fig = go.Figure(data=[trace0], layout={"title": "高等学校数量", })
st.plotly_chart(fig)
def stu():
fig = plt.figure()
a = df.loc[df['城市']==y]
bn = a.loc[:,'高等学校专任教师数']
dn = a.loc[:,'高等学校在校学生数']
en = a.loc[:,'高等学校毕业生数']
cn = df['年份'].unique()
trace1=go.Bar(x=cn,y=bn,name='高等学校专任教师数',yaxis='y1')
trace2=go.Bar(x=cn,y=dn,name='高等学校在校学生数')
trace3=go.Bar(x=cn,y=en,name='高等学校毕业生数')
data=[trace1,trace2,trace3]
fig = go.Figure(data)
fig.update_layout(title='高校师资情况',
xaxis_title="年份",yaxis_title="人",
legend = dict(
x = 0,#int,图例位置的x值
y = 0,#int,图例位置的y值
))
st.plotly_chart(fig)
def zhuanli():
fig = plt.figure()
a = df.loc[df['城市']==y]
bn = a.loc[:,'专利申请量']
dn = a.loc[:,'专利授权量']
en = a.loc[:,'发明专利授权量']
fn = a.loc[:,'教育经费支出']
cn = df['年份'].unique()
trace1=go.Bar(x=cn,y=bn,name='专利申请量')
trace2=go.Bar(x=cn,y=dn,name='专利授权量')
trace3=go.Bar(x=cn,y=en,name='发明专利授权量')
trace4=go.Bar(x=cn,y=fn,name='教育经费支出')
fig = make_subplots(rows=2,
cols=2,
subplot_titles=["专利申请量
评论0