centrality.py 28.2 KB
from igraph import *
import pymongo
import matplotlib.pyplot as plt

conn = pymongo.MongoClient("localhost")
db = conn.test
MOVIE = db.movie
cur = MOVIE.find()
audiences = {}
salesPerScreens = []
salesPerScreensToObj = {}
for c in cur:
    audiences[c["name"]] = c["audiences"]
    salesPerScreens.append({"name": c["name"], "value": c["sales"] / c["screens"]})
    salesPerScreensToObj[c["name"]] = round(c["sales"] / c["screens"], 5)

salesPerScreensTmp = salesPerScreens[:]
salesPerScreensSorted = sorted(salesPerScreensTmp, key=lambda n: salesPerScreens[salesPerScreens.index(n)]["value"], reverse=True)[:50]

data = {
    "명량": "최민식,류승룡,조진웅,김명곤,진구,이정현,권율,노민우,이승준,박보검,김원해,이해영,장준녕,김길동,김강일,강태영,박노식,최덕문,조복래,문영동,이주실,주석태,고경표,김태훈,한이진,최창균,신창수,김현태,정재우,김구택,이재구,조하석",
    "극한직업": "류승룡,이하늬,이동휘,공명,진선규,양현민,장진희,오정세,이중옥,송영규,신하균,김의성,김종수,허준석",
    "신과함께-죄와 벌": "하정우,차태현,주지훈,김향기,마동석,김동욱,도경수,오달수,임원희,장광,정해균,김수안,정지훈,예수정,이준혁,남일우",
    "국제시장": "황정민,김윤진,오달수,정진영,장영남,라미란,김슬기,이현,김민재,태인호,황선화,엄지성,장대웅,신린아,이예은,고윤,박선웅",
    "베테랑": "황정민,유아인,유해진,오달수,장윤주,김시후,오대환,정웅인,정만식,송영창,진경,유인영,박소담,이동휘,배성우,천호진",
    "도둑들": "김윤석,김혜수,이정재,전지현,김해숙,오달수,김수현,최덕문,최진호,예수정,채국희,기국서,주진모",
    "7번방의 선물": "류승룡,박신혜,갈소원,오달수,박원상,김정태,정만식,김기천,조덕현,조재윤,박길수",
    "암살": "전지현,이정재,하정우,오달수,조진웅,이경영,최덕문,김의성,박병은,김홍파,진경,김인우,심희섭,허지원,허정도,정인겸,정규수,이환,우상전",
    "광해, 왕이 된 남자": "이병헌,류승룡,한효주,장광,김인권,심은경,박지아,이양희,전국향,신정근,양준모,문창길",
    "신과함께-인과 연": "하정우,주지훈,김향기,마동석,김동욱,임원희,남일우,도경수,이준혁,정지훈,조한철,장광,정해균",
    "택시운전사": "송강호,류준열,유해진,박혁권,최귀화,이정은,차순배,이봉련,류성현,허정도,신담수,엄태구,박민희,유은미,권순준,윤석호,이호철,이용이",
    "부산행": "공유,정유미,마동석,김수안,최우식,안소희,김의성,예수정,박명신,최귀화,정석용,장혁진",
    "변호인": "송강호,김영애,오달수,곽도원,임시완,송영창,정원중,조민기,이항나,이성민,차광수,한기중,심희섭,조완기,차은재",
    "해운대": "설경구,하지원,박중훈,엄정화,이민기,강예원,김인권,송재호,김지영,여호민,성병숙,도용구,노준호,지대한,장명갑,최재섭,천보근,김유정,김유빈,김정운",
    "괴물": "송강호,변희봉,박해일,배두나,고아성,오달수,박노식,고수희,윤제문,김뢰하,이재응,이동호",
    "왕의 남자": "감우성,이준기,유해진,정진영,강성연,장항선,정석용,이승훈",
    "기생충": "송강호,이선균,조여정,최우식,박소담,이정은,장혜진,박명훈,정지소,정현준",
    "검사외전": "황정민,강동원,이성민,박성웅,김응수,신소율,주진모,김원해,김홍파,김병옥,박종환,전배수,박지환,손종학,김종수,한재영,민무제,이호철",
    "엑시트": "조정석,윤아,고두심,박인환,황효은,김지영2,강기영,배유람,유수빈,정민성,박성일,신세휘,김강훈,김병순,김종구,이봉련",
    "설국열차": "송강호,고아성",
    "관상": "송강호,이정재,백윤식,조정석,이종석,김혜수,이도엽,김의성,정규수,채상우,이윤건,유상재",
    "해적: 바다로 간 산적": "김남길,손예진,신정근,유해진,이경영,오달수,김태우,박철민,김원해,조달환,조희봉,정성화,최진리,이이경,안내상,김경식,이대연",
    "수상한 그녀": "심은경,나문희,박인환,성동일,이진욱,김현숙,황정민2,김슬기,박형우,진영,한지은,정인기,장유,하연주,박혜진,홍석연,이상언,박승태,강한샘",
    "백두산": "이병헌,하정우,마동석,전혜진,배수지,이상원,옥자연,한수현,강신철,이경영,조한철,최광일,김시아,임형국,박주환,남성준,서현우,김민식,박지홍,김준원,남문철,박성근",
    "과속스캔들": "차태현,박보영,왕석현,임지규,황우슬혜,임승대,정원중,김기방,박영서",
    "국가대표": "하정우,성동일,김지석,김동욱,최재환,이재응,이은성,이한위,이혜숙,김지영,현쥬니,황하나",
    #"디워": "", #외국 배우
    "공조": "현빈,유해진,김주혁,장영남,이해영,윤아,이동휘,공정환,엄효섭,신현빈,박민하,전국환,이이경,박진우,박형수",
    "히말라야": "황정민,정우,조성하,김인권,라미란,김원해,이해영,전배수,정규수,성병숙",
    "밀정": "송강호,공유,한지민,엄태구,신성록,허성태,서영주,정유안,이수광,고준,최유화,김동영,곽자형,조영규,이설구,권수현,이환,유상재,한수연,남문철,김수웅,최장원,허형규,백인권,정도원,신성일,김의건",
    "최종병기 활": "박해일,류승룡,김무열,문채원,이한위,김구택,이경영,박기웅,이승준,이재구,박노식,이다윗,전민서,문영동,김현태,강태영,조하석,김길동,정제우,서동구,지건우",
    "써니": "유호정,심은경,강소라,고수희,홍진희,김민영,김보미,이연경,남보라,민효린,박진주,박영서,김예원,천우희,정원중,김영옥,김시후,김혜옥,하승리",
    "1987": "김윤석,하정우,유해진,김태리,이희준,박희순,서현우,박지환,이화룡,이창훈,김수진,박경혜,현봉식,김승훈,김경덕,유승목,이용직,박지홍,김의성,최광일,김종수,김혜정,조우진,임철형,이현균",
    "베를린": "하정우,한석규,류승범,전지현,이경영,최무성,곽도원,김서형,배정남",
    "마스터": "이병헌,강동원,김우빈,엄지원,오달수,박해수,진경,김정우,우도환,배정남,조현철,정원중,주석태,유연수,이순원,정수교,허형규",
    "터널": "하정우,배두나,오달수,조현철,정석용,박혁권,남지현,신정근,유승목,이철민",
    "내부자들": "이병헌,조승우,백윤식,이경영,김홍파,배성우,조재윤,김대명,조우진,이엘,정만식,김병옥,김의성,박진우,남일우",
    "인천상륙작전": "이정재,이범수,진세연,정준호,박철민,김병옥,길금성,신수항,김희진,정민지,김진우,함형기,나야,이충구,성혁,고윤,장준학,진용욱,박정원,양범,이해준,윤석진,김중희,윤다영,반세정,조원희,송경철,김중기,김제열,이창세",
    "럭키": "유해진,이준,조윤희,임지연,조한철,김민상,차엽,김지안,성병숙,박승태,고준,이용녀,금광산,김한규,차순형,이승철,이성욱,정희태,이동용,김서현,송요셉",
    "은밀하게 위대하게": "김수현,박기웅,이현우,손현주,박혜숙,고창석,신정근,김성균,장광,홍경인,이채영,최우식,구승현,조용진,이연경,엄태구,리민,조영진,윤원석,박정기,고인범,김법래",
    "범죄도시": "마동석,윤계상,조재윤,최귀화,임형준,진선규,홍기준,허동원,하준,김성규,박지환,허성태,민경진,엄지성,김구택,박상규,유지연,배진아,윤병희,이도군",
    "곡성": "곽도원,황정민,천우희,김환희,허진,장소연,김도윤,손강국,박성연,전배수,정미남,최귀화",
    "화려한 휴가": "김상경,안성기,이요원,이준기,박철민,박원상,송재호,나문희,권태원,엄효섭,박용수,손병호,이얼",
    "좋은 놈, 나쁜 놈, 이상한 놈": "송강호,이병헌,정우성,윤제문,류승수,송영창,손병호,오달수,이청아",
    "늑대소년": "송중기,박보영,장영남,유연석,김향기,이영란,유승목,서동수,우정국,남정희,구본임,안도규,신비",
    "군함도": "황정민,소지섭,송중기,이정현,김수안,이경영,김민재,김중희,김인우,신승환,백승철,장성범,윤경호",
    "웰컴 투 동막골": "신하균,정재영,강혜정,임하룡,서재경,류덕환,정재진,이용이,박남희,조덕현,유승목,심원철,강현중,리민,고관재,권오민,홍예인",
    "사도": "송강호,유아인,문근영,전혜진,김해숙,박원상,진지희,박소담,서예지,이광일,이대연,강성해,최덕문,정석용,최민철,박명신,조승연,엄지성",
    "아저씨": "원빈,김새론,김태훈,김희원,김성오,이종필,김효서,송영창,황화순,남경읍",
    "미녀는 괴로워": "김아중,주진모2,김현숙,성동일,임현식,이한위,지서윤,명규,박노식,정성윤,베니",
    "전우치": "강동원,임수정,김윤석,유해진,송영창,주진모,김상호,선우선,공정환,권태원,이숙,박남희,이용녀,김기천",
    "연평해전": "김무열,진구,이현우,김지훈,장준학,주희중,이완,김하균,한이진,강한샘,김동범,이철민,박정학,천지유,이재원,김도혁,황인무,한강일,서동건,이한종,유형균,김선길,최건영,정해민,조하늘,김충길,서상원,황세정,장의수,권화운",
    "타짜": "조승우,김혜수,백윤식,유해진,김응수,김상호,김윤석,주진모,김경익,이수경,김정난,권태원,조상건,서동수,백도빈",
    "청년경찰": "박서준,강하늘,성동일,박하선,고준,이호정,조준",
    "숨바꼭질": "손현주,문정희,전미선,김원해,정준원,김수안,김지영3,이준혁,노수산나,이영석,이영미,성유빈,엄지성,허남일,리민,이승희,백종우,김정우,정민성,조한철,조시내",
    "덕혜옹주": "손예진,박해일,윤제문,라미란,정상훈,박수영,김소현,박주미,안내상,김재욱,여회현,신린아,이효제,이채은,이세나,김승훈,도용구,이승진,금새록,이황의,정세형,안상우,송서하,이중현",
    "더 테러 라이브": "하정우,이경영,전혜진,이다윗,김소진,김홍파,김해인,한수현,이청희,강진아,강신철,최진호,김대명",
    "감시자들": "설경구,정우성,한효주,김병옥,진경,이준호,손민석,이태형,강신하,이동휘,이화정,박지훈,김지훈,신성일,변요한,장원형,박지연,최원,변정현,이동진,이도윤,정재호,김준우,이현균",
    "검은 사제들": "김윤석,강동원,박소담,김의성,김병옥,이호재,남일우,손종학,조수향,박웅,이정열,김소숙,민진웅,유수미",
    "안시성": "조인성,남주혁,박성웅,배성우,엄태구,설현,박병은,오대환,정은채,유오성,성동일,정지훈,여회현,장광",
    "의형제": "송강호,강동원,전국환,박혁권,윤희석,최정우,정인기,조석현,차엽,권범택",
    "더 킹": "조인성,정우성,배성우,김아중,류준열,김의성,김민재,정성모,정은채,김소진,황승언,오대환,정인기,송영창,고아성,박정민,조우진,정원중,류태호,한수연,이주연,성동일,이열음,김규선,장명갑,송형수,남문철,남명렬,최귀화",
    "완득이": "김윤석,유아인,박수영,김상호,김영재,박효주,강별,김동영",
    "완벽한 타인": "유해진,조진웅,이서진,염정아,김지수,송하윤,윤경호,지우",
    "타워": "설경구,손예진,김상경,김인권,안성기,송재호,이주실,이한위,권태원,전국향,정인기,차인표,전배수,박준혁,김성오,민영,이주하,조민아,도지한,이현조,권현상,이창용,김수진,박호영,박재웅",
    "투사부일체": "정준호,정웅인,김상중,정운택,강성필,최윤영,한효주,박용기,임세호,박용식,이기열,전창걸",
    "독전": "조진웅,류준열,김주혁,김성령,박해준,남문철,서현우,강승현,정준원,정가람,진서연,이주영,김동영,금새록",
    "추격자": "김윤석,하정우,서영희,박효주,김유정,최정우,정인기,구본웅,민경진", #68위. 500만 이상
    # "공작": "황정민,이성민,조진웅,주지훈,김홍파,정소리,기주봉,김응수,채용,박진영,남문철,최병모,김인우,정기섭,이승준,양현민,허승,엄지만,백승익,권범택,최정인,김소진,박혜영,김지나,곽자형,조주희",
    # "바람과 함께 사라지다": "차태현,오지호,민효린,성동일,신정근,고창석,송종호,이채영,김길동,김향기,천보근,김구택,독고준",
    # #"님아, 그 강을 건너지 마오": "", #영화배우가 아님
    # "봉오동 전투": "유해진,류준열,조우진,박지환,최유화,성유빈,이재인,홍상표,원풍연,양현민",
    "조선명탐정 : 각시투구꽃의 비밀": "김명민,한지민,오달수,최무성,우현,이재용,예수정,정인기", #salesPerScreensSorted 43위
    # "군도: 민란의 시대": "하정우,강동원,조진웅,마동석,정만식,김성균,주진모,이경영,이성민,윤지혜,김재영,송영창,김병옥,임현성,강현중",
    # "남산의 부장들": "이병헌,이성민,곽도원,이희준,김소진,서현우,김승훈,박성근,지현준,박지일,이태형,주석태,이도국,김민상",
    # "범죄와의 전쟁: 나쁜놈들 전성시대": "최민식,하정우,조진웅,마동석,곽도원,김성균,송영창,김종수,권태원,김종구,김혜은,김영선",
    # "신세계": "이정재,최민식,황정민,박성웅,송지효,김홍파,장광,김윤성,최일화,권태원,나광훈,박로사,주진모",
    # "도가니": "정유미,공유,김현수,정인서,백승환,임현성,김주령,최진호,장광,전국환,엄효섭,권홍석,김지영,엄지성,남명렬,박혜진,김민상,장유",
    # "내 아내의 모든 것": "임수정,이선균,류승룡,이광수,김효준,이도아,김은경,염해란,이새로미,이진희,하복음",
    # "판도라": "김남길,김영애,문정희,정진영,이경영,강신일,김대명,유승목,김주현,박선희,공정환,주석태,송철호,김영웅,김태훈2,주진모,송영창,배강유,김세동,김한종,박대원,심성효,박팔영,최효상,권홍석,허선행,심영민,조덕현,손종학,김종구,장준녕,조한철,임승대,송영규,강석원,곽민석,정인기,백도빈,최명진,강태식,이승준,어성욱,형원,김태현,박용,이태형,강지원,오예설",
    # "나쁜 녀석들: 더 무비": "마동석,김상중,김아중,장기용,박효준,김인우,이재윤,박원상,조영진,박형수,박상욱,한정현,전익령,김형묵,윤병희,지승현,강영묵",
    "가문의 위기(가문의 영광2)": "신현준,김수미,김원희,정준하,임형준,공형진,탁재훈,정호빈,김해곤", #salesPerScreensSorted 21위
    # "연가시": "김명민,문정희,김동완,이하늬,엄지성,염현서,강신일,송영창,조덕현,최정우,전국환,이형철,정인기,김세동,조한철,민경진",
    # "강철비": "정우성,곽도원,김갑수,김의성,이경영,조우진,정원중,김명곤,박은혜,장현성,박선영,안미나,원진아,이재용,이윤건,김형종",
    # "강철중: 공공의 적 1-1": "설경구,정재영,문성근,강신일,유해진,이문식,김남길,연제욱,정원중",
    # "아가씨": "김민희,김태리,하정우,조진웅,김해숙,이용녀,이동휘,곽은진,조은형",
    "말아톤": "조승우,김미숙,이기영,백성현,안내상", #salesPerScreensSorted 5위
    # "용의자": "공유,박희순,조성하,유다인,김성균,조재윤,김민재,김의성,원풍연,원진,송재림,최종률,남보라,기주봉,조석현,이용직,최태환,박지일",
    # "건축학개론": "엄태웅,한가인,이제훈,배수지,조정석,유연석,조현철,김의성,이승호,박수영,김동주",
    "댄싱퀸": "황정민,엄정화,정성화,정규수,오나라,한수아,이아린,박정민,박사랑,여무영,성병숙,라미란,이대연,이한위,최우리,권병길,서동원", #salesPerScreensSorted 46위
    "7급 공무원": "김하늘,강지환,류승룡,유승목,강신일,장남열,김형범,장영남,김정팔,김형종,박성민", #salesPerScreensSorted 45위
    "우리 생애 최고의 순간": "문소리,김정은,엄태웅,김지영2,조은지,차민지,남궁,이미도,조영진,이봉규,정석용,하정우,정세형,김강민,김종언,최욱", #salesPerScreensSorted 34위
    # "꾼": "현빈,유지태,배성우,박성웅,나나,안세하,최덕문,허성태,최일화,김태훈3",
    # "타짜-신의 손": "최승현,신세경,곽도원,유해진,김윤석,이하늬,김인권,이경영,고수희,오정세,박효주,이준혁,이동휘,김원해,고준,조경현,박수영,김민상,손상경,임정은,정윤석", #94위, 400만 이상
    # "박수건달": "박신양,김정태,엄지원,정혜영,김성균,최일화,최지호,김형범,박정자,윤송이",
    # "조선명탐정 : 사라진 놉의 딸": "김명민,오달수,이연희,조관우,정원중,이채은,황채원,최무성,우현,황정민2",
    # "역린": "현빈,정재영,조정석,한지민,조재현,박성웅,김성령,정은채,송영창,이도경,김민재,김대명,김주완,유은미,천보근,구승현,이재희,문지현,김창회,서이숙,성유빈,전국향",
    # "남한산성": "이병헌,김윤석,박해일,고수,박희순,송영창,조우진,이다윗,허성태,김법래,조아인,진선규,유순웅,최종률,문창길,김서현,김중기,윤세웅,신기준,곽자형,박지일",
    # "암수살인": "김윤석,주지훈,진선규,정종준,허진,김중기,김영웅,전국환,김종수,배해선,이봉련,정기섭,원현준,권소현",
    # "국가부도의 날": "김혜수,유아인,허준호,조우진,김홍파,엄효섭,송영창,권해효,조한철,류덕환,박진주,장성범,전배수,염혜란,김형묵,동하,김민상,정규수", #100위
    # "쌍화점": "조인성,주진모2,송지효,임주환,여욱환,심지호,송중기,장지원,김춘기,이종구,권태원,도용구,고인범,함건수,노민우,도예성,박종수",
    # "신기전": "정재영,한은정,허준호,안성기,정성모,김명수,이도경,인교진,류현경,서주성,조원희,오순태,신정근,이승근,이창직,최승일,강지은,방수형",
    # "82년생 김지영": "정유미,공유,김미경,공민정,박성연,이봉련,김성철,이얼,손성찬,강애심,김정영,류아영",
    # "귀향": "손숙,강하나,최리,임성철,정무성,황화순,류신,서미지,정인기,오지혜,김민수,이승현,김시은,박근수,홍세나,남상지,차순형,박충환,지윤재,노지용,윤정로",
    # "신의 한 수": "정우성,안성기,이범수,김인권,이시영,안길강,이도경,최진혁,정해균,안서현,김명수,황춘하,이일섭,김세동,김주명,이용녀,유순철,홍성덕,박지훈,윤희철,김소진,유재상",
    # "태풍": "이정재,이미연,장동건,김갑수,허욱,선호진,강신성일,박찬영,김란흔,민지환",
    # "부러진 화살": "안성기,박원상,나영희,김지호,문성근,이경영,진경,박수일,김준배,김응수",
    # "끝까지 간다": "이선균,조진웅,신정근,정만식,신동미,김동영,박보검,주석태,허정은,이재원",
    # "스파이": "설경구,문소리,고창석,한예리,정인기,라미란,송재호,김지영",
    # "그것만이 내 세상": "이병헌,윤여정,박정민,문숙,최리,황석정,백현진,조관우,박지훈,김서원,홍석연",
    # "돈": "류준열,유지태,조우진,손종학,원진아,정만식,임세미,김민재,김재영,김종수,진선규",
    # "악인전": "마동석,김무열,김성규,유승목,최민철,김윤성,허동원,김승현,오희준,문동혁",
    # "이끼": "정재영,박해일,유준상,유선,허준호,유해진,김상호,김준배,강신일,임승대,정규수,이철민,윤아름,오순태",
    # "한반도": "조재현,안성기,차인표,문성근,강신일,김상중,강수연,독고영재,백일섭,최일화,박용수,이도련,이한위,박길수",
    # "포화속으로": "차승원,권상우,최승현,김승우,문재원,김혜성,신현탁,구성환,김동범,김윤성,탁트인,윤승훈,김호원,김한준,조중휘,박태주,조원희,라경덕,황준영,김태환",
    # "시동": "마동석,박정민,정해인,염정아,최성은,김종수,윤경호,김경덕",
    # "아이 캔 스피크": "나문희,이제훈,박철민,염혜란,이상희,이지훈,정연주,김소진,김일웅,성유빈,최수인,이재인",
    # "마녀": "김다미,조민수,박희순,최우식,고민시,최정우,오미희,다은,김병옥,이주원,김하나,이시우",
    # "탐정: 리턴즈": "권상우,성동일,이광수,서영희,이일화,남명렬,손담비,최덕문,최성원,박성일,오희준,정연주,김성규,김중기,이청희,김용준,박성연,홍서백,홍은택",
    "공공의 적 2": "설경구,정준호,강신일,박근형,변희봉,임승대,박상욱,엄태웅,정규수", #salesPerScreensSorted 32위
    # "퀵": "고창석,강예원,이민기,김인권,주진모,김병철,김은옥,유승목,윤제문,마동석,송재호,전국환,오정세",
    "친절한 금자씨": "이영애,최민식,권예영,김시후,남일우,김병옥,오달수,이승신,김부선,라미란", #salesPerScreensSorted 50위
    # "감기": "장혁,수애,박민하,유해진,이희준,김기현,이상엽,박효주,박정민,최병모,김문수,장경업",
    # "스물": "김우빈,이준호,강하늘,정소민,이유비,민효린,정주연",
    # "거북이 달린다": "김윤석,정경호,견미리,선우선,김지나,신정근,최권,차은재,주진모,이무생,유하복,임형택,김희원",
    # "헬로우 고스트": "차태현,강예원,이문수,고창석,장영남,천보근,공호석,정규수,김진성,구승현",
    "하모니": "김윤진,나문희,강예원,이다희,장영남,박준면,정수영,이태경,문경민,도용구,지성원,차진혁,박혜진", #salesPerScreensSorted 44위
    # "오싹한 연애": "손예진,이민기,박철민,김현숙,이미도,신성훈,윤지민,황승언,이현진", #128위. 300만 이상
    "너는 내 운명": "전도연,황정민,나문희,정유석,서주희,윤제문,임종윤,김상호,고수희,김부선,김광규", #salesPerScreensSorted 42위
    "마파도": "이정진,이문식,여운계,김수미,김을동,김형자,길해연,오달수,서영희", #salesPerScreensSorted 13위
    "태극기 휘날리며": "장동건,원빈,이은주,공형진,장민호,이영란", #salesPerScreensSorted 2위
    }
