婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python實現雙軸組合圖表柱狀圖和折線圖的具體流程

Python實現雙軸組合圖表柱狀圖和折線圖的具體流程

熱門標簽:高德地圖標注收入咋樣 萊蕪電信外呼系統 銀川電話機器人電話 鶴壁手機自動外呼系統違法嗎 怎么辦理400客服電話 企業微信地圖標注 地圖標注多個 B52系統電梯外呼顯示E7 沈陽防封電銷電話卡

Python繪制雙軸組合的關鍵在plt庫的twinx()函數,具體流程:

1.先建立坐標系,然后繪制主坐標軸上的圖表;

2.再調用plt.twinx()方法;

3.最后繪制次坐標軸圖表。

import cx_Oracle
import xlrd
import xlwt
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import FuncFormatter

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#設置坐標軸數值以百分比(%)顯示函數
def to_percent(temp, position):
  return '%1.0f'%(1*temp) + '%'
#字體設置
font2 = {'family' : 'Times New Roman',
'weight' : 'normal',
'size'   : 25,
}

conn=cx_Oracle.connect('用戶名/密碼@IP:端口/數據庫')
c=conn.cursor()
#sql查詢語句,多行用()括起來
sql_detail=("select substr(date1,6,10)date1,round(avg(r_qty))r_qty,round(avg(e_qty))e_qty,""round(avg(r_qty)/avg(e_qty),2)*100 userate,round(avg(uptime),2)*100 uptime from 表tp "
"tp where 條件  "
"group by date1 order by date1 ")  
                              
x=c.execute(sql_detail)
#獲取sql查詢數據                         
data=x.fetchall()
#print(data)

#新建Excel保存數據
xl=xlwt.Workbook()
ws=xl.add_sheet("ROBOT 30 DAYS MOVE ")
#ws.write_merge(0,1,0,4,"ROBOT_30_DAYS_MOVE")
for i,item in enumerate(data):
    for j,val in enumerate(item):
        ws.write(i,j,val)
xl.save("E:\\ROBOT_30_DAYS_MOVE.xls")

#讀取Excel數據
data1 = xlrd.open_workbook( "E:\\ROBOT_30_DAYS_MOVE.xls")
sheet1=data1.sheet_by_index(0)

date1=sheet1.col_values(0)
r_qty=sheet1.col_values(1)
e_qty=sheet1.col_values(2)
userate=sheet1.col_values(3)
uptime=sheet1.col_values(4)

#空值處理
for a in r_qty:
    if a=='':
        a=0
for a in e_qty:
    if a=='':
        a=0
for a in userate:
    if a=='':
        a=0
for a in uptime:
    if a=='':
        a=0
#將list元素str轉int類型
r_qty = list(map(int, r_qty))
e_qty = list(map(int, e_qty))
userate = list(map(int, userate))
uptime = list(map(int, uptime))
#添加平均值mean求平均
r_qty.append(int(np.mean(r_qty))) 
e_qty.append(int(np.mean(e_qty))) 
userate.append(int(np.mean(userate))) 
uptime.append(int(np.mean(uptime))) 
date1.append('AVG')

#x軸坐標
x=np.arange(len(date1))
bar_width=0.35

plt.figure(1,figsize=(19,10))
#繪制主坐標軸-柱狀圖
plt.bar(np.arange(len(date1)),r_qty,label='RBT_MOVE',align='center',alpha=0.8,color='Blue',width=bar_width)
plt.bar(np.arange(len(date1))+bar_width,e_qty,label='EQP_MOVE',align='center',alpha=0.8,color='orange',width=bar_width)

#設置主坐標軸參數
plt.xlabel('')
plt.ylabel('Move',fontsize=18)
plt.legend(loc=1, bbox_to_anchor=(0,0.97),borderaxespad = 0.) 
#plt.legend(loc='upper left')
for x,y in enumerate(r_qty):
    plt.text(x,y+100,'%s' % y,ha='center',va='bottom')
for x,y in enumerate(e_qty):
    plt.text(x+bar_width,y+100,'%s' % y,ha='left',va='top') 
plt.ylim([0,8000])

#調用plt.twinx()后可繪制次坐標軸
plt.twinx()

