본문 바로가기
PYTHON

20200422 - 파이썬, 데이터 시각화(matplotlib, pyplot), 차트 작성, 구글번역

by 낫싱 2020. 4. 22.
728x90
반응형

 

20200422_BeautifulSoup_jar.py
0.01MB
20200422_Matplotlib_pyplot_jar.py
0.01MB
20200422_Matplotlib-3DScatter.py
0.00MB
20200422_Matplotlib-fromBAR.py
0.00MB
20200422_Matplotlib-fromScatter.py
0.01MB
20200422_Matplotlib-ggTranslator.py
0.00MB

대표사진 삭제

사진 설명을 입력하세요.

대표사진 삭제

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

# BeautifulSoup 기본 사용 # 예제로 사용할 html 문서 # 카페의 (BeautifulSoup 기본 사용 데이터) 게시글 내용 복사 html_doc = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="title"><b>The Dormouse's story</b></p> <p class="story">Once upon a time there were three little sisters; and their names were <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>; and they lived at the bottom of a well.</p> <p class="story">...</p> """ from bs4 import BeautifulSoup soup = BeautifulSoup(html_doc, 'html.parser') # soup.prettify() : html 문서의 계층 구조를 알기 쉽게 보여준다 print(soup.prettify()) # title 태그 반환 soup.title print(soup.title) # title 태그 이름('title') 을 반환 soup.title.name print(soup.title.name) # 지정한 태그의 이름까지 꺼낼 경우 # title 태그의 문자열을 반환 soup.title.string print(soup.title.string) # title 태그의 부모 태그의 이름을 반환 soup.title.parent.name print(soup.title.parent.name) # 첫 p 태그를 반환 soup.p print(soup.p) # 'class' 속성이 있는 첫 p 태그를 반환 # soup.p['class'] print(soup.p['class']) # a 태그 반환 soup.a print(soup.a) # 모든 a 태그를 리스트 형태로 반환 soup.find_all() print(soup.find_all('a')) # soup.find() : 설정한 값에 해당하는 태그 반환 # id가 'link3'인 태그 반환 soup.find(id="link3") # get() : href 속성을 반환 for link in soup.find_all('a'): print(link.get('href')) # get_text() : html 문서 안에 있는 텍스트 반환 print(soup.get_text()) # Requests 기본 사용 ''' html 소스 가져오기 Requests를 사용하면 아래와 같이 간단한 코드만으로 웹페이지의 html 소스를 가져올 수 있다. ''' import requests # requests.get() 에 의한 response에는 다양한 정보가 포함되어 있다. r = requests.get('http://google.com') html = r.text print(html) ''' 웹페이지의 content를 유니코드 형태가 아니라 bytes 형태로 얻기 위해서는 r.text가 아닌 r.content를 사용할 수도 있다. ''' r = requests.get('https://google.com') html = r.content print(html) # response 객체 : request.get()의 반환 객체 ''' response 객체는 HTTP request에 의한 서버의 응답 정보를 갖고 있다. status_code, headers, encoding, ok 등의 속성을 이용하면 다양한 정보를 얻을 수 있다. ''' import requests r = requests.get('https://google.com') html = r.content print(r.status_code) # 200 : 잘 실행됨! print(r.headers['Content-Type']) print(r.encoding) print(r.ok) ''' status_code는 정상일 경우 200, 페이지가 발견되지 않을 경우 404 encoding 방식은 ISO-8859-1 이고, 요청에 대한 응답이 정상적으로 이루어졌음을 알 수 있다. (status_code가 200보다 작거나 같은 경우 True, 그렇지 않은 경우 False) ''' ''' 만약 인코딩 방식이 달라서 한글이 제대로 표시되지 않으면 아래와 같이 인코딩 방식을 변경 ''' r.encoding = 'utf-8' ''' requests를 이용해서 html 소스를 가져왔지만, 단순한 문자열 형태이기 때문에 파싱(parsing)에 적합하지 않다. 그렇기 때문에 BeautifulSoup을 이용해서 파이썬이 html 소스를 분석하고 데이터를 추출하기 편리하도록 객체로 변환 ''' # 많이 본 네이버 뉴스 ''' 파이썬과 BeautifulSoup을 이용하면 웹 크롤러를 간단하게 만들 수 있다. 네이버 뉴스의 '많이 본 뉴스' 가져오기 ''' import requests from bs4 import BeautifulSoup ''' 주소 : 'https://news.naver.com/main/ranking/popularDay.nhn?rankingType=popular_day&date=20200422' 위의 주소에서 알 수 있듯이 맨 뒤에 날짜를 바꿔주면 해당하는 날짜의 많이 본 뉴스를 볼 수 있다. ''' url = 'https://news.naver.com/main/ranking/popularDay.nhn?rankingType=popular_day&date=20200422' r = requests.get(url) html = r.content soup = BeautifulSoup(html, 'html.parser') # 원하는 데이터 추출하기 # 네이버 많이 본 뉴스 페이지에 헤드라인만 추출해서 출력 titles_html = soup.select('.ranking_section > ol> li > dl > dt > a') # 30개의 헤드라인이 순서대로 출력 for i in range(len(titles_html)): print(i+1, titles_html[i].text) #삼성전자 주식 일별시세 가져오기 ''' 네이버 증권에서 제공하는 삼성전자 종목(005930)의 일별시세를 가져오기 주소 : http://finance.naver.com/item/sise_day.nhn?code=005930 위의 주소와 같이 뒷부분에 code=005930와 같이 종목코드를 입력해주면 해당 종목의 일별시세를 볼 수 있다. ''' # 원하는 데이터 추출하기 ''' 종목의 일별시세 페이지에서 날짜, 종가, 거래량만 추출해서 출력해보기 ''' ''' 개발자 도구(ctrl+shift+i 또는 f12)를 통해 소스를 보면 날짜, 종가, 거래량이 나온 부분 찾을 수 있다. 'table', 'tr, 'td' 태그 안의 텍스트임을 알 수 있다. ''' import requests from bs4 import BeautifulSoup as bs # 종목의 코드와 페이지 수를 입력하는 함수 def print_stock_price(code, page_num): # result에는 날짜, 종가, 거래량이 추가 result = [[], [], []] # 주소 뒷부분에 &page=2 와 같은 형식으로 연결해주면 # 해당 페이지의 일별시세 볼 수 있다 for n in range(page_num): url = 'http://finance.naver.com/item/sise_day.nhn?code=' + code + '&page=' + str(n+1) #페이지값은 문자열로! #주소줄 기입 시 한줄로! r= requests.get(url) html = r.content soup = bs(html,'html.parser') # table 안의 tr 태그를 리스트형태로 가져온다 tr = soup.select('table > tr') # 첫번째 tr태그는 th태그가, # 마지막 tr태그는 페이지 넘버가 있어서 제외 for i in range(1, len(tr)-1): #text가 없는 row가 존재. if tr[i].select('td')[0].text.strip(): #text가 있는 row에 대해서 #첫 번째(날짜),두번재(종가),일곱번째(거래량) #td태그의text를 가져온다. result[0].append(tr[i].select('td')[0].text.strip()) result[1].append(tr[i].select('td')[1].text.strip()) result[2].append(tr[i].select('td')[6].text.strip()) for i in range(len(result[0])): print(result[0][i],result[1][i],result[2][i]) #------------------print_stock_price() END -----------------------------#

 