#500만 이상 + 스크린 수당 매출액 50위 이상 => 79개 영화, 730개 노드, 9348개 엣지

def named_union(graph1, graph2): #두 그래프 합성
    A = graph1.copy()
    B = graph2.copy()
    Aname = A.vs["name"][:]
    Bname = B.vs["name"][:]
    Aes = A.es[:]
    Bes = B.es[:]
    Anams = set(Aname)
    Bnams = set(Bname)
    A.add_vertices(list(Bnams - Anams))
    B.add_vertices(list(Anams - Bnams))
    nams = sorted(Anams | Bnams)
    Aind = [nams.index(nm) for nm in A.vs['name']]
    Bind = [nams.index(nm) for nm in B.vs['name']]
    A = A.permute_vertices(Aind)
    B = B.permute_vertices(Bind)
    Z = A | B
    Z.vs['name'] = nams
    Z.vs["label"] = Z.vs["name"][:]
    return Z

def replaceText(x):
    for r in [" ", "-", ":", "(", ")", ",", "1", "2", "3", "4", "6", "7", "8", "9"]:
        x = x.replace(r, "")
    return x

def printResult(names, values, x, y, n):
    for i in range(0, n):
        text = replaceText(names[i][:])
        name = names[i].rjust(x - len(text))
        value = str(round(values[i], 5))
        value = value.rjust(y)
        print(name, value)

