使用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 相关文章推荐
matplotlib绘图实例演示标记路径
Jan 23 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
python基于http下载视频或音频
Jun 20 Python
在python中利用opencv简单做图片比对的方法
Jan 24 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 Python
Python参数类型以及常见的坑详解
Jul 08 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
Python实现自动访问网页的例子
Feb 21 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
django 模版关闭转义方式
May 14 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
PHP无刷新上传文件实现代码
2011/09/19 PHP
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
javascript连续赋值问题
2015/07/08 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
js编写简易的计算器
2020/07/29 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
Python遍历numpy数组的实例
2018/04/04 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
python多进程并行代码实例
2019/09/30 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
华为c/c++笔试题
2016/01/25 面试题
国旗下的演讲稿
2014/05/08 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
python解决12306登录验证码的实现
2021/04/18 Python