版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Linux系統(tǒng)自動(dòng)化運(yùn)維(Python版)(微課版)工業(yè)和信息化精品系列教材項(xiàng)目5
運(yùn)維數(shù)據(jù)記錄與可視化人民郵電出版社能力CAPACITY要求了解運(yùn)維數(shù)據(jù)記錄的手段,學(xué)會(huì)使用CSV文件和SQLite數(shù)據(jù)庫記錄運(yùn)維數(shù)據(jù)。了解數(shù)據(jù)可視化技術(shù),熟悉Matplotlib庫和Dash框架的基本用法。學(xué)會(huì)使用Matplotlib庫編程繪制統(tǒng)計(jì)圖表。學(xué)會(huì)使用Dash框架編程實(shí)現(xiàn)生成基于Web的可視化報(bào)表。任務(wù)5.2可視化運(yùn)維數(shù)據(jù)任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)說明01OPTION02OPTION03OPTION了解純文本的CSV文件及其Python操作方法了解Excel文件及其Python操作方法學(xué)會(huì)編寫通過CSV文件記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)的Python程序04OPTION學(xué)會(huì)編寫通過SQLite數(shù)據(jù)庫記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)的Python程序任務(wù)5.1記錄運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.1.1純文本的CSV文件使用內(nèi)置的csv模塊處理CSV文件
csv.reader:以列表的形式返回讀取的數(shù)據(jù)。
csv.writer:以列表的形式寫入數(shù)據(jù)。
csv.DictReader:以字典的形式返回讀取的數(shù)據(jù)。
csv.DictWriter:以字典的形式寫入數(shù)據(jù)任務(wù)5.1記錄運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.1.1純文本的CSV文件使用Pandas庫處理CSV文件安裝Pandas庫pipinstallpandas讀取CSV文件importpandasaspddf=pd.read_csv('CSV文件')使用to_csv()方法將DataFrame對(duì)象存儲(chǔ)為CSV文件importpandasaspddf=pd.DataFrame(dict)#通過二維數(shù)組或字典創(chuàng)建DataFrame對(duì)象df.to_csv('CSV文件')任務(wù)5.1記錄運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.1.2功能強(qiáng)大的Excel文件Excel文件處理Excel操作庫功能不足xlrd/xlwt讀寫.xls文件,可設(shè)置單元格格式不支持讀寫.xlsx文件openpyxl讀寫.xlsx文件,支持Excel大多數(shù)功能,可以設(shè)置單元格格式,支持圖片、公式、圖表等操作不支持讀寫.xls文件xlwings支持.xls和.xlsx格式,幾乎支持Excel全部功能,可以調(diào)用Excel文件中的VBA程序需要運(yùn)行環(huán)境中安裝了Excel軟件XlsxWriter創(chuàng)建.xlsx/.xls文件,可以設(shè)置單元格格式,支持圖片、公式、圖表等操作不能打開和修改已有的Excel文件任務(wù)5.1記錄運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.1.2功能強(qiáng)大的Excel文件openpyxl庫的基本用法安裝該庫pipinstallopenpyxl遍歷某工作表的示例程序importopenpyxlwb=openpyxl.load_workbook('xlsx文件')#根據(jù)路徑讀取.xlsx文件sheet=wb.worksheets[0]#獲取第1個(gè)工作表#也可通過工作表名獲取工作表:sheet=wb.get_sheet_by_name('工作表名')forrowinsheet:#遍歷工作表中的行
forcellinrow:#遍歷行中的單元格
print(cell.value,end="")#同一行,不換行
print()#遍歷完一行,必須換行forcolinsheet.columns:#遍歷工作表中的列
forcellincol:#遍歷列中的單元格
print(cell.value,end='')print()任務(wù)5.1記錄運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.1.2功能強(qiáng)大的Excel文件使用openpyxl庫創(chuàng)建Excel文件fromopenpyxlimportWorkbookwb=Workbook(write_only=True)#實(shí)例化Workbook類生成工作簿對(duì)象ws=wb.create_sheet()#創(chuàng)建一個(gè)工作表ws.append(['部門','服務(wù)器','得分'])#添加第一行數(shù)據(jù)rows=[#定義一個(gè)包含元組的列表(提供二維表數(shù)據(jù))
('信息部','A01',95),('信息部','A02',78),('信息部','A03',92),('業(yè)務(wù)部','B01',82),('業(yè)務(wù)部','B02',66),('業(yè)務(wù)部','B03',88)]forrowinrows:#將上述二維表數(shù)據(jù)逐行添加到工作表
ws.append(row)wb.save("servertest.xlsx")任務(wù)5.1記錄運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.1.2功能強(qiáng)大的Excel文件使用openpyxl庫創(chuàng)建Excel圖表fromopenpyxlimportload_workbookfromopenpyxl.chartimportBarChart3D,Reference#BarChart3D為三維柱形圖wb=load_workbook('servertest.xlsx')#打開.xlsx文件ws=wb.active#獲取當(dāng)前的工作表對(duì)象(第1個(gè)工作表)#選擇圖表的數(shù)據(jù)源,返回范圍內(nèi)的所有單元格data=Reference(ws,min_col=3,min_row=2,max_col=3,max_row=8)#選擇要顯示的x軸坐標(biāo)標(biāo)記內(nèi)容x_label=Reference(ws,min_col=2,min_row=2,max_row=8)chart=BarChart3D() #創(chuàng)建BarChart3D對(duì)象(三維柱形圖)chart.title="服務(wù)器性能測(cè)試" #給BarChart3D對(duì)象添加標(biāo)題chart.add_data(data) #給BarChart3D對(duì)象添加數(shù)據(jù)源chart.set_categories(x_label) #給BarChart3D對(duì)象添加坐標(biāo)軸標(biāo)記ws.add_chart(chart,"E5") #在工作表上添加圖表,并指定圖表左上角錨定的單元格wb.save("server_bar3d.xlsx") #保存工作薄任務(wù)5.1記錄運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.1.2功能強(qiáng)大的Excel文件使用openpyxl庫創(chuàng)建Excel圖表任務(wù)5.1記錄運(yùn)維數(shù)據(jù)相關(guān)知識(shí)
5.1.3使用數(shù)據(jù)庫存儲(chǔ)件數(shù)據(jù)庫簡介SQL數(shù)據(jù)庫MySQLMariaDBPostgreSQLSQLite時(shí)間序列數(shù)據(jù)庫(TSDB)TimescaleDBKairosDBInfluxDBCrateDB任務(wù)5.1記錄運(yùn)維數(shù)據(jù)相關(guān)知識(shí)
5.1.3使用數(shù)據(jù)庫存儲(chǔ)件SQLite數(shù)據(jù)庫的基本操作(1)導(dǎo)入sqlite3模塊。importsqlite3(2)創(chuàng)建或打開數(shù)據(jù)庫。con=sqlite3.connect("test.db")(3)操作數(shù)據(jù)庫連接對(duì)象。
cur=conn.cursor()(4)使用數(shù)據(jù)庫游標(biāo)。方法功能execute()執(zhí)行SQL語句executemany()執(zhí)行多條SQL語句fetchone()從結(jié)果集中取出一條記錄,并將游標(biāo)指向下一條記錄fetchmany()從結(jié)果集中一次性取出多條記錄fetchall()從結(jié)果集中取出所有記錄close()關(guān)閉游標(biāo)任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.1.1使用CSV文件記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)將監(jiān)控?cái)?shù)據(jù)記錄到CSV文件┈┈#導(dǎo)入csv模塊importcsv┈┈file_name="sysinfo.csv"#指定的CSV文件'''定義要執(zhí)行的任務(wù)'''defmonjob():print('監(jiān)測(cè)時(shí)間:%s'%datetime.now())data=gather_monitor_data()data['mon_time']=datetime.now().strftime('%Y-%m-%d%H:%M:%S')#創(chuàng)建標(biāo)題列表
header_list=data.keys()任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.1.1使用CSV文件記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)將監(jiān)控?cái)?shù)據(jù)記錄到CSV文件#創(chuàng)建數(shù)據(jù)列表,列表的每個(gè)元素都是字典
data_list=[]data_list.append(data)csv_lines=0ifos.path.exists(file_name):csv_lines=len(open(file_name).readlines())#以追加方式打開文件。注意添加參數(shù)newline="",否則會(huì)在每兩行數(shù)據(jù)之間都插入一空白行
withopen(file_name,mode="a",encoding="utf-8-sig",newline="")asf:#基于打開的文件創(chuàng)建csv.DictWriter對(duì)象,將標(biāo)題列表作為參數(shù)傳入
writer=csv.DictWriter(f,header_list)ifcsv_lines==0:#如果CSV文件沒有內(nèi)容,則寫入標(biāo)題行
#寫入標(biāo)題行
writer.writeheader()#寫入數(shù)據(jù)行
writer.writerows(data_list)if__name__=='__main__’:┈┈任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.1.1使用CSV文件記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)將監(jiān)控?cái)?shù)據(jù)記錄到CSV文件任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.1.2使用SQLite數(shù)據(jù)庫記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)使用SQLite數(shù)據(jù)庫記錄數(shù)據(jù)┈┈importsqlite3#導(dǎo)入sqlite3模塊┈┈db_file="sys_mon.db3"'''定義數(shù)據(jù)庫表'''defdb_define():#連接數(shù)據(jù)庫
con=sqlite3.connect(db_file,timeout=10,check_same_thread=False)#創(chuàng)建游標(biāo)
cur=con.cursor()#創(chuàng)建表(如果存在該表就不創(chuàng)建)
cur.execute('CREATETABLEIFNOTEXISTSsysinfo(idINTEGERPRIMARYKEY,cpu_countINT,cpu_percentREAL,mem_totalTEXT,mem_usedTEXT,mem_freeTEXT,mem_percentREAL,disk_totalTEXT,disk_usedTEXT,disk_freeTEXT,disk_percentREAL,disk_readTEXT,disk_writeTEXT,net_sentTEXT,net_recvTEXT,mon_timeTEXT)')mit()cur.close()con.close()任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.1.2使用SQLite數(shù)據(jù)庫記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)使用SQLite數(shù)據(jù)庫記錄數(shù)據(jù)'''定義要執(zhí)行的任務(wù)'''defmonjob():print('監(jiān)測(cè)時(shí)間:%s'%datetime.now())data=gather_monitor_data()data['mon_time']=datetime.now().strftime('%Y-%m-%d%H:%M:%S')field_names=','.join(data.keys()) #從字典數(shù)據(jù)中獲取字段名并轉(zhuǎn)換為字符串
field_values='' #定義字段值變量
#從字典數(shù)據(jù)中獲取字段值并連接成字符串
forindex,iteminenumerate(data.values()):ifisinstance(item,str):item='\''+item+'\''else:item=str(item)ifindex>0:field_values=field_values+","+itemelse:field_values=field_values+item#插入記錄語句
statement="INSERTINTOsysinfo("+field_names+")VALUES("+field_values+")"con=sqlite3.connect(db_file,timeout=10,check_same_thread=False)cur=con.cursor()cur.execute(statement)#執(zhí)行插入操作
mit()cur.close()con.close()if__name__=='__main__':db_define()#創(chuàng)建數(shù)據(jù)庫和表#以下代碼省略任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.1.2使用SQLite數(shù)據(jù)庫記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)使用SQLite數(shù)據(jù)庫記錄數(shù)據(jù)'''定義要執(zhí)行的任務(wù)'''defmonjob():print('監(jiān)測(cè)時(shí)間:%s'%datetime.now())data=gather_monitor_data()data['mon_time']=datetime.now().strftime('%Y-%m-%d%H:%M:%S')field_names=','.join(data.keys()) #從字典數(shù)據(jù)中獲取字段名并轉(zhuǎn)換為字符串
field_values='' #定義字段值變量
#從字典數(shù)據(jù)中獲取字段值并連接成字符串
forindex,iteminenumerate(data.values()):ifisinstance(item,str):item='\''+item+'\''else:item=str(item)ifindex>0:field_values=field_values+","+itemelse:field_values=field_values+item任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.1.2使用SQLite數(shù)據(jù)庫記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)使用SQLite數(shù)據(jù)庫記錄數(shù)據(jù)#插入記錄語句
statement="INSERTINTOsysinfo("+field_names+")VALUES("+field_values+")"con=sqlite3.connect(db_file,timeout=10,check_same_thread=False)cur=con.cursor()cur.execute(statement)#執(zhí)行插入操作
mit()cur.close()con.close()if__name__=='__main__':db_define()#創(chuàng)建數(shù)據(jù)庫和表┈┈任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.1.2使用SQLite數(shù)據(jù)庫記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)讀取記錄到SQlite數(shù)據(jù)庫的監(jiān)控?cái)?shù)據(jù)importsqlite3db_file="sys_mon.db3"con=sqlite3.connect(db_file,timeout=10,check_same_thread=False)cur=con.cursor()#執(zhí)行查詢語句cur.execute('SELECT*FROMsysinfo')values=cur.fetchall()cur.close()con.close()#顯示所有記錄forrecinvalues:print(rec)任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.1.2使用SQLite數(shù)據(jù)庫記錄系統(tǒng)監(jiān)控?cái)?shù)據(jù)讀取記錄到SQlite數(shù)據(jù)庫的監(jiān)控?cái)?shù)據(jù)任務(wù)5.2可視化運(yùn)維數(shù)據(jù)任務(wù)5.1記錄運(yùn)維數(shù)據(jù)任務(wù)5.2可視化運(yùn)維數(shù)據(jù)任務(wù)說明01OPTION02OPTION03OPTION了解Matplotlib庫及其基本用法了解Dash框架及其基本用法學(xué)會(huì)使用Matplotlib庫編程繪制圖表04OPTION學(xué)會(huì)基于Dash框架實(shí)現(xiàn)Web可視化數(shù)據(jù)儀表盤任務(wù)5.2可視化運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.2.1經(jīng)典的Python繪圖庫Matplotlib安裝Matplotlib庫pipinstallmatplotlib繪制簡單的圖形#使用import導(dǎo)入Pyplot模塊并設(shè)置一個(gè)別名pltimportmatplotlib.pyplotaspltx=[0,5]y=[0,10]plt.plot(x,y)plt.xlabel("x-label")plt.ylabel("y-label")plt.show()任務(wù)5.2可視化運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.2.1經(jīng)典的Python繪圖庫Matplotlib繪制多子圖importmatplotlib.pyplotasplt#導(dǎo)入NumPy庫importnumpyasnp#第1個(gè)子圖x1=np.array([0,1,2,3,4,5,6])y1=np.random.randint(low=1,high=100,size=7).tolist()#產(chǎn)生隨機(jī)數(shù)plt.subplot(1,2,1)plt.bar(x1,y1)#繪制柱形圖plt.title("Graph1")#第2個(gè)子圖x2=np.array([1,2,3,4])y2=np.array([1,4,9,16])plt.subplot(1,2,2)plt.scatter(x2,y2)#繪制散點(diǎn)圖plt.title("Graph2")plt.suptitle("Testsubplot")#總標(biāo)題plt.show()任務(wù)5.2可視化運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.2.2高效、簡潔的Web可視化框架DashDash簡介編程簡單??焖賹?shí)現(xiàn)數(shù)據(jù)可視化交互設(shè)計(jì)。具有豐富的應(yīng)用場(chǎng)景。安裝Dash
pipinstalldashpipinstallpandas任務(wù)5.2可視化運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.2.2高效、簡潔的Web可視化框架Dash編寫Dash程序(布局定義應(yīng)用程序的外觀)#導(dǎo)入所需的庫,每個(gè)庫都為程序提供了一個(gè)構(gòu)建模塊fromdashimportDash,html,dccimportplotly.expressaspximportpandasaspd#創(chuàng)建Dash類的對(duì)象,以初始化程序app=Dash(__name__)#預(yù)設(shè)樣式(字典形式)colors={'background':'#111111','text':'#7FDBFF'}#定義數(shù)據(jù)來源,DataFrame是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu)df=pd.DataFrame({"服務(wù)器":["A01","A02","A03","B01","B02","B03"],"得分":[95,78,92,82,66,88],"部門":["信息部","信息部","信息部","業(yè)務(wù)部","業(yè)務(wù)部","業(yè)務(wù)部"]})任務(wù)5.2可視化運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.2.2高效、簡潔的Web可視化框架Dash編寫Dash程序(布局定義應(yīng)用程序的外觀)#繪制柱形圖fig=px.bar(df,x="服務(wù)器",y="得分",color="部門",barmode="stack")#更改柱形圖樣式fig.update_layout(┈┈)#app對(duì)象的layout屬性使用由Dash組件構(gòu)成的樹結(jié)構(gòu)定義程序的外觀app.layout=html.Div(style={'backgroundColor':colors['background']},#全局樣式(字典形式)
┈┈if__name__=='__main__':app.run_server(debug=True)#運(yùn)行Dash程序任務(wù)5.2可視化運(yùn)維數(shù)據(jù)相關(guān)知識(shí)5.2.2高效、簡潔的Web可視化框架Dash為Dash程序提供交互性#導(dǎo)入所需的庫,每個(gè)庫都為程序提供了一個(gè)構(gòu)建模塊fromdashimportDash,dcc,html,Input,Outputapp=Dash(__name__)#定義布局app.layout=html.Div([┈┈])score_dict={'A01':95,'A02':78,'B01':82,'B02':66}#裝飾器@app.callback(Output(component_id='score',component_property='children'),Input(component_id='server',component_property='value'))defgetScore(server):#回調(diào)函數(shù)
returnscore_dict[server]if__name__=='__main__':app.run_server(debug=True)任務(wù)5.2可視化運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.2.1基于Matplotlib庫生成系統(tǒng)監(jiān)控?cái)?shù)據(jù)統(tǒng)計(jì)圖表importmatplotlib.pyplotaspltimportpandasaspddf=pd.read_csv('sysinfo.csv')#讀取CSV文件產(chǎn)生DataFrame對(duì)象#從DataFrame對(duì)象獲取所需的序列x1=df['mon_time'].apply(lambdax:x.split('')[1])#使用匿名函數(shù)處理日期格式y(tǒng)1=df['cpu_percent']y2=df['mem_percent']y3=df['disk_percent']plt.rcParams['font.family']=['ARPLUKaiCN']#設(shè)置字體解決中文顯示問題plt.title('系統(tǒng)監(jiān)控?cái)?shù)據(jù)',fontsize='18')#設(shè)置圖表標(biāo)題內(nèi)容及其字體大小plt.plot(x1,y1,label='CPU',color='r',marker='8')#紅色,八角形標(biāo)記plt.plot(x1,y2,label='內(nèi)存',color='g',marker='o')#綠色,實(shí)心圓標(biāo)記plt.plot(x1,y3,label='磁盤',color='b',marker='*')#藍(lán)色,星號(hào)標(biāo)記plt.grid(axis='y')#顯示網(wǎng)格關(guān)閉y軸plt.ylabel('使用率')plt.legend(['CPU','內(nèi)存','磁盤'])#設(shè)置圖例plt.show()任務(wù)5.2可視化運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.2.1基于Matplotlib庫生成系統(tǒng)監(jiān)控?cái)?shù)據(jù)統(tǒng)計(jì)圖表任務(wù)5.2可視化運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.2.2通過Dash框架實(shí)現(xiàn)系統(tǒng)監(jiān)控?cái)?shù)據(jù)儀表盤了解Dash多頁面應(yīng)用(1)為每個(gè)頁面創(chuàng)建一個(gè).py文件作為Dash頁面文件,并將其置于pages目錄中。(2)在每個(gè)頁面文件中添加如下Dash頁面注冊(cè)語句。dash.register_page(__name__)(3)在pages目錄的上級(jí)目錄中創(chuàng)建主程序文件。其中通過以下語句聲明Dash應(yīng)用。app=Dash(__name__,use_pages=True)任務(wù)5.2可視化運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.2.2通過Dash框架實(shí)現(xiàn)系統(tǒng)監(jiān)控?cái)?shù)據(jù)儀表盤編寫Dash程序(1)在當(dāng)前項(xiàng)目目錄下創(chuàng)建pages子目錄。(2)在pages子目錄中創(chuàng)建名為mon_table.py的Dash頁面文件。importdashfromdashimporthtmlimportpandasaspddash.register_page(__name__,title='顯示表格',path='/')#指定數(shù)據(jù)來源df=pd.read_csv('sysinfo.csv')#定義生成Web表格的函數(shù)defgenerate_table(dataframe,max_rows=10):returnhtml.Table([┈┈])#布局定義layout=html.Div([html.H4(children='系統(tǒng)監(jiān)控?cái)?shù)據(jù)表格'),generate_table(df)#重用組件])任務(wù)5.2可視化運(yùn)維數(shù)據(jù)任務(wù)實(shí)現(xiàn)任務(wù)5.2.2通過Dash框架實(shí)現(xiàn)系統(tǒng)監(jiān)控?cái)?shù)據(jù)儀表盤編寫Dash程序(3)在pages子目錄中創(chuàng)建名為mon_scatter.py的Dash頁面文件。importdashfromdashimporthtml,dccimportplotly.graph_objsasgofromplotly.subplotsimportmake_subplotsimportpandasaspddash.register_page(__name__,title='查看散點(diǎn)圖')df=pd.read_csv('sysinfo.csv')#生成子圖畫布對(duì)象fig=make_subplots(specs=[[{"secondary_y":True}]])#添加軌跡(圖表)fig.add_trace(go.Scatter(x=df["mon_time"],y=df["cpu_percent"],name="CPU"),secondary_y=False,)fig.add_trace(go.Scatter(x=df["mon_time"],y=df["mem_percent"],name="內(nèi)存"),secondary_y=True
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高速機(jī)電設(shè)備培訓(xùn)合同范例
- 宜昌合同范例在線咨詢
- 珠寶銷售工作總結(jié)匯報(bào)
- 商鋪挑戰(zhàn)合同范例
- 車隊(duì)掛靠免責(zé)合同范例
- 辦公用購買合同范例
- 美術(shù)員工合同范例
- 磨具借用合同范例
- 租房家電安裝合同范例
- 補(bǔ)充收費(fèi)合同范例
- 食品安全檢測(cè)合作合同
- 養(yǎng)殖場(chǎng)轉(zhuǎn)讓寫合同范例
- 廣東省廣州市天河區(qū)2023-2024學(xué)年高一上學(xué)期期末考試數(shù)學(xué)試卷(解析版)
- 2025年統(tǒng)編版高考政治一輪復(fù)習(xí):選擇性必修1、2、3共3冊(cè)必背考點(diǎn)知識(shí)點(diǎn)匯編
- 2024社區(qū)市民學(xué)校工作計(jì)劃社區(qū)市民教育工作計(jì)劃
- 常見皮膚病與護(hù)理
- 安全生產(chǎn)法律法規(guī)注冊(cè)安全工程師考試(初級(jí))試題與參考答案(2024年)一
- 2024年人教版小學(xué)六年級(jí)上學(xué)期期末英語試題與參考答案
- 2024年公文寫作基礎(chǔ)知識(shí)競(jìng)賽試題庫及答案(共130題)
- 數(shù)據(jù)管理制度完整
- 醫(yī)療組長競(jìng)聘
評(píng)論
0/150
提交評(píng)論