日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python设置word背景色_Python数据可视化:WordCloud入门

發布時間:2023/12/2 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python设置word背景色_Python数据可视化:WordCloud入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WordCloud是一種很好的展現數據的方式,網上也有不少小工具和在線網頁。

但是有些不支持中文,有些安裝復雜,所以決定用Python實現。

主要參考官網,通過官網的例子,講一下WordCloud的制作。

主要流程

獲取內容的路徑

如果是一段文字,系統自動算頻次

你也可以直接導入統計好的頻次

設置字體

一般字體路徑在C:\Windows\Fonts,你可以選自己喜歡的中文或者英文字體

切割中文字符

英文字符就不用切割了

輸入WordCloud的參數

背景色

字號

生成的形狀

顏色

字體大小

字體旋轉等等

生成WordCloud

用matplotlib顯示圖片

效果圖

安裝庫

老規矩,首先,你要安裝庫。

最基本的兩個:

pip install wordcloud #這是WordCloud的庫

pip install matplotlib #顯示圖像

一個單詞構造WordCloud

在這個代碼中,我們需要安裝一個numpy庫

(大部分小伙伴應該都裝過,就不用再裝了)

pip install numpy

這里用這個庫,主要是想用數學坐標生成一個簡單的背景圖案,比如圓形、方形

基本步驟

1、輸入單詞

2、用numpy 生成一個形狀,下面生成了一個圓形mask

3、輸入WordCloud的參數(包括背景色、是否重復、圖案形狀)

4、用matplotlib顯示圖片

import numpy as np

import matplotlib.pyplot as plt

from wordcloud import WordCloud

text = "square" #輸入你要的單詞

x, y = np.ogrid[:300, :300] #快速產生一對數組

# 產生一個以(150,150)為圓心,半徑為130的圓形mask

mask = (x - 150) ** 2 + (y - 150) ** 2 > 130 ** 2 #此時mask是bool型

mask = 255 * mask.astype(int) #變量類型轉換為int型

wc = WordCloud(

background_color="white", #背景顏色為“白色”

repeat=True, #單詞可以重復

mask=mask #指定形狀,就是剛剛生成的圓形

)

wc.generate(text) #從文本生成wordcloud

plt.axis("off") #把作圖的坐標軸關掉

plt.imshow(wc, interpolation="bilinear")

plt.show()

生成WordCloud

最簡單的生成方式,文本內容都是英文,直接用系統默認的形狀(一個長方形)

我這邊是導入了一個商務英語的txt,所以可以看到,出現次數最多的單詞是company,然后是business、new、work等單詞,我還看到了money,哈哈~

基本步驟

1、獲取內容txt的路徑

2、輸入WordCloud的參數(包括背景色、字號等)

3、生成WordCloud

4、用matplotlib顯示圖片

*WordCloud有很多參數,如果你不寫,都是默認的。比如背景色默認黑色。

import os

from os import path

from wordcloud import WordCloud

from matplotlib import pyplot as plt

# 獲取當前文件路徑

d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()

# 獲取文本txt的路徑(txt和代碼在一個路徑下面)

text = open(path.join(d,'BusinessEnglish.txt')).read()

# 生成詞云

wc = WordCloud(

scale=2,

max_font_size=100, #最大字號

background_color='white' #設置背景顏色

)

wc.generate(text) # 從文本生成wordcloud

# wc.generate_from_text(text) #用這種表達方式也可以

# 顯示圖像

plt.imshow(wc,interpolation='bilinear')

plt.axis('off')

plt.tight_layout()

wc.to_file('標簽云效果圖.png') # 儲存圖像

#plt.savefig('標簽云效果圖.png',dpi=200) #用這個可以指定像素

plt.show()

設置WordCloud形狀

都是長方形、圓形、正方形這種,好像不夠炫酷

為了炫酷,我們可以給它設置不同的形狀,比如云朵、愛心等等

下面我們用Alice的小裙子做個實例

這個圖片長這樣

我們生成的圖片是這樣的,可以看到,完整保留了上圖的輪廓

基本步驟

和之前基本都是一致的,就是多了一步,導入指定圖片,獲取圖片輪廓

1、獲取內容txt的路徑

2、輸入WordCloud的參數(包括背景色、字號等),指定了生成的形狀

3、生成WordCloud

4、用matplotlib顯示圖片

*代碼中增加了一個stopwords,有些你覺得沒意義的單詞,不想顯示在圖片上,你就可以放在這里

from os import path

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

import os

from wordcloud import WordCloud, STOPWORDS

# 獲取當前文件路徑

d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()

# 獲取文本txt的路徑(txt和代碼在一個路徑下面)

text = open(path.join(d, 'BusinessEnglish.txt')).read()

# 讀取mask的圖像(圖像和代碼在一個路徑下面)

