使用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中的二维数组的操作方法
May 02 Python
Python中pygame的mouse鼠标事件用法实例
Nov 11 Python
python list是否包含另一个list所有元素的实例
May 04 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
简单了解Django应用app及分布式路由
Jul 24 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
Python 使用元类type创建类对象常见应用详解
Oct 17 Python
Python实现序列化及csv文件读取
Jan 19 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 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防止伪造的数据从URL提交方法
2014/06/27 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
php截取视频指定帧为图片
2016/05/16 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
js函数排序的实例代码
2013/07/01 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
python持久性管理pickle模块详细介绍
2015/02/18 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
python实现超级马里奥
2020/03/18 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Django缓存Cache使用详解
2020/11/30 Python
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
非常详细的C#面试题集
2016/07/13 面试题
日语专业毕业生求职信
2013/12/04 职场文书
商务英语应届生自我鉴定
2013/12/08 职场文书
经理秘书找工作求职信
2013/12/19 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
女生抽烟检讨书
2014/10/05 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技