数据可视化1---直方图-折线图

来源:互联网 发布:java防止api重复提交 编辑:程序博客网 时间:2024/06/06 18:54
import matplotlib.pyplot as ptimport numpy as npimport matplotlib as mpldef ptText(ind,score):    try:        for i in range(len(ind)):            x = ind[i]            y = score[i]            pt.text(x,y,str(y),va='center',ha='center',color='red',fontsize=9)    except:        print("Error")def ClearLine():    try:        axs1 = pt.gca()        axs1.spines['left'].set_color('red')        axs1.spines['bottom'].set_color('red')        axs1.spines['right'].set_color('none')        axs1.spines['top'].set_color('none')    except:        print("Error")        def getData_score_num(movie,num_type,count):    fpath ="D:\数据\movie.txt"    with open(fpath,'r',encoding='gbk') as f:        for i in range(count):            line = f.readline()            mtype = line.split(',')[1]            mscore = float(line.split(',')[4])            t = mtype.split()                  for j in range(0,len(t),2):                if ((t[j] in movie.keys())):                    movie[t[j]] += mscore                     num_type[t[j]] += 1                else:                    movie[t[j]] = mscore                    num_type[t[j]] = 1                        def getData_mcou_cscore_cnum(movie,num_type,mtype,mscore,tnum):    for k,v in movie.items():        v = v/num_type[k]        a = "%.1f" %v        tnum.append(num_type[k])        mtype.append(k)        mscore.append(a)            def drawFigure(mtype,mscore,tnum):    mpl.rcParams['font.family']= 'simHei'    mpl.rcParams['font.size']= 14    fig = pt.figure(figsize=(20,15))    ax1 = pt.subplot(211)    pt.title('各个制片地区的平均豆瓣评分\n和此地区制作的电影个数',color='purple')    pt.xlabel('制片地区',fontsize='12',color='cyan')    pt.ylabel('制作的电影的\n平均豆瓣评分',fontsize='12',rotation=30,color='cyan')    ind = np.arange(len(mtype))    ptText(ind,mscore)    pt.bar(ind,mscore)    pt.xticks(ind,mtype,fontsize='8',rotation=50)    ClearLine()    ax2 = pt.subplot(212)    pt.xlabel('制片地区',fontsize='12',color='cyan')    pt.ylabel('制作的电影个数',fontsize='12',rotation=30,color='cyan')    ind = np.arange(len(mtype))    ptText(ind,tnum)    pt.plot(ind,tnum,label='制作地区-电影个数',color='orange')    pt.xticks(ind,mtype,fontsize='8',rotation=50)    ClearLine()    pt.savefig("D:\数据\country.png",dpi=400)    pt.legend()    pt.show()def main():    movie  = dict()    num_type = dict()    count = 1329    mtype = list()    mscore = list()    tnum = list()        getData_score_num(movie,num_type,count)    getData_mcou_cscore_cnum(movie,num_type,mtype,mscore,tnum)    drawFigure(mtype,mscore,tnum)main()


阅读全文
0 0
原创粉丝点击