使用 Python 和 Matplotlib 在文本中繪制字符
本文的目的是幫助您開始在 python 中繪制數據。 我們將創建一個條形圖來繪制給定文本文件中字符的頻率。 在這種情況下,文本文件包含了《了不起的蓋茨比》的內容。
第 1 步:創建您的虛擬環境
這個項目的環境會比較小。 虛擬環境允許您向工作區添加額外的功能,而不會影響計算機的其余部分!
創建一個目錄并在代碼編輯器和終端(運行命令的地方)中打開它。
讓我們運行:
我們可以安裝我們必要的依賴項
我們還要創建兩個文件,read.txt 和 wordcount.py。
我們將使用 wordcount.py 來分析 read.txt 中的文本。
第 2 步:閱讀文本
我們可以比較簡單的開始,
- 首先,它導入我們的繪圖和排序庫
- 其次,我們使用內置的 open 函數,它允許我們打開一個文件進行讀寫
- 然后我們讀取文件里面的文本并將其存儲到文本變量中
- 最后,我們關閉文件,因為我們不再使用它了
這就是我們“讀取”文件并將內容存儲在變量中所需的全部內容。
第 3 步:分析字符
我們可以跟蹤字符的最好方法是使用 python 字典(在其他編程語言中稱為 hashmap)。
字典是一種非常有用的數據存儲方式。 就像真正的字典一樣,它會有一個“單詞”列表,您可以查看單詞以查看定義。
在編程中,這個概念被推廣到“鍵/值”對。 這意味著我們可以設置字典,當我向字典詢問“a”時,它將返回“a”出現的總次數。
所以讓我們編碼吧!
讓我們回顧一下這里發生了什么。
- 首先我們定義一個空字典
- 接下來我們使用 def 關鍵字定義一個函數。 這個函數接受一個變量“字符”,檢查它是否是一個空格(空格、制表符、換行符)。 您可以為您的選擇添加其他標準,例如 isalpha() 以確定字符是否為字母
- 然后檢查它是否已經在字典中。 如果它在字典中,它會將值更改為之前的值加 1(因為我們正在計算這個字符),否則它將在字典中添加一個初始計數為 1 的新條目
- 然后我們遍歷文本變量中的每個字符,其中“i”代表一個單獨的字符,我們保存并運行我們的函數來計算它們
- 最后,我們使用 OrderdedDict 導入按字母順序對字典進行排序
第4步:畫出來!
現在我們的數據集已創建,讓我們將其組織成軸并繪制它!
我們將創建一個列表來表示每個軸
num_list = []
char_list = []
這些列表將相互對應,因此如果 char_list 中的第 1 項是“a”,則 num_list 中的第 1 項將是相應的頻率。 讓我們也把它編碼出來。
我們使用兩個變量循環遍歷我們創建的字典中的鍵/值對,然后將它們添加到我們的數據列表中。
最后讓我們使用 matplotlib 創建并保存這個條形圖。
- 首先,我們創建一個新圖形。 圖為整體窗口
- 向圖中添加繪圖
- 使用我們選擇的數據添加條形圖
- 下載圖片
- 顯示圖像?
是時候測試它了!
使用下面的代碼運行您的文件,為我們的結果做好準備!
所以要回答我在文章開頭提出的問題,字母 e 在《了不起的蓋茨比》中被使用了超過 25,000 次! 哇!
結論
在本文結束時,我希望您對 matplotlib 和數據科學有所了解。