alice_mask = np.array(Image.open(path.join(d, "alice_mask.png")))

# 設置不顯示單詞,比如said、in、on、is這種單詞

stopwords = set(STOPWORDS)

stopwords.add("said")

# 設置詞云參數

wc = WordCloud(background_color="white",

max_words=2000,

mask=alice_mask,

stopwords=stopwords,

contour_width=3, #設置輪廓寬度

contour_color='steelblue') #設置輪廓顏色

# 從文本生成wordcloud

wc.generate(text)

# 保存到文件

wc.to_file(path.join(d, "alice.png"))

# 顯示圖片

plt.imshow(wc, interpolation='bilinear')

plt.axis("off")

plt.figure() #新建一個圖片,把mask也顯示出來

plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')

plt.axis("off")

plt.show()

根據圖片調整顏色

原圖是這樣的

如果我們直接根據上一步,獲取圖片輪廓,可以得到下圖

我們進一步,根據原圖,調整顏色

其實就是獲取了圖片顏色,也是一行代碼

image_colors = ImageColorGenerator(alice_coloring)

完整代碼

from os import path

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

import os

from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

# 獲取當前文件路徑

d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()

# 獲取文本txt的路徑(txt和代碼在一個路徑下面)

text = open(path.join(d, 'BusinessEnglish.txt')).read()

# 讀取我要的圖片文件

alice_coloring = np.array(Image.open(path.join(d, "alice_color.png")))

# 設置不顯示的單詞

stopwords = set(STOPWORDS)

stopwords.add("said")

# 設置詞云參數

wc = WordCloud(background_color="white",

max_words=2000,

mask=alice_coloring,

stopwords=stopwords,

max_font_size=40,

random_state=42)

# 從文本生成wordcloud

wc.generate(text)

# 根據圖片,創建顏色

image_colors = ImageColorGenerator(alice_coloring)

# 把圖片分成3份

fig, axes = plt.subplots(1, 3)

axes[0].imshow(wc, interpolation="bilinear")

# recolor wordcloud and show

# we could also give color_func=image_colors directly in the constructor

axes[1].imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")

axes[2].imshow(alice_coloring, cmap=plt.cm.gray, interpolation="bilinear")

for ax in axes:

ax.set_axis_off()

# 單獨顯示圖片

# plt.figure()

# plt.imshow(wc, interpolation="bilinear")

# plt.axis("off")

# plt.figure()

# plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")

# plt.axis("off")

# plt.figure()

# plt.imshow(alice_coloring, cmap=plt.cm.gray, interpolation="bilinear")

# plt.axis("off")

plt.show()

用頻率繪制WordCloud

上面是直接把一個txt輸進去,系統自動給你算出現次數的

但是實際過程中,我們有時候,是知道單詞出現次數的,我們就想根據已知的次數顯示

這一步,其實就改了一行代碼,

原來是這樣的

wc.generate(text)

# 這里的text是一段文字

現在是這樣的

wc.generate_from_frequencies(text)

# 這里的text是一個字典

# 'ken': 1, 'was': 47, 'hot': 2, 'water': 2

如果你已經有一個字典,直接代進去就好了

這里給大家詳細看一下,如果假設我沒有這個字典

我還是一段文字,我想先生成這個字典,再代入進去

這里,你需要安裝一個庫multidict,創建一鍵多值字典

pip install multidict

用multidict這個庫,我可以把文本變成一個字典

通過上圖就可以看到,這個字典有1105個組合,每一個單詞,都統計了出現次數

import multidict as multidict

import numpy as np

import os

import re

from PIL import Image

from os import path

from wordcloud import WordCloud

import matplotlib.pyplot as plt

def getFrequencyDictForText(sentence):

fullTermsDict = multidict.MultiDict()

tmpDict = {}

# making dict for counting frequencies

for text in sentence.split(" "):

if re.match("a|the|an|the|to|in|for|of|or|by|with|is|on|that|be", text):

continue

val = tmpDict.get(text, 0)

tmpDict[text.lower()] = val + 1

for key in tmpDict:

fullTermsDict.add(key, tmpDict[key])

return fullTermsDict

def makeImage(text):

alice_mask = np.array(Image.open("alice_mask.png"))

wc = WordCloud(

background_color="white",

max_words=1000,

mask=alice_mask

)

# generate word cloud

wc.generate_from_frequencies(text)

# show

plt.imshow(wc, interpolation="bilinear")

plt.axis("off")

wc.to_file('frequency.png') # 儲存圖像

plt.show()

# 獲取當前文件路徑

d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()

# 獲取文本txt的路徑(txt和代碼在一個路徑下面)

text = open(path.join(d, 'BusinessEnglish.txt'), encoding='utf-8')