# 해당 종목의 코드와 50 페이지 입력 stock_code = '005930' pages = 50 # 날짜, 종가, 거래량이 최근순으로 출력 print_stock_price(stock_code, pages)

 

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

# Matplotlib 기본사용 """ Matplotlib 라이브러리를 이용해서 그래프그리기 """ #Pyplot소개 ''' matplotlib.pyplot은 Matplotlib을 MATLAB과 비슷하게 동작하도록 하는 명령어 스타일의 함수모음 각각의 pyplot하a수를 사용해 그림(figure)에 변화를 줄수있다 예) 그림을 만들어 플롯영역만들고, 몇개의 라인을 플롯하고 라벨들로 꾸미는 등 일을 할 수있다. ''' #기본그래프 ''' pyplot으로 어떤 값들을 시각화는것은 매우간단함 pyplot.plot()에 하나의 리스트를 입력하면 그래프가 그려짐 ''' import matplotlib.pyplot as plt #matplotlib은 리스트의 값들이 y값들이라고 가정하고 x값들([0,1,2,3])을 자동으로 만듬 plt.plot([0,1,2,3]) plt.ylabel('y-label') plt.show() ''' plot()은 다재다능한 명령어라 임의의개수의 인자를 받을 수 있음 예를들어 아래와 같이 입력하면 x와y값을 그래프로 나타낼 수 있음 ''' plt.plot([0,1,2,3],[1,5,10,25]) ###########속성############# #1) 스타일지정하기 ''' 색상과 선의 형태를 지정하는 포맷문자열을 세번째 인자에 입력 디폴트 포맷문자열음 'b-' 파란색(b) (-)을 의미 ro는 빨간색(red) 원형(o)를 의미 ''' #카페 게시글(marker종류)내용 참조 plt.plot([0,1,2,3],[1,5,10,25],'ro') #2) axis()이용해 축의 [xmin, xmax,ymin, ymax]범위 지정 plt.axis([0,6,0,20]) #리스트 형식으로 묶어야함 plt.show() #여러개의그래프 그리기 ''' matplotlib에서 리스트만 가지고 작업하는 것은 제한적이라 Numpy의 어레이 함수를 사용한다 사실, 모든시퀀스는 내부적으로 Numpy어레이로 변환됨 ''' #3) 다양한 포맷스타일의 여러개의 라인을 하나의 그래프로 그리기 import numpy as np #200ms간격으로 균일한 샘플된 기간 t=np.arange(0.,5.,0.2) #빨간대쉬, 파란사각형, 녹색삼각형 plt.plot(t,t,'r--',t,t**2,'bs',t,t**3,'g^') plt.show() #4) Matplotlib라벨설정하기 ''' xlabel(),ylabel()함수 그래프의 x,y축에 대한 라벨을 설정할 수 있음 ''' plt.plot([0,1,2,3],[1,5,10,25]) plt.xlabel('xLabel') plt.ylabel('yLabel') plt.show() ''' axis()[xmin,xmax,ymin,ymax]의 형태로 x,y축의 범위를 지정 입력 리스트는 꼭 네개의 값 [xmin,xmax,ymin,ymax]이 있어야 한다. 입력값이 없으면 데이터에 맞게 자동(Auto)으로 범위를 지정. ''' # Matplotlib 색깔 지정하기 # 자주 사용하는 색깔 외에도 다양한 색상을 지정할 수 있다. import matplotlib.pyplot as plt ''' plot()에 color = 'springgreen' 과 같이 입력해주면, springgreen에 해당하는 색깔이 지정된다. ''' plt.plot([1,2,3,4], [1,4,9,16], color = 'springgreen') plt.xlabel('X-Label') plt.ylabel('Y-Label') plt.axis([0,5,0,20]) plt.show() # Matplotlib 색깔 지정하기2 ''' 16진수 코드(hex code)로도 색깔을 지정할 수 있다. 색깔, 마커와 선의 종류까지 모두 지정. ''' import matplotlib.pyplot as plt ''' 색깔은 '#e35f62'와 같이 16진수로, 마커는 circle, 선 종류는 대쉬(dashed)로 지정 ''' plt.plot([1,2,3,4],[1,4,9,16], color='#e35f62', marker='o', linestyle='--') plt.xlabel('X-Label') plt.ylabel('Y-Label') plt.axis([0,5,0,20]) plt.show() # Matplotlib 여러 곡선 그리기 # 세 개의 곡선을 하나의 그래프에 그리기. import matplotlib.pyplot as plt import numpy as np ''' Numpy를 사용해서 array를 생성 numpy.arange() 주어진 간격에 따라 균일한 array를 생성한다. ''' a = np.arange(5) b = np.arange(1, 5) c = np.arange(2, 10, 2) print(a) # [0 1 2 3 4] print(b) # [1 2 3 4] print(c) # [2 4 6 8] ''' array a는 [0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8] ''' a = np.arange(0, 2, 0.2) ''' plot() 에 x 값, y 값, 스타일을 순서대로 세 번씩 입력하면, 세 개의 곡선(y=x, y=x^2, y=x^3)이 동시에 그려진다. ''' plt.plot(a, a, 'r--', a, a**2, 'bo', a, a**3, 'g-.') ''' 'r-은' 빨간색(Red)대쉬(Dashed) 스타일 선, 'bo'파란색(Blue) 의 Circle 마커, 'g-.'녹색(Green)의 대쉬-(Dash-dot) 스타일 선을 의미. ''' plt.show()

 

