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

import matplotlib.pyplot as pt
import numpy as np
import matplotlib as mpl

def 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值