import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import traceback
BJ = dict()
SH = dict()
GZ = dict()
SZ = dict()
ZB = dict()
BJ_num = dict()
SH_num = dict()
GZ_num = dict()
SZ_num = dict()
ZB_num = dict()
hlist = list()
lbj = list()
lsh = list()
lsz = list()
lgz = list()
lzb = list()
def init():
ulist = ['数据库管理员','网络工程师',
'网络管理员','系统工程师',
'信息主管','硬件工程师',
'ERP工程师','ERP实施顾问',
'erp实施顾问',
'软件实施工程师','实施工程师',
'项目实施工程师','数据库工程师',
'高级网络工程师','运维工程师']
try:
for i in range(len(ulist)):
pos = ulist[i]
BJ[pos]=SH[pos]=GZ[pos]=SZ[pos]=ZB[pos]=0
BJ_num[pos]=SH_num[pos]=GZ_num[pos]=SZ_num[pos]=ZB_num[pos]=0
hlist.append(pos)
except:
traceback.print_exc()
print('ERROR1')
def BeiJing(pos,salary,area):
try:
BJ[pos] += salary
BJ_num[pos] += 1
except:
print('ERROR2')
def ShangHai(pos,salary,area):
try:
SH[pos] += salary
SH_num[pos] += 1
except:
print('ERROR3')
def GuangZhou(pos,salary,area):
try:
GZ[pos] += salary
GZ_num[pos] += 1
except:
print('ERROR4')
def ShenZhen(pos,salary,area):
try:
SZ[pos] += salary
SZ_num[pos] += 1
except:
print('ERROR5')
def ZiBo(pos,salary,area):
try:
ZB[pos] += salary
ZB_num[pos] += 1
except:
print('ERROR6')
def chance(pos,salary,area):
try:
if(area == '北京'):
BeiJing(pos,salary,area)
elif(area == '广州'):
ShangHai(pos,salary,area)
elif(area == '深圳'):
GuangZhou(pos,salary,area)
elif(area == '上海'):
ShenZhen(pos,salary,area)
elif(area == '淄博'):
ZiBo(pos,salary,area)
except:
print('ERROR7')
def search(pos):
for i in range(len(hlist)):
u = hlist[i]
if(u == pos):
j = 1
break
else:
continue
return j
def getData(count):
num = 0
fpath = "D:\数据\数据可视化\data.txt"
with open(fpath,'r',encoding='utf-8') as f:
for i in range(count):
try:
line = f.readline()
pos = eval(line.split(',')[0])
pos = pos.split('(')[0]
pos = pos.split('-')[0]
salary = eval(line.split(',')[2])
if(salary == '面议'):
continue
salary = salary.split('-')[1]
salary = int(salary)
area = eval(line.split(',')[3])
area = area.split('-')[0]
flag = search(pos)
if(flag == 1):
num = num + 1
chance(pos,salary,area)
else:
continue
except:
continue
def updateData():
BJ['ERP实施顾问']+=BJ['erp实施顾问']
BJ_num['ERP实施顾问']+=BJ_num['erp实施顾问']
SH['ERP实施顾问']+=SH['erp实施顾问']
SH_num['ERP实施顾问']+=SH_num['erp实施顾问']
GZ['ERP实施顾问']+=GZ['erp实施顾问']
GZ_num['ERP实施顾问']+=GZ_num['erp实施顾问']
SZ['ERP实施顾问']+=SZ['erp实施顾问']
SZ_num['ERP实施顾问']+=SZ_num['erp实施顾问']
ZB['ERP实施顾问']+=ZB['erp实施顾问']
ZB_num['ERP实施顾问']+=ZB_num['erp实施顾问']
try:
for k,v in BJ.items():
if(BJ_num[k]!=0):
v = int(v/BJ_num[k])
else:
v = 0
lbj.append(v)
for k,v in SZ.items():
if(SZ_num[k]!=0):
v = int(v/SZ_num[k])
else:
v = 0
lsz.append(v)
for k,v in GZ.items():
if(GZ_num[k]!=0):
v = int(v/GZ_num[k])
else:
v = 0
lgz.append(v)
for k,v in SH.items():
if(SH_num[k]!=0):
v = int(v/SH_num[k])
else:
v = 0
lsh.append(v)
for k,v in ZB.items():
if(ZB_num[k]!=0):
v = int(v/ZB_num[k])
else:
v = 0
lzb.append(v)
lbj.pop(8)
lsh.pop(8)
lsz.pop(8)
lgz.pop(8)
lzb.pop(8)
hlist.pop(8)
except:
print('ERROR8')
def draw_figure():
wlist = [lbj,lsz,lgz,lsh,lzb]
warea = ['北京','深圳','广州','上海','淄博']
mpl.rcParams['font.size'] = 10
mpl.rcParams['font.family'] = 'simHei'
font = {'color':'orange',
'size':12}
font1 = {'color':'orange',
'size':15}
font2 = {'color':'cyan',
'size':20}
fig = plt.figure(figsize=(20,15))
ax = fig.add_subplot(111,projection='3d')
ind = np.arange(len(hlist))
x = ind
c = ['red','green','blue','yellow','purple']
for i in range(5):
y = wlist[i]
ax.bar(x,y,i,zdir='y',color=c[i],alpha=0.8)
ax.set_xticks(ind)
ax.set_xticklabels(hlist,rotation=80)
ax.set_yticks(np.arange(5))
ax.set_yticklabels(warea,rotation=-10,fontdict = font)
ax.set_xlabel(' 职 业',fontdict = font1)
ax.set_ylabel(' 地区',fontdict = font1)
ax.set_zlabel('工资',fontdict = font1)
ax.set_title('各个地区对应职位的\'最高\'薪水统计',fontdict = font2)
plt.savefig("D:\数据\hua.png")
plt.show()
def main():
init()
getData(15710)
updateData()
draw_figure()
main()
数据可视化2---3D坐标轴
最新推荐文章于 2023-04-10 07:57:30 发布