print("<스크린수 당 매출액 1~50위>")
# nnn = 0
# for s in salesPerScreensSorted:
#     if(s["name"] not in data):
#         print(nnn, s)
#     nnn += 1
printResult(list(map(lambda x:x["name"], salesPerScreensSorted)), list(map(lambda x:x["value"], salesPerScreensSorted)), 30, 16, 50)

frequency = {}
weight = {}
keys = []
top = data["명량"].split(",")
for i in range(0, len(top)-1):
    frequency[top[i]] = 1
    for j in range(i+1, len(top)):
        join = sorted([top[i], top[j]])
        join = join[0]+","+join[1]
        weight[join] = {
        "audiences": audiences["명량"],
        "count": 1
        }
        keys.append(join)
frequency[top[len(top) - 1]] = 1
G = Graph.Full(len(top))
G.vs["name"] = top[:]
G.vs["label"] = G.vs["name"][:]
topTmp = data["명량"]
del data["명량"]

for movie in data:
    actors = data[movie].split(",") 
    g = Graph.Full(len(actors))
    g.vs["name"] = actors[:]
    g.vs["label"] = g.vs["name"][:]
    G = named_union(G, g)
    for a in actors:
        if(a not in frequency):
            frequency[a] = 1
        else:
            frequency[a] += 1

    for i in range(0, len(actors)-1):
        for j in range(i+1, len(actors)):
            join = sorted([actors[i], actors[j]])
            join = join[0]+","+join[1]
            if(join not in weight):
                weight[join] = {
                "audiences": audiences[movie],
                "count": 1
                }
                keys.append(join)
            else:
                weight[join]["audiences"] += audiences[movie]
                weight[join]["count"] += 1

