首頁 > 軟體

python繪製分組對比柱狀圖

2022-04-21 13:00:17

本文範例為大家分享了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上執行測試成功

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com