# 세 개의 곡선의 세세한 스타일을 설정할 수 있다. import matplotlib.pyplot as plt import numpy as np a = np.arange(0, 2, 0.2) # 첫 번째 곡선의 스타일은 'bo', plt.plot(a, a, 'bo') # 두 번째 곡선은 color='#e35f62', marker='*', linewidth=2, plt.plot(a, a**2, color='#e35f62', marker='*', linewidth = 2) # 세 번째 곡선은 color='springgreen, marker='^', markersize=9로 plt.plot(a, a**3, color='springgreen', marker='^', markersize=9) # Matplotlib 그리드와 틱 설정하기 ''' grid()tick_params() 를 이용해서 그래프의 그리드와 틱의 스타일을 설정할 수 있다. ''' import matplotlib.pyplot as plt import numpy as np a = np.arange(0, 2, 0.2) plt.plot(a, a, 'bo') plt.plot(a, a**2, color='#e35f62', marker='*', linewidth = 2) plt.plot(a, a**3, color='springgreen', marker='^', markersize=9) ''' 그리드가 표시되도록 하려면, grid() 의 첫 번째 파라미터를 True로 설정. axis = 'y'로 설정하면 y 축의 그리드만 표시. alpha는 투명도로 설정합니다. 0으로 설정하면 투명하게, 1은 불투명하게 표시 linestyle을 대쉬(Dashed)로 설정. ''' plt.grid(True, axis='y', color='gray', alpha=0.5, linestyle='--') ''' tick_params() 를 이용해서 그래프의 (Tick)에 관련된 설정을 할 수 있다. axis='both' 로 설정하면 x,y축의 틱에 모두적용. direction='in' 으로 틱의 방향을 그래프 안 쪽을 ㅗ설정. 틱의 길이(length)3만큼으로 하고, 틱과 라벨의 거리(pad)6만큼. 틱 라벨의 크기(labelsize)14로 설정. ''' plt.tick_params(axis='both', direction='in', length=3, pad=6, labelsize=14) plt.show() # Matplotlib 타이틀 설정하기 # title() 을 이용해서 그래프의 제목(타이틀)을 설정. ''' plt.title()을 이용해서 그래프의 타이틀을 'Sample graph'로 설정. ''' plt.title('Sample graph') plt.show() # 2 - 위치와 오프셋 plt.title('Sample graph', loc = 'right', pad=20) ''' loc ='right'로 설정하면, 타이틀이 그래프의 오른쪽 위에 나타나게 된다. 'left', 'center', 'right'로 설정할 수 있으며 디폴트는 'center' pad = 20 은 타이틀과 그래프와의 간격(오프셋)을 포인트 단위로 설정. ''' # 3- 폰트 설정 ''' fontdict 에 딕셔너리 형태로 폰트에 대한 설정을 입력할 수 있다. 'fontsize'16으로, 'fontweight''bold'로 설정. 'fontsize'는 포인트 단위의 숫자를 입력하거나, 'smaller', 'x-large' 등의 상대적인 설정을 할 수 있다. 'fontweight'에는 'normal', 'bold', 'heavy', 'light', 'ultrabold', 'ultralight'의 설정을 할 수 있다. ''' title_font = { 'fontsize':16, 'fontweight':'bold' } plt.title('Sample graph',fontdict=title_font, loc = 'left', pad=20)

 

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

