使用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中装饰器的一个妙用
Feb 08 Python
python轻松实现代码编码格式转换
Mar 26 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
python socket通信编程实现文件上传代码实例
Dec 14 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
python hmac模块验证客户端的合法性
Nov 07 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 #Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
You might like
实用函数4
2007/11/08 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
Python算法中的时间复杂度问题
2019/11/19 Python
基于python实现学生信息管理系统
2019/11/22 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
UDP协议功能
2013/01/06 面试题
大学生新学期计划书
2014/04/28 职场文书
安全承诺书
2015/01/19 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
安全教育日主题班会
2015/08/13 职场文书
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript