python 實現(xiàn)在一張圖中繪制一個小的子圖方法
更新時間:2019年07月07日 13:25:39 作者:wychen_sunshine
今天小編就為大家分享一篇python 實現(xiàn)在一張圖中繪制一個小的子圖方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
有時候為了直觀展現(xiàn)圖的信息,可以在大圖中添加小子圖的方式進(jìn)行數(shù)據(jù)分析,如下圖所示:
具體的代碼如下:該圖連接了數(shù)據(jù)庫,當(dāng)然重要的不是數(shù)據(jù)展示,而是添加子圖的方法。
import matplotlib.pyplot as plt import MySQLdb as mdb import numpy as np from mpl_toolkits.axes_grid1.inset_locator import inset_axes from mpl_toolkits.axes_grid1.inset_locator import mark_inset def graph(): # 連接數(shù)據(jù)庫 conn = mdb.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='alibaba_trace', charset='utf8') # 如果使用事務(wù)引擎,可以設(shè)置自動提交事務(wù),或者在每次操作完成后手動提交事務(wù)conn.commit() conn.autocommit(1) # conn.autocommit(True) # 使用cursor()方法獲取操作游標(biāo) cursor = conn.cursor() # 因該模塊底層其實是調(diào)用CAPI的,所以,需要先得到當(dāng)前指向數(shù)據(jù)庫的指針。 try: cursor.execute("select machineID, count(id) from batch_instance where machineID != 0 group by machineID") records = cursor.fetchall() list_records = list(records) except: import traceback traceback.print_exc() # 發(fā)生錯誤時回滾 conn.rollback() finally: # 關(guān)閉游標(biāo)連接 cursor.close() # 關(guān)閉數(shù)據(jù)庫連接 conn.close() res = [] res[:] = map(list, list_records) machineID = [x[0] for x in res] instance_num = [x[1] for x in res] print(max(instance_num)) print(min(instance_num)) fig = plt.figure() ax1 = fig.add_subplot(1, 1, 1) # # cdf # hist, bin_edges = np.histogram(instance_num, bins=len(np.unique(instance_num))) # cdf = np.cumsum(hist / sum(hist)) # ax1.plot(bin_edges[1:], cdf, color='red', ls='-') # ax1.set_xlabel("instance number per machine") # ax1.set_ylabel("portion of machine") # plt.savefig('../../imgs_mysql/cdf_of_machine_instance.png') # # 直方圖 ax1.hist(instance_num, normed=False, alpha=1.0, bins=100) ax1.set_xlabel('instance number per machine') ax1.set_ylabel('machine number') # cdf 要添加的子圖 axins = inset_axes(ax1, width=1.5, height=1.5, loc='upper left') # ax1 大圖 # width height分別為子圖的寬和高 # loc 為子圖在大圖ax1中的相對位置 相應(yīng)的值有 # upper left # lower left # lower right # right # center left # center right # lower center # upper center # center hist, bin_edges = np.histogram(instance_num, bins=len(np.unique(instance_num))) cdf = np.cumsum(hist / sum(hist)) axins.plot(bin_edges[1:], cdf, color='red', ls='-') axins.set_yticks([]) # axins.set_xlabel("instance number per machine") # axins.set_ylabel("portion of machine") plt.savefig("../../imgs_mysql/hist_of_machine_instance") plt.show() if __name__ == '__main__': graph()
以上這篇python 實現(xiàn)在一張圖中繪制一個小的子圖方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實現(xiàn)通過解析域名獲取ip地址的方法分析
這篇文章主要介紹了Python實現(xiàn)通過解析域名獲取ip地址的方法,結(jié)合實例形式總結(jié)分析了兩種比較常見的解析域名對應(yīng)IP地址相關(guān)操作技巧,需要的朋友可以參考下2019-05-05Python實現(xiàn)嵌套列表及字典并按某一元素去重復(fù)功能示例
這篇文章主要介紹了Python實現(xiàn)嵌套列表及字典并按某一元素去重復(fù)功能,涉及Python列表嵌套列表、列表嵌套字典,及按照某一元素去重復(fù)的相關(guān)操作方法,需要的朋友可以參考下2017-11-11如何使用python socket模塊實現(xiàn)簡單的文件下載
這篇文章主要介紹了如何使用python socket模塊實現(xiàn)簡單的文件下載,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09