# Marplotlib 막대그래프 그리기 ''' bar() 함수를 이용해서 막대 그래프(bar graph)를 그릴 수 있다. 연도별 값을 갖는 데이터를 막대 그래프로 플롯. ''' import matplotlib.pyplot as plt import numpy as np x = np.arange(3) # years는 x축에 표시될 연도이고, values는 y값. years = ['2017', '2018', '2019'] values = [100, 400, 900] # 먼저 bar() 함수에 x(=[0, 1, 2])(=[100, 400, 900])을 입력. plt.bar(x, values) values = [100, 400, 900] # 먼저 bar() 함수에 x(=[0,1,2])(=[100,400,900])을 입력. plt.bar(x, values) ''' xticks()에 x와 years를 입력해주면, x축에 '2017', '2018', '2019'가 순서대로 표시된다. ''' plt.xticks(x,years) plt.show() ''' 막대그래프에도 막대와 테두리의 색, 두께 등 다양한 스타일을 적용할 수 있다. 우선 bar() 함수에 x, y(=values)값을 입력. ''' plt.bar(x, values, width=0.6, align='edge', color='springgreen', edgecolor='gray', linewidth=3, tick_label=years, log=True) ''' barh()를 이용하면 수평 막대 그래프를 그릴 수 있다. ''' y = np.arange(3) plt.barh(y,values, height=-0.6, color='springgreen', edgecolor='gray', linewidth=3, tick_label=years, log=False) plt.show() # https://matplotlib.org/contents # 여기서 필요한 모양의 그래프들과 소스를 확인 및 다운할 수 있다.

 

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