#次坐標軸參考線
target1=[90]*len(date1)
target2=[80]*len(date1)

x=list(range(len(date1)))
plt.xticks(x,date1,rotation=45)

#繪制次坐標軸-折線圖
plt.plot(np.arange(len(date1)),userate,label='USE_RATE',color='green',linewidth=1,linestyle='solid',marker='o',markersize=3)
plt.plot(np.arange(len(date1)),uptime,label='UPTIME',color='red',linewidth=1,linestyle='--',marker='o',markersize=3)

plt.plot(np.arange(len(date1)),target1,label='90%target',color='black',linewidth=1,linestyle='dashdot')
plt.plot(np.arange(len(date1)),target2,label='80%target',color='black',linewidth=1,linestyle='dashdot')

#次坐標軸刻度百分比顯示
plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))

plt.xlabel('')
plt.ylabel('Rate',fontsize=18)
#圖列
plt.legend(loc=2, bbox_to_anchor=(1.01,0.97),borderaxespad = 0.) 
plt.ylim([0,100])
for x,y in enumerate(userate):
    plt.text(x,y-1,'%s' % y,ha='right',va='bottom',fontsize=14)
for x,y in enumerate(uptime):
    plt.text(x,y+1,'%s' % y,ha='left',va='top',fontsize=14) 

plt.title("ROBOT 30 DAYS MOVE")

#圖表Table顯示plt.table()
listdata=[r_qty]+[e_qty]+[userate]+[uptime]#數據
table_row=['RBT_MOVE','EQP_MOVE','USE_RATE(%)','UPTIME(%)']#行標簽
table_col=date1#列標簽
print(listdata)
print(table_row)
print(table_col)

the_table=plt.table(cellText=listdata,cellLoc='center',rowLabels=table_row,colLabels=table_col,rowLoc='center',colLoc='center')
#Table參數設置-字體大小太小,自己設置
the_table.auto_set_font_size(False)
the_table.set_fontsize(12)
#Table參數設置-改變表內字體顯示比例,沒有會溢出到表格線外面
the_table.scale(1,3)
#plt.show()

plt.savefig(r"E:\\ROBOT_30_DAYS_MOVE.png",bbox_inches='tight')
#關閉SQL連接
c.close()                                                      
conn.close()

結果顯示:

到此這篇關于Python實現雙軸組合圖表柱狀圖和折線圖的具體流程的文章就介紹到這了,更多相關python柱狀圖和折線圖內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 用Python做個個性的動畫掛件讓桌面不單調
  • 如何用Python寫一個簡單的通訊錄
  • python實現多個視頻文件合成畫中畫效果
  • 自己用python做的一款超炫酷音樂播放器
  • Python做個自定義動態壁紙還可以放視頻
  • 分析總結Python數據化運營KMeans聚類
  • python中的zip模塊
  • 總結分析python數據化運營關聯規則
  • python項目--使用Tkinter的日歷GUI應用程序
  • 如何使用Python做個自定義動態壁紙

標簽:銀川 葫蘆島 三亞 呼倫貝爾 安慶 呼倫貝爾 湘西 烏魯木齊

巨人網絡通訊聲明:本文標題《Python實現雙軸組合圖表柱狀圖和折線圖的具體流程》,本文關鍵詞  Python,實現,雙軸,組合,圖表,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python實現雙軸組合圖表柱狀圖和折線圖的具體流程》相關的同類信息!
  • 本頁收集關于Python實現雙軸組合圖表柱狀圖和折線圖的具體流程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 昌乐县| 南宫市| 永平县| 即墨市| 合江县| 彭山县| 中宁县| 柳林县| 苏尼特左旗| 甘洛县| 太湖县| 宁阳县| 依兰县| 阳新县| 通海县| 东阿县| 汕头市| 容城县| 定州市| 资阳市| 大荔县| 满城县| 台北市| 黔江区| 施秉县| 榆中县| 沈阳市| 花莲市| 双鸭山市| 施甸县| 广州市| 蛟河市| 沾化县| 弥勒县| 方城县| 美姑县| 筠连县| 石泉县| 宁陵县| 莱西市| 北票市|