使用python绘制分组对比柱状图


Posted in Python onApril 21, 2022

首先放效果图: 

使用python绘制分组对比柱状图

 # -*- coding: utf-8 -*-
import numpy as np
 
import tensorflow as tf
from matplotlib.path import Path
from matplotlib.patches import PathPatch
import matplotlib.pyplot as plt
import matplotlib
from matplotlib.animation import FuncAnimation
import matplotlib as mpl
import datetime
import time
import  re
import urllib.request
np.set_printoptions(suppress=True)
 
mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus'] = False #用来正常显示负
import requests
import re
import hashlib
 
#测试数据  osm的点线面数据
#测试主机 8G 4核 1T机械盘
#mysql 5.7.23
#postgresql 12
#dameng 7
#oracle 19c 19.3
 
 
#读取效率 点             线           面
r = [     [24714,       21748,        19298],     #Oracle
          [44127,       45943,        42199],     #GDB
          #[0,      0,        0],    #SQLITE
         # [0,      0,        0],    #MySQL
          [352641,      352739,        304189],    #SQLITE
          [213550,      218095,        212749],    #MySQL
          [36556,       22172,        12741],     #PostgreSQL
          [52749,       46292,        20040],     #dameng
          [25111,       12000,        11000],     #ArcGIS_GDB
          [10102,       9003,        7003]       #ArcGIS_ORACLE
     ]
 #写入效率
w = [     [190,         675,        40],        #Oracle
          [15815,       9820,        11892],     #GDB
          [94547,       81847,        57235],     #SQLITE
          # [0,       0,        0],     #SQLITE
         [502,         662,        403],       #MySQL
          #[0,         0,        0],       #MySQL
          [1631,        1599,        1502],      #PostgreSQL
          [2004,        1849,        1524],      #dameng
          [10111,       8000,        5600] ,     #ArcGIS_GDB
          [1100,       1000,        900]        #ArcGIS_ORACLE
    ]      
#这是柱图x轴标签
ysr = ['Oracle','GDB','SQLITE','MySQL','PostgreSQL','DAMENG','ArcGIS_GDB','ArcGIS_ORACLE']  
 
 
def DrawGeoDtaabse(rcount, wcount, y):
    #第一行 第一列图形   2,1 代表2行1列
    ax1 = plt.subplot(2,1,1)
    #第二行 第一列图形 
    ax3 = plt.subplot(2,1,2)
    #默认时间格式
    plt.sca(ax1)
    plt.xlabel("",color = 'r') #X轴标签
    plt.ylabel("条/s",color = 'r')  #Y轴标签
    #plt.grid(True)   显示格网
    #plt.gcf().autofmt_xdate() 显示时间
    plt.legend() # 显示图例
    plt.title("[读取]效率") #标题
 
    x1 = [1,5,9,13,17,21,25,29] # x轴点效率位置
    x2 = [i + 1 for i in x1]    # x轴线效率位置
    x3 = [i + 2 for i in x1]    # x轴面效率位置
    y1 = [i[0] for i in rcount] # y轴点效率位置
    y2 = [i[1] for i in rcount] # y轴线效率位置
    y3 = [i[2] for i in rcount] # y轴面效率位置
    #占位以免 数据源标签丢失
    y0 = ["","","","","","","",""]
    plt.bar(x1, y1, alpha=0.7, width=1, color='r',label="点", tick_label=y0)
    plt.bar(x3, y3, alpha=0.7, width=1, color='b',label="面", tick_label=y0)
    plt.bar(x2, y2, alpha=0.7, width=1, color='g',label="线", tick_label=y)
    #至此第一行的读取效率绘制完毕,再重复一下第二行的写效率
 
    plt.sca(ax3)
    plt.xlabel("数据源",color = 'r') #X轴标签
    plt.ylabel("条/s",color = 'r') #Y轴标签
    #plt.grid(True)
    plt.legend() # 显示图例
    plt.title("[写入]效率") #图标题
 
 
    y1 = [i[0] for i in wcount]
    y2 = [i[1] for i in wcount]
    y3 = [i[2] for i in wcount]
    y0 = ["","","","","","","",""]
    plt.bar(x1, y1, alpha=0.7, width=0.6, color='r',label="点", tick_label=y0)
    plt.bar(x3, y3, alpha=0.7, width=0.6, color='b',label="面", tick_label=y0)
    plt.bar(x2, y2, alpha=0.7, width=0.6, color='g',label="线", tick_label=y)
 
    plt.legend()
    plt.show() 
 
DrawGeoDtaabse(r,w,ysr)

以上所有代码在python3.6.4上运行测试成功,希望对大家的学习有所帮助。

Python 相关文章推荐
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
pycharm中显示CSS提示的知识点总结
Jul 29 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
Python通过Schema实现数据验证方式
Nov 12 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
python实现代码审查自动回复消息
Feb 01 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 #Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
You might like
php&java(二)
2006/10/09 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
jquery trigger实现联动的方法
2016/02/29 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
谈谈node.js中的模块系统
2020/09/01 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
python操作MySQL数据库的方法分享
2012/05/29 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
销售辞职报告范文
2014/01/12 职场文书
教师校本培训方案
2014/02/26 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技