# Numpy 난수 생성(Random 모듈) # 난수 생성에 활용할 수 있는 Numpy의 random 모듈(numpy.random) # 1- random.rand() : 주어진 형태의 난수를 생성. import numpy as np # 예제1 ''' 만들어진 난수 array는 주어진 값에 의해 결정되며, (0,1) 범위에서 귬일한 분포를 갖는다. ''' a = np.random.rand(5) print(a) ''' 결과 : [0.75004981 0.21139253 0.45048688 0.94381202 0.00407233] ''' ''' random.rand() 주어진 형태의 난수 array를 생성 random.randint() [최저값, 최대값]의 범위에서 임의의 정수 random.randn() 표준정규분포(standard normal distribution)를 갖는 난수를 반환 random.standard_normal() : randn()standard_normal() 은 기능이 비슷하지만, standard_normal()은 튜플을 인자로 받는다는 점에서 차이가 있다. random.random_sample() : [0.0, 1.0) 범위의 임의의 실수를 반환 random.choice() : 주어진 1차원 어레이에서 임의의 샘플을 생성 random.seed() : 난수 생성에 필요한 시드를 정한다. 코드를 실행할 때 마다 똑같은 난수가 생성 ''' # Matplotlib 산점도 그리기 # scatter() 를 이용해서 산점도(scatter plot)를 그릴 수 있다. import matplotlib.pyplot as plt import numpy as np ''' np.random.seed() 를 통해서 난수 생성의 시드를 설정하면, 같은 난수를 재사용할 수 있다. seed() 에 들어갈 파라미터는 0에서 4294967295 사이의 정수여야 한다. ''' np.random.seed(19680801) # 1 - random.rand() : 주어진 형태의 난수를 생성. import numpy as np ''' 만들어진 난수 array는 주어진 값에 의해 결정되며, [0, 1) 범위에서 균일한 분포를 갖는다. - 수학에서 [0,1) 로 쓰면 0은 포함되고 1은 포함되지 않는다는 의미 ''' a = np.random.rand(5) print(a) # 결과 : [0.44859207 0.21580016 0.1010523 0.0087913 0.7022354 ] b = np.random.rand(2, 3) print(b) ''' 결과 : [[0.70633485 0.24791576 0.15788335] [0.69769852 0.71995667 0.25774443]] ''' ''' x, y의 위치, 마커의 (colors)면적(area)을 무작위로 지정. 예를 들어, x는 [0.7000003, 0.721613,... , 0.234654, 0.3216541]으로 0에서 1사이의 무작위한 50개의 값을 갖는다. ''' N = 50 x = np.random.rand(N) y = np.random.rand(N) colors = np.random.rand(N) area = (30 * np.random.rand(N))**2 ''' scatter() 에 x, y 위치를 입력 s는 마커의 면적을, c는 마커의 색을 지정. alpla는 마커색의 투명도를 결정 ''' plt.scatter(x, y, s = area, c=colors, alpha=0.5) # x축 위치잡을 값, y 축 위치잡을 값을 반드시 만들어야 한다. plt.show() # Matplotlib 히스토그램 그리기 # hist()를 이용해서 히스토그램(histogram)을 그리기. # 1- 값 입력하기 import matplotlib.pyplot as plt '''weight 리스트는 몸무게 값을 나타낸다.''' weight = [68,81,64,56,78,74,61,77,66,68,59, 71,80,59,67,81,69,73,69,74,70,65] ''' hist()함수에 리스트의 형태로 값들을 직접 입력해주면 된다.''' plt.hist(weight) # 2 - 여러 개의 히스토그램 그리기 import matplotlib.pyplot as plt import numpy as np ''' Numpy의 np.random.randn() 와 np.random.standard_normal(), np.random.rand() 함수를 이용해서 임의의 값들을 생성. ''' # array a는 표준편차 2.0, 평균 1.0을 갖는 정규분포 a = 2.0 * np.random.randn(10000) + 1.0 # array b 는 표준정규분포를 따른다. b = np.random.standard_normal(10000) # array c는 -10.0 에서 10.0 사이의 균일한 분포를 갖는 5000개의 임의의 값. c = 20.0*np.random.rand(5000) - 10.0 ''' 세 개의 분포를 동시에 그래프에 나타내기. plt.hist() bins는 몇 개의 영역으로 쪼갤지를 설정. density=True 로 설정해주면, 밀도함수가 되어서 막대의 아래 면적이 1이 된다. alpha는 투명도를 의미합니다. 0.0에서 1.0사이의 값을 갖는다. histtype 을 'step'으로 설정하면 막대 내부가 비어있고, 'stepfilled'로 설정하면 막대 내부가 채워진다. ''' plt.hist(a, bins=100, density=True, alpha=0.7, histtype='step') plt.hist(b, bins=50, density=True, alpha=0.5, histtype='stepfilled') plt.hist(c, bins=100, density=True, alpha=0.9, histtype='step') plt.show() import matplotlib.pyplot as plt import numpy as np a = np.random.rand(1000) b = np.random.rand(10000) c = np.random.rand(100000) plt.hist(a, bins=100, density=True, alpha=0.5, histtype='step', label='n=1000') plt.hist(b, bins=100, density=True, alpha=0.75, histtype='step', label='n=10000') plt.hist(c, bins=100, density=True, alpha=1.0, histtype='step', label='n=100000') plt.legend() #----------정수반환 import matplotlib.pyplot as plt import numpy as np ''' a는 [0,10) 범위의 임의의 정수 1000개''' a = np.random.randint(0, 10, 1000) ''' b는 [0,10) 범위의 임의의 정수 1000개''' b = np.random.randint(10, 20, 1000) ''' c는 [0,10) 범위의 임의의 정수 1000개''' c = np.random.randint(0, 20, 1000) plt.hist(a, bins=100, density=False, alpha=0.5, histtype='step', label='0<=randint<10') plt.hist(b, bins=100, density=False, alpha=0.75, histtype='step', label='10<=randint<20') plt.hist(c, bins=100, density=False, alpha=1.0, histtype='step', label='0<=randint<20') plt.legend() plt.show()

 

 

