使用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根据出生日期获得年龄的方法
Mar 31 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
Python数据结构之单链表详解
Sep 12 Python
Python分析学校四六级过关情况
Nov 22 Python
有关Python的22个编程技巧
Aug 29 Python
python Tkinter版学生管理系统
Feb 20 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
python调用API接口实现登陆短信验证
May 10 Python
python进度条显示之tqmd模块
Aug 22 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
Dec 09 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 #Python
Python尝试实现蒙特卡罗模拟期权定价
Python matplotlib绘制条形统计图 处理多个实验多组观测值
python绘制简单直方图(质量分布图)的方法
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
You might like
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
Python中动态创建类实例的方法
2017/03/24 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
Python 硬币兑换问题
2019/07/29 Python
python with语句的原理与用法详解
2020/03/30 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
应急处置方案
2014/06/16 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
在职证明格式样本
2015/06/15 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL