본문 바로가기
비트 장기/파이썬

8/29

by woohyun22 2018. 8. 29.

그래프에 title label text grid넣어주기, 한 차트에 두개의 그래프를 보여주기

import random
import matplotlib.pyplot as plt# plt.로 함수써주세요~
import matplotlib.font_manager as fm
fl = fm.FontProperties(fname='C:\Windows\Fonts\malgun.ttf').get_name()# 한글 pont 경로를 넣어줘야된다.
#C:\Windows\Fonts\ 파일속성명으로 적어줘야된다.
plt.rc('font',family=fl)
print("="*100)
plt.title('끝')#표 제목 한글이안된다.
plt.xlabel("연령별")
plt.ylabel("연봉")
x=[0,50,100,150,200]
h=[0,60,40,80,90]
x1=[0,50,100,150,200]
h1=[0,20,90,10,50]
plt.text(80,100,"최대연봉")#text넣기
plt.text(0,0,"최소연봉")
plt.grid(True)
plt.plot(x,h,'r',x1,h1,'g')# -는 선이고 o는 점이다.
plt.show()


여러개의 차트그래프를 한번에 보여주기


import random
import matplotlib.pyplot as plt# plt.로 함수써주세요~
import matplotlib.font_manager as fm
fl = fm.FontProperties(fname='C:\Windows\Fonts\malgun.ttf').get_name()# 한글 pont 경로를 넣어줘야된다.
#C:\Windows\Fonts\ 파일속성명으로 적어줘야된다.
plt.rc('font',family=fl)
x1=[0,50,100,150,200]
h1=[0,60,40,80,90]
plt.subplot(2,3,1)#세로갯수,가로갯수,순서대로
plt.plot(x1,h1)
plt.subplot(2,3,3)#세로갯수,가로갯수,순서대로
plt.plot(x1,h1)
x1=[0,50,100,150,200]
h1=[0,10,90,70,10]
plt.subplot(2,3,5)#세로갯수,가로갯수,순서대로
plt.plot(x1,h1)
plt.show()#show는 한번만

막대형식


x1=[0,50,100,150,200]
h1=[0,60,40,80,90]
plt.bar(x1,h1)#plot말고 막대형식
plt.show()

bar사용 값의 기준이 다를때 축을 바꾸어 사용함

import random
import matplotlib.pyplot as plt# plt.로 함수써주세요~
import matplotlib.font_manager as fm
fl = fm.FontProperties(fname='C:\Windows\Fonts\malgun.ttf').get_name()# 한글 pont 경로를 넣어줘야된다.
#C:\Windows\Fonts\ 파일속성명으로 적어줘야된다.
plt.rc('font',family=fl)
x1=[10,20,30,40,50]
h1=[0,60,40,80,10]
plt.bar(x1,h1)#plot말고 막대형식
plt.twinx()#이후로 축을 바꾸어서 사용한다.twiny는 잘 사용안함.
#값의 기준이 다를떄 사용함
plt.plot(x1,[4,1,7,0,11],"r")
plt.show()

여러가지  bar에 대한 속성

import random
import matplotlib.pyplot as plt# plt.로 함수써주세요~
import matplotlib.font_manager as fm
fl = fm.FontProperties(fname='C:\Windows\Fonts\malgun.ttf').get_name()# 한글 pont 경로를 넣어줘야된다.
plt.rc('font',family=fl)
x1=["하나","둘","셋","넷","다섯"]
h1=[10,60,40,80,10]

plt.bar(x1,h1)
#plt.bar(x1,h1,0.99)#0.0~1.0까지 값에따라 막대의 굵기가 달라짐
#plt.bar(x1,h1,0.99,[10,20,40,10,20])#이부분 뺴고 보여준다.리스트부분에서 그래프까지 보여준다.
#plt.ylim(40,40)#y축의 값을 고정ㅅ켜준다.
#plt.bar(x1,h1,0.99,[10,20,30,40,50],align="edge")# center,edge두개
#그래프가 옆에 나오게된다.
#o,o,o,o,*속성 인수가 0개이상 계속적을수있다 하지만 align이 마지막에 와야된다.
#plt.bar(x1,h1,0.99,[10,20,30,40,50],alpha=0.1,color="r",align="edge")
#alpha = 배경과 어울리는 정도 1에 가까울수록 원색이 나온다.
plt.show()
#막대의 범위를 따로 보여준다
#https://matplotlib.org/ -pyplot -the pyplot api -bar 전문적으로 쓰고싶을때 활용

네이버 태풍 검색어 순위 열개 차트로 보여주기

import matplotlib.pyplot as plt# plt.로 함수써주세요~
import matplotlib.font_manager as fm
fl = fm.FontProperties(fname='C:\Windows\Fonts\malgun.ttf').get_name()# 한글 pont 경로를 넣어줘야된다.
plt.rc('font',family=fl)
import urllib.request
client_id = "Vneh4QhxmofgSOMj2LB7"#내 client id문자열로 입력
client_secret = "g8uD1EnrZD"
encText = urllib.parse.quote("태풍")#이슈인 단어
url = "https://openapi.naver.com/v1/search/news.json?query=" + \
encText + "&start=1&display=100"# news부분만 바꾸면된다 엔터치면 자동으로 연결해줌 가장 최근에 뜬것 백개만 가져온다.
print(url)# xml,과json으로 가져온다 json은 데이터를 주고받는 용도로만 쓰인다. 제이슨
request = urllib.request.Request(url)#요청 객체를 만들어준다.
request.add_header("X-Naver-Client-Id",client_id)#뒤쪽인수에 원래 아이티 문자열 그대로 적어도됨
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)#데이터 끌고온것은 response가 가지고있다.
print(response)
rescode = response.getcode()
if(rescode==200):
print("성공")
response_body = response.read().decode('utf-8')#크롤링한데이터는 response body에 들어가있다
print(type(response_body))#str타입
print(response_body)
print("========================================================================")
else:
print("실패")
print("Error Code:" + rescode)

from konlpy.tag import Okt #중복이 되던지말던지 둘다 출력해줌
okt = Okt() #객체 생성 //문자열중에서 명사만 찾아주는 역할을 한다.
c = okt.nouns(response_body)
print(c)
t = []
for i in c:
if len(i)>1 and i != "태풍":
t.append(i)

c=t;
import collections
d = collections.Counter(c) #객체생성 count라는 클래스
print(d)#c를 받아와서 명사형뽑은거 중에 count한다.
d1 = [];#리스트 객체 생성
d2 = []
for key,value in d.most_common(10):#빈도수 높은순서대로 3개 뽑아낸다.
plt.text(key,value,value)
d1.append(key)#빈도수 높은 순서대로 3개
d2.append(value)#빈도수


print(d1)
print(d2)
print("*"*100)

plt.xticks(range(10),d1,rotation="70")#70도가 기울여져 나온다. 이름이 길면 겹쳐질까봐 그것을 방지하기 위해
plt.ylabel('단어를 잡아낸횟수')
plt.title('태풍을 검색했을때 관련검색어 100개 태풍빼고')
plt.bar(d1,d2,alpha=0.3,color="b",align="edge",edgecolor="k")
plt.show()

라이브러리

pytagcloud pygame simplejson insert


import는 ptyagecloud만 걸어줘도된다.



cloud만들기


import matplotlib.pyplot as plt# plt.로 함수써주세요~
import matplotlib.font_manager as fm
fl = fm.FontProperties(fname='C:\Windows\Fonts\malgun.ttf').get_name()# 한글 pont 경로를 넣어줘야된다.
plt.rc('font',family=fl)
import urllib.request
client_id = "Vneh4QhxmofgSOMj2LB7"#내 client id문자열로 입력
client_secret = "g8uD1EnrZD"
encText = urllib.parse.quote("태풍")#이슈인 단어
url = "https://openapi.naver.com/v1/search/news.json?query=" + \
encText + "&start=1&display=100"# news부분만 바꾸면된다 엔터치면 자동으로 연결해줌 가장 최근에 뜬것 백개만 가져온다.
print(url)# xml,과json으로 가져온다 json은 데이터를 주고받는 용도로만 쓰인다. 제이슨
request = urllib.request.Request(url)#요청 객체를 만들어준다.
request.add_header("X-Naver-Client-Id",client_id)#뒤쪽인수에 원래 아이티 문자열 그대로 적어도됨
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)#데이터 끌고온것은 response가 가지고있다.
print(response)
rescode = response.getcode()
if(rescode==200):
print("성공")
response_body = response.read().decode('utf-8')#크롤링한데이터는 response body에 들어가있다
print(type(response_body))#str타입
print(response_body)
print("========================================================================")
else:
print("실패")
print("Error Code:" + rescode)

from konlpy.tag import Okt #중복이 되던지말던지 둘다 출력해줌
okt = Okt() #객체 생성 //문자열중에서 명사만 찾아주는 역할을 한다.
c = okt.nouns(response_body)
print(c)
t = []
for i in c:
if len(i)>1 and i != "태풍":
t.append(i)

c=t;
import collections
d = collections.Counter(c) #객체생성 count라는 클래스
print(d)#c를 받아와서 명사형뽑은거 중에 count한다.
d1 = [];#리스트 객체 생성
d2 = []
for key,value in d.most_common(10):#빈도수 높은순서대로 3개 뽑아낸다.
plt.text(key,value,value)
d1.append(key)#빈도수 높은 순서대로 3개
d2.append(value)#빈도수


print(d1)
print(d2)
print("*"*100)

plt.xticks(range(10),d1,rotation="70")#70도가 기울여져 나온다. 이름이 길면 겹쳐질까봐 그것을 방지하기 위해
plt.ylabel('단어를 잡아낸횟수')
plt.title('태풍을 검색했을때 관련검색어 100개 태풍빼고')
plt.bar(d1,d2,alpha=0.3,color="b",align="center",edgecolor="k")

import pytagcloud
a= d.most_common(100)

a10 = pytagcloud.make_tags(a,70)#100개중에 70개만 보여줄게 두번째 수가 cloud에 70개보여준다.
print(a10)
pytagcloud.create_tag_image(a10,"sample.png",fontname="Nobile",rectangular= False)#인수 네개(앞에 받아준 변수,생성될 파일명,,)
import webbrowser
webbrowser.open("sample.png")


#plt.show()

cloud 한글 나오게하기


import pytagcloud
a= d.most_common(100)
a10 = pytagcloud.make_tags(a,5)#100개중에 70개만 보여줄게 두번째 수가 cloud에 70개보여준다.
print(a10)
pytagcloud.create_tag_image(a10,"sample.png",fontname="korea",rectangular= False)#인수 네개(앞에 받아준 변수,생성될 파일명,,)
import webbrowser
webbrowser.open("sample.png")

#cloud에서 한글 뜨게하는거 C:\Users\admin\PycharmProjects\Project\venv\Lib\site-packages\pytagcloud\fonts 에 malgun 넣어주기
#파이참창에서 열어주고 맨위에 { name 등등을}복붙한뒤 앞에서 fontname 설정 바꿔주고 돌리면된다!
#plt.show()


영화 단어 검색


#import bs4.beautifulsoup #Beautifulsoup4를 install후 import형식 이렇게 적기
from bs4 import BeautifulSoup
import urllib.request

html=urllib.request.urlopen("https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=cnt&date=20180828")
print(html)
s = BeautifulSoup(html,"html.parser")
print(s)
t=s.find_all("div",attrs={"class":"tit3"})#(객체야 div라는 단어를 찾아라, 문자열 안에 공백이 있으면 안된다.
print(t)

for i in t:
print(i.a.text)#a태그에서 사용되었던 텍스트를 가져오세요<a>요기있는거</a>

"""
<div class="tit3">
<a href="/movie/bi/mi/basic.nhn?code=140652" title="너의 결혼식">너의 결혼식</a>
</div>
"""


728x90

'비트 장기 > 파이썬' 카테고리의 다른 글

파이썬  (0) 2018.08.31
8/30  (0) 2018.08.30
8/28 크롤링 api긁어오기  (0) 2018.08.28
파이썬 문제복습 4번~13번  (0) 2018.08.28
8/27 api 검색어 긁어오기  (0) 2018.08.27

댓글