python图标中文_Python数据统计(用4种图表显示)-Go语言中文社区

matplotlib画四种图表的实例

def findPositionClassify(self):

sql = "select avg(job_meansalary),job_taskid,task_title from job_position,job_collect_task where "+

"job_position.job_taskid = job_collect_task.task_id group by job_taskid,task_title"

result = self.execute(sql,params=None)

self.commit()

return self.fetch()

pass

def findCityPositionClassify(self):

sql = "select avg(t1.job_meansalary) as m,t1.job_taskid,t2.task_title,t1.job_city from "+

"job_position t1 left join job_collect_task t2 "+

"on t1.job_taskid = t2.task_id group by job_taskid,job_city,t2.task_title order by "+

"t1.job_taskid asc,m desc"

result = self.execute(sql,params=None)

self.commit()

return self.fetch()

pass

def bingshuju(self):

sql = "select avg(job_position.job_meansalary),job_city from job_position where job_taskid = '1' group by job_taskid,job_city order by avg(job_position.job_meansalary) desc;"

result = self.execute(sql, params=None)

self.commit()

return self.fetch()

pass

def sandiantu(self):

sql = "select job_taskid,job_city,avg(job_position.job_meansalary) from job_position group by job_taskid,job_city;"

result = self.execute(sql, params=None)

self.commit()

return self.fetch()

pass

调用函数并存成json文件

import json

jp = JobPositionDao()

print(jp.findCityPositionClassify()) #点线图的数据

print(jp.findPositionClassify()) #3个语言的平均工资(柱状图)

print(jp.bingshuju()) #前五个是饼图数据(城市的平均工资占比)

print(jp.sandiantu()) #每个语言每个城市的平均薪资

print(jp.textfunc()) #工作需求,用于jieba

with open('F:\py\pythonsientific\day05\2.json','w')as fp:

dict1 = {}

for i in jp.findCityPositionClassify():

dict1[i[0]]={i[2]:i[3]}

a = json.dumps(dict1)

json.dump(a,fp)

with open('F:\py\pythonsientific\day05\3.json','w',encoding='utf-8')as fp:

dict3 = {}

for i in jp.findPositionClassify():

dict3[i[0]] = {i[1]:i[2]}

c = json.dumps(dict3)

json.dump(c,fp)

with open('F:\py\pythonsientific\day05\4.json','w',encoding='utf-8')as fp:

dict4 = {}

for i in jp.bingshuju():

dict4[i[0]] = i[1]

d = json.dumps(dict4)

json.dump(d,fp)

with open('F:\py\pythonsientific\day05\5.json','w',encoding='utf-8')as fp:

dict5 = {}

for i in jp.sandiantu():

dict5[i[1]] = i[2]

e = json.dumps(dict5)

json.dump(e,fp)

with open('F:\py\pythonsientific\day05\6.json','w',encoding='utf-8')as fp:

list1 = []

for i in jp.textfunc():

list1.append(i[0])

f = json.dumps(list1)

json.dump(f,fp)

jp.close()

将获取的信息用图表的形式展现出来(一张画布,四个图表)

#引入需要的模块

import numpy as np

import matplotlib.pyplot as plt

import json

#用来正常显示中文标签

plt.rcParams['font.sans-serif'] = ['SimHei']

#用来正常显示负号

plt.rcParams['axes.unicode_minus'] = False

figure = plt.figure() #创建画布

#点线图--上海和北京不同城市的python薪资

subplot1 = figure.add_subplot(2,2,1) #图标占位,2行2列第1个(下面的3幅图一样)

with open('2.json','r')as fp: #打开文件

a = json.load(fp)

data = json.loads(a)

print(data)

list1 = []

list2 = []

list3 = []

list4 = []

list5 = []

list6 = []

list7 = []

for i in data.items():

a = i[1]

for j in a.items():

b = j[0]

if j[0]=='Python职位数据采集':

list1.append(i)

elif j[0]=='Java职位数据采集':

list2.append(i)

else:

pass

print(list1)

print(list2)

for i in list1:

a = i[0]

for j in i[1].items():

b = j[1]

list3.append((a,b))

array2d = np.array(list3)

array2d = array2d.T

for i in list2:

a = i[0]

for j in i[1].items():

b = j[1]

list4.append((a,b))

array2e = np.array(list4)

array2e = array2e.T

print(array2d)

print(array2e)

for i in array2d[1]:

for j in array2e[1]:

if i == j:

list5.append(i)

xdata = np.array(list5)

print(xdata)

for i in xdata:

for j in array2d.T:

if i==j[1]:

list6.append(j[0])

for i in xdata:

for j in array2e.T:

if i==j[1]:

list7.append(j[0])

ydata = np.array(list6).astype(np.float)

print(ydata)

zdata = np.array(list7).astype(np.float)

print(zdata)

subplot1.plot(xdata,ydata,'b-',label='python')

subplot1.plot(xdata,zdata,'r-',label='java')

subplot1.scatter(xdata,ydata,s=50,c='g',alpha=0.5)

subplot1.scatter(xdata,zdata,s=50,c='g',alpha=0.5)

subplot1.legend(loc='best')

#柱状图--python、Java、php三种语言的薪资

subplot2 = figure.add_subplot(2,2,2)

with open('3.json','r')as fp:

a = json.load(fp)

data = json.loads(a)

print(data)

lista = []

listb = []

listc = []

for i in data.items():

lista.append(i[0])

for j in i[1].items():

listb.append(j[0])

listc.append(j[1])

# print(lista)

# print(listb)

# print(listc)

xlabel = np.array(listc)

x = np.array(listb).astype(np.float)

y = np.array(lista).astype(np.float)

bars = plt.bar(x,y,width=0.3) #width:柱子宽度 #返回的是bar柱子对象

subplot2.set_ylabel("salary/month")

subplot2.set_xlabel("position")

subplot2.set_xticks(x)

subplot2.set_xticklabels(xlabel)

subplot2.grid(linestyle='--') #添加背景网格线

#设置颜色

i = 0

for bar in bars:

bar.set_color('#'+str(111111 + i))

i += 225540

pass

for x,y in zip(x,y):

subplot2.text(x,y+0.05,'{0}yuan/month'.format(y),ha='center',va='bottom')

#饼图--python语言5个城市的薪资占比

subplot3 = figure.add_subplot(2,2,3)

with open('4.json','r')as fp:

a = json.load(fp)

data = json.loads(a)

print(data)

listx = []

listy = []

i = 0

for j in data.items():

if i<5:

i += 1

listx.append(j[0])

listy.append(j[1])

# print(listx)

# print(listy)

result = np.array(listx).astype(np.float)/np.sum(np.array(listx).astype(np.float))

print(result)

labels = ['%s %.2f %%' %(y,np.float(x * 100)) for x,y in zip(result,np.array(listy))]

subplot3.pie(result,colors=['#008888','#006600','#FF0000','#00FF00','#0000FF'],labels=labels)

#散点图--不同语言不同城市的平均薪资

subplot4 = figure.add_subplot(2,2,4)

with open('5.json','r')as fp:

a = json.load(fp)

data = json.loads(a)

print(data)

listm = []

listn = []

for i in data.items():

listm.append(i[0])

listn.append(i[1])

x = np.array(listm)

y = np.array(listn)

subplot4.scatter(x,y,s=20,c='b',marker='*') #s大小,c颜色,alpha透明度,marker点的形状默认o

plt.show()

最后结果:

511c939339242f73d495ea5badcb3dec.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值