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上運行測試成功

發佈了78 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章