美文网首页
matplotlib/seaborn画图

matplotlib/seaborn画图

作者: 微雨旧时歌丶 | 来源:发表于2019-04-11 22:08 被阅读0次
    • displot分布图
    (fx,fy)=(900,600)
    my_dpi=150
    fig=plt.figure(figsize=(fx/my_dpi, fy/my_dpi), dpi=my_dpi)
    ax = fig.add_subplot(1,1,1)
    sns.distplot(a = list(data_dict.values()),)  # 输入的是 列表 类型
    ax.set_xlabel("Number of arrival train")
    ax.set_ylabel("Distribution")
    
    • 条形图
    (fx,fy)=(900,600)
    my_dpi=150
    fig=plt.figure(figsize=(fx/my_dpi, fy/my_dpi), dpi=my_dpi)
    ax = fig.add_subplot(1,1,1)
    sorted_difs = sorted(difs.items(),key=lambda item:item[1],reverse=True)
    names = [name for name,dif in sorted_difs[:10]] # names是横轴显示的文本
    dif = [dif for name,dif in sorted_difs[:10]] #dif是数据
    rects=plt.bar(range(len(dif)), dif, color='r')
    index=list(range(len(dif)))
    index=[float(c) for c in index]
    plt.xticks(index,names,   rotation=90)
    plt.xlabel('Stations')# X轴标题
    plt.ylabel('abs(departure number - arrival number)')
    
    • plot,一张图里画多条线,且有每条线的legend
        plt.rcParams['savefig.dpi'] = 150 #图片像素
        plt.rcParams['figure.dpi'] = 150 #分辨率
        
        fig = plt.figure()  
        count = 0  
        for name,c in sorted_count:
            times = []
            for i in range(len(df_list[0])): # 通过循环画多条线
                s = df_list[2][i]
                if s == name:
                    time = max(df_list[3][i],df_list[4][i])
                    times.append(time)
            ddd=fenduan(times)
            hours = sorted(ddd.keys()) # x
            plt.plot(hours,[len(ddd[h]) for h in hours ] ,label=name  ) # y
            plt.legend(bbox_to_anchor=(0., 1.05, 1., .105), loc=0,
               ncol=2, mode="expand", borderaxespad=0.) # 设置legend
            plt.xlabel("Hour of day")
            plt.ylabel("Number of trains per hour")
            count+=1
            if count>=4:
                break
        plt.savefig(file_path+country+'.png', dpi=300) #指定分辨率保存
        plt.close()
    
    • 做成dataframe的barplot
    data = defaultdict(list)
    for n in ['Wien Hbf','Wien Meidling','Linz Hbf','St Pölten Hbf']:
        data['country'].append('Austria')
        data['ratio'].append(froms_dict[n]/tos_dict[n])
        data['station'].append(n)
    
    for n in ['Lyon Part-Dieu','Lille Flandres','Paris Montparnasse','Paris Nord']:
        data['country'].append('France')
        data['ratio'].append(froms_dict[n]/tos_dict[n])
        data['station'].append(n)
    
    for n in ['München Hbf','Frankfurt (Main) Hbf','Köln Hbf','Hamburg Hbf']:
        data['country'].append('Germany')
        data['ratio'].append(froms_dict[n]/tos_dict[n])
        data['station'].append(n)
        
    for n in ['Birmingham New Street','Reading','Manchester Piccadilly','Leeds']:
        data['country'].append('Great Britain')
        data['ratio'].append(froms_dict[n]/tos_dict[n])
        data['station'].append(n)
    
    DATA = pd.DataFrame(data = data)
    sns.set(style="darkgrid")
    sns.set(style="darkgrid")
    (fx,fy)=(3000,2000)
    my_dpi=300
    fig=plt.figure(figsize=(fx/my_dpi, fy/my_dpi), dpi=my_dpi)
    ax = fig.add_subplot(1,1,1)
    
    ax = sns.barplot(x="country", 
                     y='ratio', 
                     hue="station", 
                     data=DATA)
    

    相关文章

      网友评论

          本文标题:matplotlib/seaborn画图

          本文链接:https://www.haomeiwen.com/subject/ayrfwqtx.html