首页 > 其他分享 >绘制折线图、柱状图以及将生成的图片汇总生成大图片

绘制折线图、柱状图以及将生成的图片汇总生成大图片

时间:2024-02-20 10:44:23浏览次数:29  
标签:seaborn pyplot matplotlib 生成 v0 width 柱状图 dict 图片

绘制柱状图

import matplotlib.pyplot
def 订购时间绘图():
    global 订购时间
    '''
    每一天的,X轴24个点位;
    以铃音为单位,每个日期为x轴
    '''
    color_list=["red","orange","yellow","green","blue","purple",]
    for toneid,value in 订购时间.items():
        total_width, n = 1, len(订购时间[toneid])
        width = total_width / n    #每根柱子的宽度
        matplotlib.pyplot.clf()    #清空
        matplotlib.rc("font",family='FangSong')
        index=0
        for 日期,times in value.items():
            label_str=日期.replace(' 00:00:00','')
            time_dict=订购时间划分(times)
            num_list=time_dict.values()
            time_list=time_dict.keys()
            x=[int(t)-(total_width-width)/n + width*index for t in time_list]
            matplotlib.pyplot.bar(x,num_list,width=width,align='edge',color=color_list[index],label=label_str)
            matplotlib.pyplot.legend()    #使得图例生效
            index+=1
        matplotlib.pyplot.title('{}-订购'.format(toneid))
        matplotlib.pyplot.xlabel('小时')
        matplotlib.pyplot.ylabel('数量')
        matplotlib.pyplot.savefig(r"D:\BaiduSyncdisk\01工作\脚本\data\绘图\{}.png".format(toneid));

绘制折线图

import matplotlib.pyplot
def draw_charts_v1(hostname:str,datetime_flag:int)->None:
    '''
    本函数使用百分百绘制图表
    hostname:主机名
    datetime_flag:时间范围标志
        0:最近24小时
        1:最近一周
        2:最近一个月
    '''
    global result_dict,datetime_flag_dict
    data_dict = result_dict[hostname]
    # print(matplotlib.pyplot.style.available)
    matplotlib.pyplot.clf()    #清空
    '''
    ['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-v0_8', 'seaborn-v0_8-bright', 'seaborn-v0_8-colorblind', 'seaborn-v0_8-dark', 'seaborn-v0_8-dark-palette', 'seaborn-v0_8-darkgrid', 'seaborn-v0_8-deep', 'seaborn-v0_8-muted', 'seaborn-v0_8-notebook', 'seaborn-v0_8-paper', 'seaborn-v0_8-pastel', 'seaborn-v0_8-poster', 'seaborn-v0_8-talk', 'seaborn-v0_8-ticks', 'seaborn-v0_8-white', 'seaborn-v0_8-whitegrid', 'tableau-colorblind10']
    '''
    matplotlib.pyplot.style.use('bmh')       #图形风格:bmh、ggplot、dark_background、fivethirtyeight和grayscale。
    matplotlib.pyplot.figure(figsize=(16,10))    #长宽,单位为百像素。即16表示1600像素
    matplotlib.rc("font",family='FangSong')     #字体
    #matplotlib.pyplot.xticks(rotation=1)        #X轴间隔
    matplotlib.pyplot.yticks(numpy.linspace(0,1.2,num=13))        #Y轴间隔
    matplotlib.pyplot.ylim(0,1.2) #调整Y轴值范围
    server_state = [int(x) for x in data_dict['server_state']]  #转换下类型才不会出问题。
    # server_state_y = (server_state-numpy.min(server_state))/(numpy.max(server_state)-numpy.min(server_state))
    matplotlib.pyplot.plot(data_dict['reg_date'],server_state,label='服务状态')
    matplotlib.pyplot.plot(data_dict['reg_date'],data_dict['活跃线程占比'],label='活跃线程占比')
    matplotlib.pyplot.plot(data_dict['reg_date'],data_dict['cpu使用率'],label='cpu使用率')
    matplotlib.pyplot.plot(data_dict['reg_date'],data_dict['内存使用率'],label='内存使用率')
    matplotlib.pyplot.plot(data_dict['reg_date'],data_dict['硬盘使用率'],label='硬盘使用率')
    pic_name='{} {} 状态折线图'.format(hostname,datetime_flag_dict[datetime_flag])
    matplotlib.pyplot.title(pic_name)
    matplotlib.pyplot.xlabel('时间')
    matplotlib.pyplot.ylabel('百分比')
    matplotlib.pyplot.legend()
    matplotlib.pyplot.savefig(r"{}{}.png".format(check_folder(datetime_flag),pic_name))
    matplotlib.pyplot.close();  #显式关闭。

将小图汇总生成大图

