python 은 그림 에서 작은 하위 그림 을 그 리 는 방법 을 실현 합 니 다.

가끔 은 그림 의 정 보 를 직관 적 으로 보 여주 기 위해 큰 그림 에 자식 그림 을 추가 하 는 방식 으로 데이터 분석 을 할 수 있다.다음 그림 과 같다.

구체 적 인 코드 는 다음 과 같다.이 그림 은 데이터 베 이 스 를 연결 했다.물론 중요 한 것 은 데이터 전시 가 아니 라 서브 맵 을 추가 하 는 방법 이다.

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():
  #      
  conn = mdb.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='alibaba_trace', charset='utf8')

  #         ,          ,                conn.commit()
  conn.autocommit(1) # conn.autocommit(True)

  #   cursor()        
  cursor = conn.cursor()
  #            CAPI ,  ,               。
  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()
    #        
    conn.rollback()
  finally:
    #       
    cursor.close()
    #        
    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            
  # 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 은 한 장의 그림 에서 작은 하위 그림 을 그 리 는 방법 을 실현 합 니 다.바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 많은 응원 을 바 랍 니 다.

좋은 웹페이지 즐겨찾기