print("\n<영화 출연 수>")
for f in sorted(list(frequency.keys()), key=lambda x: frequency[x], reverse=True)[:10]:
    print(f, str(frequency[f]).rjust(3))

print("\n<같은 영화에 같이 출연한 빈도수>")
topten = sorted(keys, key=lambda n: weight[n]["count"], reverse=True)[:10]
for t in topten:
    tt = replaceText(t)
    print(t.rjust(14 - len(tt)) + " ", weight[t]["count"])

names, names1, names2 = G.vs["name"][:], G.vs["name"][:], G.vs["name"][:]

print("\n<degree>")
degree = G.degree()
degreeSorted = sorted(degree, reverse=True)[:10]
topDegree = sorted(names1, key=lambda n: degree[names2.index(n)], reverse=True)[:10]
printResult(topDegree, degreeSorted, 5, 4, 10)

edge_weight = [1] * len(G.es)
for k in keys:
    if(weight[k]["count"] == 1):
        continue
    [s, e] = k.split(",")
    sIdx, eIdx = names.index(s), names.index(e)
    edge = G.es.select(_between = ([sIdx], [eIdx]))[0]
    edge_weight[edge.index] = weight[k]["count"]

print("\n<betweenness>")
bn = G.betweenness(weights=edge_weight)
bnSorted = sorted(bn, reverse=True)[:10]
topBn = sorted(names1, key=lambda n: bn[names2.index(n)], reverse=True)[:10]
printResult(topBn, bnSorted, 5, 12, 10)

