Python 및 Matplotlib를 사용하여 텍스트에 문자 그리기

王林
풀어 주다: 2023-04-29 19:31:05
앞으로
918명이 탐색했습니다.

이 문서의 목적은 Python으로 데이터 플로팅을 시작하는 데 도움을 주는 것입니다. 주어진 텍스트 파일의 문자 빈도를 표시하기 위해 막대 차트를 만듭니다. 이 경우 텍스트 파일에는 The Great Gatsby의 콘텐츠가 포함되어 있습니다.

使用 Python 和 Matplotlib 在文本中绘制字符

1단계: 가상 환경 만들기

이 프로젝트의 환경은 더 작습니다. 가상 환경을 사용하면 컴퓨터의 나머지 부분에 영향을 주지 않고 작업 공간에 추가 기능을 추가할 수 있습니다!

디렉토리를 만들고 코드 편집기와 터미널(명령을 실행하는 곳)에서 엽니다.

실행해 봅시다:

$ python3 -m venv venv
$ source venv/bin/activate
로그인 후 복사

필요한 종속성을 설치할 수 있습니다.

$ pip3 install matplotlib
로그인 후 복사

또한 read.txt와 wordcount.py라는 두 개의 파일을 생성합니다.

read.txt의 텍스트를 분석하기 위해 wordcount.py를 사용하겠습니다.

2단계: 텍스트 읽기

비교적 간단하게 시작할 수 있습니다.

import matplotlib.pyplot as plt # plot
from collections import OrderedDict # this will be used for sorting later

file = open('read.txt')
text = file.read()
file.close()
로그인 후 복사
  • 먼저 그림 및 정렬 라이브러리를 가져옵니다
  • 두 번째로 내장된 열기 기능을 사용하여 다음 작업을 위한 파일을 열 수 있습니다. reading Write
  • 그런 다음 파일 안의 텍스트를 읽고 텍스트 변수에 저장합니다.
  • 마지막으로 파일을 더 이상 사용하지 않으므로 파일을 닫습니다.

그게 바로 파일을 "읽고" 내용을 저장하는 것입니다. 변수에 필요한 모든 것.

3단계: 문자 분석

문자를 추적할 수 있는 가장 좋은 방법은 Python 사전(다른 프로그래밍 언어에서는 해시맵이라고 함)을 사용하는 것입니다.

사전은 데이터를 저장하는 매우 유용한 방법입니다. 실제 사전과 마찬가지로 정의를 보기 위해 볼 수 있는 "단어" 목록이 있습니다.

프로그래밍에서 이 개념은 "키/값" 쌍으로 일반화됩니다. 이는 사전을 설정할 수 있으며 사전에 "a"를 요청하면 사전에서 "a"의 총 발생 횟수를 반환한다는 의미입니다.

그럼 코딩해 볼까요!

charDict = {} # dictionaries are defined by curly braces
def count_letter(character):
character = character.lower()
if character.isspace():
return
if character in charDict:
charDict[character] = charDict[character] + 1
else:
charDict[character] = 1

# loop through text
for i in text:
count_letter(i)

charDict = OrderedDict(sorted(charDict.items()))
로그인 후 복사

여기서 무슨 일이 일어났는지 요약해 보겠습니다.

  • 먼저 빈 사전을 정의합니다
  • 다음으로 def 키워드를 사용하여 함수를 정의합니다. 이 함수는 변수 "char"를 사용하여 공백(공백, 탭, 줄 바꿈)인지 확인합니다. isalpha()와 같은 다른 기준을 선택 항목에 추가하여 문자가 문자인지
  • 확인한 다음 사전에 이미 있는지 확인할 수 있습니다. 사전에 있는 경우 값을 이전 값에 1을 더한 값으로 변경합니다(이 문자를 계산하므로). 그렇지 않으면 초기 개수가 1인 사전에 새 항목을 추가합니다.
  • 그런 다음 텍스트 변수를 반복합니다. "i"가 별도의 문자를 나타내는 각 문자를 저장하고 함수를 실행하여 개수를 계산합니다.
  • 마지막으로 OrderdedDict 가져오기를 사용하여 사전을 알파벳순으로 정렬합니다.

4단계: 그리기!

이제 데이터 세트가 생성되었으므로 이를 축으로 구성하고 플롯해 보겠습니다!

각 축을 대표하는 목록을 생성하겠습니다

num_list = []
char_list = []

목록은 서로 대응하므로 char_list의 첫 번째 항목이 "a"이면 첫 번째 항목 num_list 항목 1은 해당 빈도가 됩니다. 그것도 인코딩해 봅시다.

char_list = [] # character
num_list = [] # frequency
# create x and y axes
for x,y in charDict.items():
char_list.append(x)
num_list.append(y)
로그인 후 복사

두 개의 변수를 사용하여 우리가 만든 사전의 키/값 쌍을 반복한 다음 데이터 목록에 추가합니다.

마지막으로 matplotlib를 사용하여 이 막대 차트를 만들고 저장해 보겠습니다.

fig = plt.figure() # create a new figure
ax = fig.add_subplot() # create a new bar graph within the figure
fig.canvas.manager.set_window_title('The Great Gatsby') # title of window
ax.bar(char_list, num_list) # add the data to the graph
plt.savefig('chars.png') # download an image of the bar graph
plt.show() # show the image
로그인 후 복사
  • 먼저 새로운 모양을 만듭니다. 사진은 전체 창
  • 그래프에 플롯 추가
  • 선택한 데이터를 사용하여 막대 차트 추가
  • 이미지 다운로드
  • 이미지 표시

테스트할 시간입니다

사용해 보세요! 결과를 준비하기 위해 파일을 실행하려면 아래 코드를 사용하세요!

$ python3 wordcount.py
로그인 후 복사

使用 Python 和 Matplotlib 在文本中绘制字符

글 시작 부분에서 제가 물었던 질문에 답하기 위해, The Great Gatsby에서는 문자 e가 25,000번 이상 사용되었습니다! 우와!

결론

이 글을 마치며 matplotlib과 데이터 과학에 대한 이해를 얻으셨기를 바랍니다.

위 내용은 Python 및 Matplotlib를 사용하여 텍스트에 문자 그리기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