text = text.read()

makeImage(getFrequencyDictForText(text))

生成中英文WordCloud

生成一個中英文混搭的WordCloud

如果你的txt全是中文,那就是全中文的

基本步驟

和之前基本也都一樣,就是中文字符,需要增加一個中文詞語切割

這就需要添加一個庫

pip install jieba # 中文切割

1、獲取內容txt的路徑

2、設置字體

3、切割中文字符

4、輸入WordCloud的參數(包括背景色、字號等),指定了生成的形狀

5、生成WordCloud

6、用matplotlib顯示圖片

import os

from os import path

from wordcloud import WordCloud

from matplotlib import pyplot as plt

import jieba

# 獲取當前文件路徑

d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()

# 獲取文本txt

text = open(path.join(d,'商務英語.txt'),encoding='utf-8').read()

# 設置中文字體

font_path = 'C:\Windows\Fonts\simfang.ttf' # 字體路徑

# 精確切割中文字符

text = ' '.join(jieba.cut(text, cut_all = False))

# 生成詞云

wc = WordCloud(

font_path = font_path, #字體路徑

scale=2,

max_words = 100, #最多詞個數

max_font_size=100, #最大字號

background_color='white' #背景色

)

wc.generate(text)

# 顯示圖像

plt.imshow(wc,interpolation='bilinear')

plt.axis('off')

plt.tight_layout()

# 儲存圖像

#wc.to_file('標簽云效果圖.png')

#plt.savefig('標簽云效果圖.png',dpi=200)

plt.show()

總結

以上是生活随笔為你收集整理的python设置word背景色_Python数据可视化:WordCloud入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩欧美视频网站 | 91久久国语露脸精品国产高跟 | 黄色成人在线观看 | 亚洲高清在线一区 | 岳乳丰满一区二区三区 | 女王人厕视频2ⅴk | 不卡一区二区在线视频 | 国产伦精品一区二区三区视频黑人 | 亚洲欧美偷拍一区 | 波多野结衣视频在线播放 | 欧美一区二区三区四区五区 | 天天色天天干天天 | 亚洲第一成人在线 | 国内自拍视频在线播放 | 宇都宫紫苑在线播放 | 国产视频污 | 亚洲一区二区国产 | 黄色在线不卡 | 大肉大捧一进一出好爽视频 | 日本美女高潮 | 五月天综合在线 | 婷婷激情小说网 | 久久影视| 久久新网址 | 久久99久久99精品蜜柚传媒 | 亚洲一区成人在线 | 香蕉视频在线观看免费 | 黄视频免费在线观看 | 亚洲50p | 色吊丝中文字幕 | 黄色一级视屏 | 国产一区二区三区四区五区在线 | 激情小说一区 | 精品视频久久久 | 天天躁夜夜操 | 婷婷777| 69福利视频 | 少妇xxx | 日韩精品午夜 | 高hnp视频| 免费看黄在线网站 | 欧美激情成人网 | 在线观看污网站 | 国产专区一区二区三区 | 一级片黄色片 | 在线播放www | 134vcc影院免费观看 | 国产视频久久 | 亚洲综合在线成人 | 打屁股疼的撕心裂肺的视频 | 久久综合免费视频 | 性按摩玩人妻hd中文字幕 | 性猛交娇小69hd | 精品人妻码一区二区三区红楼视频 | 欧美美女色图 | 久色视频 | 日韩欧美国产综合 | 国产精品成人无码专区 | 奇米777色 | 日本美女逼 | 日批在线观看视频 | 99久久久成人国产精品 | 国产对白在线 | 暖暖日本视频 | 日本裸体xx少妇18在线 | 中文字幕一区二区人妻痴汉电车 | 日韩三级在线免费观看 | 日韩毛片网站 | 91美女免费看 | 久久人人精 | 久久久久久久极品 | 美女裸体跪姿扒开屁股无内裤 | 一个人在线免费观看www | 日本一区二区不卡视频 | 老熟妇高潮一区二区高清视频 | 中文字幕一本 | 日本黄色大片免费 | 天天弄天天操 | 国产亚洲精久久久久久无码苍井空 | 亚洲一区二区三区在线观看视频 | 777精品伊人久久久久大香线蕉 | 欧美黑人欧美精品刺激 | 韩国甜性涩爱 | 日韩经典三级 | 欧美一级成人 | 黄色大片免费看 | 少妇又色又紧又黄又刺激免费 | 男女性网站 | 麻豆videos| 国产视频黄色 | 啪啪啪毛片 | 日本不卡一区视频 | www黄色在线观看 | 日本老小玩hd老少配 | 久久最新免费视频 | 久久久久久伊人 | 娇妻玩4p被三个男人伺候电影 | 在线麻豆| 影音先锋在线中文字幕 |