전송중...

사진 설명을 입력하세요.

# Matplotlib 3차원 산점도 그리기 ''' scatter() 를 이용해서 3차원 산점도(3D Scatter plot)를 그리기. 3차원 그래프를 그리기 위해서 from mpl_toolkits.mplot3d import Axes3D 를 추가. 이 부분은 matplotlib 3.1.0 버전부터는 디폴트로 포함되기 때문에 적어주지 않아도 된다. ''' from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np ''' x, y의 위치, 마커의 (colors)면적(area) 을 무작위로 지정. ''' n = 100 xmin, xmax, ymin, ymax, zmin, zmax = 0, 20, 0, 20, 0, 50 cmin, cmax = 0, 2 xs = (xmax-xmin)*np.random.rand(n) + xmin ys = (xmax-xmin)*np.random.rand(n) + ymin zs = (xmax-xmin)*np.random.rand(n) + zmin color = (xmax - xmin) * np.random.rand(n) + cmin # rcParams 를 이용해서 figure의 사이즈를 설정 plt.rcParams["figure.figsize"] = (6,6) # 3차원 박스를 6분할로 나눈다.(가로, 세로) fig = plt.figure() ''' 3D axes를 만들기 위해 add_subplot() 에 projection= '3d'키워드를 입력 ''' ax = fig.add_subplot(111, projection='3d') ''' scatter() 함수에 x, y, z위치를 array의 형태로 입력 마커(marker)의 형태를 원형(circle)으로 설정 cmap = 'Greens'를 통해 colormap을 녹색 계열로 설정 ''' ax.scatter(xs, ys, zs, c=color, marker='o', s=15, cmap='Greens')

 

 

전송중...

사진 설명을 입력하세요.

 

전송중...

사진 설명을 입력하세요.