def Merge_pic(path:str,width:int,height:int,png_num:int=19):
    '''
    本函数用于将生成的所有图表合并成一张大图,生成的大图将以.jpg作为文件后缀
    path:路径,里面应存储有待合并的图片
    width:图表的宽度,单位像素
    height:图表的高度,单位像素
    png_num:图片总数,默认值19,将按照4*5的方式排列
    '''
    #获取图片名称
    images_files = [f for f in os.listdir(path) if f.endswith('.png')]
    #初始化大图的宽度和高度
    jpg_width=4*width
    jpg_height=5*height
    #创建一个空白的大图
    new_image= PIL.Image.new('RGB',(jpg_width,jpg_height),'#FFFFFF')    #初始化为白色
    #设置初始位置
    x_offset=0
    y_offset=0
    #循环读取每张图片并拼接到大图上
    for y in range(5):
        for x in range(4):
            idx = x+y*4
            if(19<=idx):
                continue
            img = PIL.Image.open(path + images_files[idx])
            new_image.paste(img,(x_offset,y_offset))
            #更新位置信息
            x_offset += img.width
        x_offset=0
        y_offset+=img.height
    #保存
    new_image.save('{}所有主机-{}状态折线图.jpg'.format(path,os.path.basename(path.replace('\\',''))))

 

标签:seaborn,pyplot,matplotlib,生成,v0,width,柱状图,dict,图片
From: https://www.cnblogs.com/love-DanDan/p/18022579

相关文章

  • java图片压缩
    /***压缩图片并返回字节数组*@paramfile*@return*@throwsException*/privatebyte[]compress(Filefile)throwsException{Filetemp=newFile(file.getAbsolutePath());//scale:大小//outputQualit......
  • NET8下生成二维码
    NET8下生成二维码按网上搜索的总是多少有些问题,得总搜索好几次才能解决的,现把自己用过的可以生成的代码放上来,以备后用2024年02月20日在VS2022,NET8,MVC项目上使用通过引入NUGET:ZXing.Net.Bindings.ZKWeb.System.Drawing控制器代码: usingMicrosoft.AspNetCore.Mvc;us......
  • 获取SQL Server 刚生成的自增ID
    获取SQLServer刚生成的自增IDvarID:integer;FDConnection:=TFDConnection.Create(nil);tryFDConnection.ConnectionDefName:=Get_DBConnectionStr;//数据库连接参数串ID:=FDConnection.ExecSQLSca......
  • Python生成词云--豆瓣电影短评(初学菜鸡版)
    Python生成词云--豆瓣电影短评(初学菜鸡版)目录Python生成词云--豆瓣电影短评(初学菜鸡版)1.主要涉及的库2.获取数据3.生成词云图1.主要涉及的库主要页面处理selenium数据处理,输出、读取CSVpandas、numpy对所有数据进行分词处理jieba处理图片,生成词云图word......
  • Python用GAN生成对抗性神经网络判别模型拟合多维数组、分类识别手写数字图像可视化
    全文链接:https://tecdat.cn/?p=33566原文出处:拓端数据部落公众号生成对抗网络(GAN)是一种神经网络,可以生成类似于人类产生的材料,如图像、音乐、语音或文本。最近我们被客户要求撰写关于GAN生成对抗性神经网络的研究报告,包括一些图形和统计输出。近年来,GAN一直是研究的热门话题。F......
  • 基于python+django+vue.js开发的学生成绩管理系统
    功能介绍平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。功能包括:成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。源码地址https://github.com/geeeeeeeek/python_score演示地址http://score.gitapp.cn演示......
  • 如何通过矢量数据生成矢量瓦片(矢量切片)?
    ​   通过以下方法可以将矢量数据生成矢量瓦片。 方法/步骤下载三维地图浏览器http://www.geosaas.com/download/map3dbrowser.exe,安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“3、点击“矢量瓦片”下拉菜单,然后点击......
  • linux 中生成随机数
     001、$RANDOM(0~32767的随机数)a、[root@pc1test1]#echo$RANDOM##直接输出31128[root@pc1test1]#echo$RANDOM2539[root@pc1test1]#echo$RANDOM23307 b、限定范围[root@pc1test1]#echo$(($RANDOM%100))##生成0-99的随机数26[root@......
  • tomcat日志文件按日期生成
    tomcat日志文件按日期生成有时候想查一下日志看看什么问题,发现tomcat的catalina.out日志很大,很不方便,so安装cronolog互联网服务器,直接安装yuminstallcronolog查询cronolog路径:whichcronolog/usr/sbin/cronolog修改catalina.sh文件注释touch"\(CATALINA_OUT"找到"\)C......
  • 探索AI视频生成新纪元:文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来
    探索AI视频生成新纪元:文生视频SoraVSRunwayML、Pika及StableVideo——谁将引领未来由于在AI生成视频的时长上成功突破到一分钟,再加上演示视频的高度逼真和高质量,Sora立刻引起了轰动。在Sora横空出世之前,Runway一直被视为AI生成视频的默认选择,尤其是自去年11月推出第二代模型以......