print("\n<closeness>")
cn = G.closeness(weights=edge_weight)
cnSorted = sorted(cn, reverse=True)[:10]
topCn = sorted(names1, key=lambda n: cn[names2.index(n)], reverse=True)[:10]
printResult(topCn, cnSorted, 5, 8, 10)

print("\n<eigen>")
eg = G.eigenvector_centrality(weights=edge_weight)
egSorted = sorted(eg, reverse=True)[:10]
topEg = sorted(names1, key=lambda n: eg[names2.index(n)], reverse=True)[:10]
printResult(topEg, egSorted, 5, 8, 10)

avgOfBn = []
avgOfBnToObj = {}
totalBn = 0
topActors = topTmp.split(",")
for actor in topActors:
    i = names.index(actor)
    totalBn += bn[i]
avgOfBn.append({"movie":"명량", "avgOfBn":round(totalBn / len(topActors), 5)})
avgOfBnToObj["명량"] = round(totalBn / len(topActors), 5)

for movie in data:
    totalBn = 0
    actors = data[movie].split(",")
    for actor in actors:
        i = names.index(actor)
        totalBn += bn[i]
    avgOfBn.append({"movie":movie, "avgOfBn":round(totalBn / len(actors), 5)})
    avgOfBnToObj[movie] = round(totalBn / len(actors), 5)

print("\n<average of betweenness>")
avgOfBnSorted = sorted(avgOfBn, key=lambda n: n["avgOfBn"], reverse=True)[:10]
for a in avgOfBnSorted:
    text = replaceText(a["movie"])
    print(a["movie"].rjust(30 - len(text)), str(a["avgOfBn"]).rjust(11))

print("\n<total nodes>")
print(len(G.vs))

print("\n<total edges>")
print(len(G.es))

out = plot(G,
    bbox = (2000, 2000),
    vertex_size = [int((float(i)/max(bn)) * 20) + 5 for i in bn],
    vertex_label_size = 10,
    vertex_label_dist = 1,
    vertex_label_angle = 2,
    vertex_label_color = "black",
    edge_color = "grey",
    #autocurve = True,
    layout = G.layout("fr")
    )
out.save("test.png")

x, y = [], []
for movie in avgOfBnToObj:
    x.append(avgOfBnToObj[movie])
    y.append(salesPerScreensToObj[movie])
plt.scatter(x, y)
plt.show()