### Googletrans - 파이썬을 위한 구글 번역 API ### ''' Googletrans는 구글 번역 API(Google Translate API)를 구현한 파이썬 라이브러리. 파이썬과 Googletrans 를 이용해서 무료로 그리고 무제한으로 구글의 번역 기능을 사용할 수 있다. ''' # Googletrans 설치 ''' pip install googletrans conda install -c conda-forge googletrans 명령 프롬프트에서 pip 또는 conda를 통해서 설치를 진행 ''' ### Googletrans 기본 사용 ### ''' Googletrans 라이브러리를 이용해서 간단한 문장을 특정 언어로 (구글) 번역하고, 언어를 자동 감지하는 기능을 사용. ''' # 1. 번역하기 # googletrans에서 Translator를 불러오기 from googletrans import Translator translator = Translator() # translate() 에 번역할 문장을 입력해주면, 아래 같은 결과를 출력. print(translator.translate('안녕하세요')) # 결과 : Translated(src=ko, dest=en, text=Hi, pronunciation=None, extra_data="{'translat...") # 기본값인 영어로 번역되고(dest=en) 그 값은 Hi 이다(text=Hi) print(translator.translate('안녕하세요').text) # 이 함수가 가지고 있는 속성인 text 만 가지고 나와서 'Hi'를 출력한다. # 2. 언어 설정하기 ''' src와 dest 에 언어 코드를 입력해줌으로써 source 언어와 destination 언어를 설정할 수 있다. ''' from googletrans import Translator translator = Translator() print(translator.translate('안녕하세요', src='ko', dest='ja')) # Translated(src=ko, dest=ja, text=こんにちは, pronunciation=Kon'nichiwa, extra_data="{'translat...") print(translator.translate('안녕하세요', src='ko', dest='ja').text) # こんにちは print(translator.translate('안녕하세요', src='ko', dest='ja').pronunciation) # Kon'nichiwa ''' LANGUAGES = { 'af': 'afrikaans', 'sq': 'albanian', 'am': 'amharic', 'ar': 'arabic', 'hy': 'armenian', 'az': 'azerbaijani', 'eu': 'basque', 'be': 'belarusian', 'bn': 'bengali', 'bs': 'bosnian', 'bg': 'bulgarian', 'ca': 'catalan', 'ceb': 'cebuano', 'ny': 'chichewa', 'zh-cn': 'chinese (simplified)', 'zh-tw': 'chinese (traditional)', 'co': 'corsican', 'hr': 'croatian', 'cs': 'czech', 'da': 'danish', 'nl': 'dutch', 'en': 'english', 'eo': 'esperanto', 'et': 'estonian', 'tl': 'filipino', 'fi': 'finnish', 'fr': 'french', 'fy': 'frisian', 'gl': 'galician', 'ka': 'georgian', 'de': 'german', 'el': 'greek', 'gu': 'gujarati', 'ht': 'haitian creole', 'ha': 'hausa', 'haw': 'hawaiian', 'iw': 'hebrew', 'hi': 'hindi', 'hmn': 'hmong', 'hu': 'hungarian', 'is': 'icelandic', 'ig': 'igbo', 'id': 'indonesian', 'ga': 'irish', 'it': 'italian', 'ja': 'japanese', 'jw': 'javanese', 'kn': 'kannada', 'kk': 'kazakh', 'km': 'khmer', 'ko': 'korean', 'ku': 'kurdish (kurmanji)', 'ky': 'kyrgyz', 'lo': 'lao', 'la': 'latin', 'lv': 'latvian', 'lt': 'lithuanian', 'lb': 'luxembourgish', 'mk': 'macedonian', 'mg': 'malagasy', 'ms': 'malay', 'ml': 'malayalam', 'mt': 'maltese', 'mi': 'maori', 'mr': 'marathi', 'mn': 'mongolian', 'my': 'myanmar (burmese)', 'ne': 'nepali', 'no': 'norwegian', 'ps': 'pashto', 'fa': 'persian', 'pl': 'polish', 'pt': 'portuguese', 'pa': 'punjabi', 'ro': 'romanian', 'ru': 'russian', 'sm': 'samoan', 'gd': 'scots gaelic', 'sr': 'serbian', 'st': 'sesotho', 'sn': 'shona', 'sd': 'sindhi', 'si': 'sinhala', 'sk': 'slovak', 'sl': 'slovenian', 'so': 'somali', 'es': 'spanish', 'su': 'sundanese', 'sw': 'swahili', 'sv': 'swedish', 'tg': 'tajik', 'ta': 'tamil', 'te': 'telugu', 'th': 'thai', 'tr': 'turkish', 'uk': 'ukrainian', 'ur': 'urdu', 'uz': 'uzbek', 'vi': 'vietnamese', 'cy': 'welsh', 'xh': 'xhosa', 'yi': 'yiddish', 'yo': 'yoruba', 'zu': 'zulu', 'fil': 'Filipino', 'he': 'Hebrew'} '''

 

 

 

728x90
반응형

댓글