用Python製作酷炫詞雲圖,原來這麼簡單!

2021-02-21 腳本之家

本文經由博客園作者 費弗裡 授權轉載

原文地址:https://www.cnblogs.com/feffery/p/11842798.html#4477534

如需轉載請聯繫原作者

本文對應腳本及數據已上傳至Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes

一、簡介

  詞雲圖是文本挖掘中用來表徵詞頻的數據可視化圖像,通過它可以很直觀地展現文本數據中地高頻詞:

圖1 詞雲圖示例

  在Python中有很多可視化框架可以用來製作詞雲圖,如pyecharts,但這些框架並不是專門用於製作詞雲圖的,因此並不支持更加個性化的製圖需求,要想創作出更加美觀個性的詞雲圖,需要用到一些專門繪製詞雲圖的第三方模塊,本文就將針對其中較為優秀易用的wordcloud以及stylecloud的用法進行介紹和舉例說明。

二、利用wordcloud繪製詞雲圖

  wordcloud是Python中製作詞雲圖比較經典的一個模塊,賦予用戶高度的自由度來創作詞雲圖:

圖2 wordcloud製作詞雲圖示例2.1 從一個簡單的例子開始

  這裡我們使用到來自wordcloud官方文檔中的constitution.txt來作為可視化的數據素材:

圖3 constitution.txt

  首先我們讀入數據並將數據清洗成空格分隔的長字符串:

import re

with open(『constitution.txt』) as c:
『』』抽取文本中的英文部分並小寫化,並將空格作為分隔拼接為長字符串』』』
text = 『 『.join([word.group().lower() for word in re.finditer(『[a-zA-Z]+』, c.read())])

『』』查看前100個字符』』』
text[:500]

圖4 清洗後的片段文本

  接著使用wordcloud中用於生成詞雲圖的類WordCloud配合matplotlib,在默認參數設置下生成一張簡單的詞雲圖:

from wordcloud import WordCloud
import matplotlib.pyplot as plt
%matplotlib inline

『』』從文本中生成詞雲圖』』』
wordcloud = WordCloud().generate(text)
plt.figure(figsize=[12, 10])
plt.imshow(wordcloud)
plt.axis(『off』)
plt.show()

  生成的詞雲圖:

圖5 默認參數下的詞雲圖

  畢竟是在默認參數下生成的詞雲圖,既醜陋又模糊,為了繪製好看的詞雲圖,接下來我們來對wordcloud繪製詞雲圖的細節內容進行介紹,並不斷地對圖5進行升級改造。

2.2 WordCloud

  作為wordcloud繪製詞雲圖最核心的類,WordCloud的主要參數及說明如下:

fontpath:字符型,用於傳入本地特定字體文件的路徑(ttf或otf文件)從而影響詞雲圖的字體族

width:int型,用於控制詞雲圖畫布寬度,默認為400

height:int型,用於控制詞雲圖畫布高度,默認為200

prefer_horizontal:float型,控制所有水平顯示的文字相對於豎直顯示文字的比例,越小則詞雲圖中豎直顯示的文字越多

mask:傳入蒙版圖像矩陣,使得詞雲的分布與傳入的蒙版圖像一致

contour:float型,當mask不為None時,contour參數決定了蒙版圖像輪廓線的顯示寬度,默認為0即不顯示輪廓線

contour_color:設置蒙版輪廓線的顏色,默認為』black』

scale:當畫布長寬固定時,按照比例進行放大畫布,如scale設置為1.5,則長和寬都是原來畫布的1.5倍

min_font_size:int型,控制詞雲圖中最小的詞對應的字體大小,默認為4

max_font_size:int型,控制詞雲圖中最大的詞對應的字體大小,默認為200

max_words:int型,控制一張畫布中最多繪製的詞個數,默認為200

stopwords:控制繪圖時忽略的停用詞,即不繪製停用詞中提及的詞,默認為None,即調用自帶的停用詞表(僅限英文,中文需自己提供並傳入)

background_color:控制詞雲圖背景色,默認為』black』

mode:當設置為』RGBA』且background_color設置為None時,背景色變為透明,默認為』RGB』

relative_scaling:float型,控制詞雲圖繪製字的字體大小與對應字詞頻的一致相關性,當設置為1時完全相關,當為0時完全不相關,默認為0.5

color_func:傳入自定義調色盤函數,默認為None

colormap:對應matplotlib中的colormap調色盤,默認為viridis,這個參數與參數color_func互斥,當color_func有函數傳入時本參數失效

repeat:bool型,控制是否允許一張詞雲圖中出現重複詞,默認為False即不允許重複詞

random_state:控制隨機數水平,傳入某個固定的數字之後每一次繪圖文字布局將不會改變

  了解了上述參數的意義之後,首先我們修改背景色為白色,增大圖床的長和寬,加大scale以提升圖片的精細程度,並使得水平顯示的文字儘可能多:

『』』從文本中生成詞雲圖』』』
wordcloud = WordCloud(background_color=『white』, # 背景色為白色
height=400, # 高度設置為400
width=800, # 寬度設置為800
scale=20, # 長寬拉伸程度設置為20
prefer_horizontal=0.9999).generate(text)
plt.figure(figsize=[8, 4])
plt.imshow(wordcloud)
plt.axis(『off』)
『』』保存到本地』』』
plt.savefig(『圖6.jpg』, dpi=600, bbox_inches=『tight』, quality=95)
plt.show()

圖6

  可以看到相較於圖5,在美觀程度上有了很大的進步,接下來,我們在圖6的基礎上添加美國本土地圖蒙版:

圖7 美國本土地圖蒙版

  利用PIL模塊讀取我們的美國本土地圖蒙版.png文件並轉換為numpy數組,作為WordCloud的mask參數傳入:

from PIL import Image
import numpy as np

usa_mask = np.array(Image.open(『美國本土地圖蒙版.png』))

『』』從文本中生成詞雲圖』』』
wordcloud = WordCloud(background_color=『white』, # 背景色為白色
height=4000, # 高度設置為400
width=8000, # 寬度設置為800
scale=20, # 長寬拉伸程度程度設置為20
prefer_horizontal=0.9999,
mask=usa_mask # 添加蒙版
).generate(text)
plt.figure(figsize=[8, 4])
plt.imshow(wordcloud)
plt.axis(『off』)
『』』保存到本地』』』
plt.savefig(『圖8.jpg』, dpi=600, bbox_inches=『tight』, quality=95)
plt.show()

圖8

  可以看到圖8在圖6的基礎上進一步提升了美觀程度,接下來我們利用wordcloud中用於從圖片中提取調色方案的類ImageColorGenerator來從下面的星條旗美國地圖蒙版中提取色彩方案,進而反饋到詞雲圖上:

圖9 美國地圖蒙版星條旗色

from PIL import Image
import numpy as np
from wordcloud import ImageColorGenerator

usamask = np.array(Image.open(『美國地圖蒙版星條旗色.png』))
image_colors = ImageColorGenerator(usa_mask)

『』』從文本中生成詞雲圖』』』
wordcloud = WordCloud(background_color=『white』, # 背景色為白色
height=400, # 高度設置為400
width=800, # 寬度設置為800
scale=20, # 長寬拉伸程度程度設置為20
prefer_horizontal=0.2, # 調整水平顯示傾向程度為0.2
mask=usa_mask, # 添加蒙版
max_words=1000, # 設置最大顯示字數為1000
relative_scaling=0.3, # 設置字體大小與詞頻的關聯程度為0.3
max_font_size=80 # 縮小最大字體為80
).generate(text)

plt.figure(figsize=[8, 4])
plt.imshow(wordcloud.recolor(color_func=image_colors), alpha=1)
plt.axis(『off』)
『』』保存到本地』』』
plt.savefig(『圖10.jpg』, dpi=600, bbox_inches=『tight』, quality=95)
plt.show()

圖102.3 中文詞雲圖

  相較於英文文本語料,中文語料處理起來要麻煩一些,我們需要先進行分詞等預處理才能進行下一步的處理,這裡我們使用某外賣平臺用戶評論數據,先讀取進來看看:

import pandas as pd
import jieba

『』』讀入原始數據』』』
raw_comments = pd.read_csv(『waimai_10k.csv』);raw_comments.head()

圖11

  接下來我們利用re、jieba以及pandas中的apply對評論列進行快速清洗:

『』』導入停用詞表』』』
with open(『stopwords.txt』) as s:
stopwords = set([line.replace(『\n』, 『』) for line in s])

『』』傳入apply的預處理函數,完成中文提取、分詞以及多餘空格剔除』』』
def preprocessing(c):

c = [word for word in jieba.cut(『 『.join(re.findall(『[\u4e00-\u9fa5]+』, c))) if word != 『 『 and word not in stopwords]

return 『 『.join(c)

『』』將所有語料按空格拼接為一整段文字』』』
comments = 『 『.join(raw_comments[『review』].apply(preprocessing));comments[:500]

  得到的結果如圖12:

圖12

  這時我們就得到所需的文本數據,接下來我們用美團外賣的logo圖片作為蒙版繪製詞雲圖:

圖13 美團外賣logo蒙版

from PIL import Image
import numpy as np
from wordcloud import ImageColorGenerator

waimai_mask = np.array(Image.open(『美團外賣logo蒙版.png』))
image_colors = ImageColorGenerator(waimai_mask)

『』』從文本中生成詞雲圖』』』
wordcloud = WordCloud(background_color=『white』, # 背景色為白色
height=400, # 高度設置為400
width=800, # 寬度設置為800
scale=20, # 長寬拉伸程度程度設置為20
prefer_horizontal=0.2, # 調整水平顯示傾向程度為0.2
mask=waimai_mask, # 添加蒙版
max_words=1000, # 設置最大顯示字數為1000
relative_scaling=0.3, # 設置字體大小與詞頻的關聯程度為0.3
max_font_size=80 # 縮小最大字體為80
).generate(comments)

plt.figure(figsize=[8, 4])
plt.imshow(wordcloud.recolor(color_func=image_colors), alpha=1)
plt.axis(『off』)
『』』保存到本地』』』
plt.savefig(『圖14.jpg』, dpi=600, bbox_inches=『tight』, quality=95)
plt.show()

  這時我們會發現詞雲圖上繪製出的全是亂碼,這是因為matplotlib默認字體是不包含中文的:

圖14 中文亂碼問題

  這時我們只需要為WordCloud傳入font_path參數即可,這裡我們選擇SimHei字體:

from PIL import Image
import numpy as np
from wordcloud import ImageColorGenerator

waimai_mask = np.array(Image.open(『美團外賣logo蒙版.png』))
image_colors = ImageColorGenerator(waimai_mask)

『』』從文本中生成詞雲圖』』』
wordcloud = WordCloud(font_path=『SimHei.ttf』, # 定義SimHei字體文件
background_color=『white』, # 背景色為白色
height=400, # 高度設置為400
width=800, # 寬度設置為800
scale=20, # 長寬拉伸程度程度設置為20
prefer_horizontal=0.2, # 調整水平顯示傾向程度為0.2
mask=waimai_mask, # 添加蒙版
max_words=1000, # 設置最大顯示字數為1000
relative_scaling=0.3, # 設置字體大小與詞頻的關聯程度為0.3
max_font_size=80 # 縮小最大字體為80
).generate(comments)

plt.figure(figsize=[8, 4])
plt.imshow(wordcloud.recolor(color_func=image_colors), alpha=1)
plt.axis(『off』)
『』』保存到本地』』』
plt.savefig(『圖15.jpg』, dpi=600, bbox_inches=『tight』, quality=95)
plt.show()

圖15三、利用stylecloud繪製詞雲圖

  stylecloud是一個較為嶄新的模塊,它基於wordcloud,添加了一系列的嶄新特性譬如漸變顏色等,可以支持更為個性化的詞雲圖創作:

圖16 styleword製作詞雲圖示例3.1 從一個簡單的例子開始

  這裡我們沿用上一章節中使用過的處理好的text來繪製詞雲圖:

import stylecloud
from IPython.display import Image # 用於在jupyter lab中顯示本地圖片

『』』生成詞雲圖』』』
stylecloud.gen_stylecloud(text=text,
size=512,
output_name=『圖17.png』)

『』』顯示本地圖片』』』
Image(filename=『圖17.png』)

圖17

  可以看出,styleword生成詞雲圖的方式跟wordcloud不同,它直接就將原始文本轉換成本地詞雲圖片文件,下面我們針對其繪製詞雲圖的細節內容進行介紹。

3.2 gen_stylecloud

  在stylecloud中繪製詞雲圖只需要gen_stylecloud這一個函數即可,其主要參數及說明如下:

text:字符串,格式同WordCloud中的generate()方法中傳入的text

gradient:控制詞雲圖顏色漸變的方向,』horizontal』表示水平方向上漸變,』vertical』表示豎直方向上漸變,默認為』horizontal』

size:控制輸出圖像文件的解析度(因為stylecloud默認輸出方形圖片,所以size傳入的單個整數代表長和寬),默認為512

icon_name:這是stylecloud中的特殊參數,通過傳遞對應icon的名稱,你可以使用多達1544個免費圖標來作為詞雲圖的蒙版,點擊這裡查看你可以免費使用的圖標蒙版樣式,默認為』fas fa-flag』

palette:控制調色方案,stylecloud的調色方案調用了palettable,這是一個非常實用的模塊,其內部收集了數量驚人的大量的經典調色方案,默認為』cartocolors.qualitative.Bold_5』

background_color:字符串,控制詞雲圖底色,可傳入顏色名稱或16進位色彩,默認為』white』

max_font_size:同wordcloud

max_words:同wordcloud

stopwords:bool型,控制是否開啟去停用詞功能,默認為True,調用自帶的英文停用詞表

custom_stopwords:傳入自定義的停用詞List,配合stopwords共同使用

output_name:控制輸出詞雲圖文件的文件名,默認為stylecloud.png

font_path:傳入自定義字體*.ttf文件的路徑

random_state:同wordcloud

  對上述參數有所了解之後,下面我們在圖17的基礎上進行改良,首先我們將圖標形狀換成炸彈的樣子,接著將配色方案修改為scientific.diverging.Broc_3:

『』』生成詞雲圖』』』
stylecloud.gen_stylecloud(text=text,
size=1024,
output_name=『圖18.png』,
palette=『scientific.diverging.Broc_3』, # 設置配色方案
icon_name=『fas fa-bomb』 # 設置圖標樣式
)

『』』顯示本地圖片』』』
Image(filename=『圖18.png』)

圖183.3 繪製中文詞雲圖

  在wordcloud中繪製中文詞雲圖類似wordcloud只需要注意傳入支持中文的字體文件即可,下面我們使用一個微博語料數據weibo_senti_100k.csv來舉例:

weibo = pd.read_csv(『weibo_senti_100k.csv』)
weibo_text = [word for word in jieba.cut(『 『.join(re.findall(『[\u4e00-\u9fa5]+』, 『 『.join(weibo[『review』].tolist())))) if word != 『 『 and word not in stopwords]
weibo_text[:10]

圖19

  接著我們將蒙版圖標樣式換成新浪微博,將色彩方案換成colorbrewer.sequential.Reds_3:

『』』生成詞雲圖』』』
『』』生成詞雲圖』』』
stylecloud.gen_stylecloud(text=『 『.join(weibo_text),
size=1024,
output_name=『圖20.png』,
palette=『colorbrewer.sequential.Reds_3』, # 設置配色方案為https://jiffyclub.github.io/palettable/colorbrewer/sequential/#reds_3
icon_name=『fab fa-weibo』, # 設置圖標樣式
gradient=『horizontal』, # 設置顏色漸變方向為水平
font_path=『SimHei.ttf』,
collocations=False
)

『』』顯示本地圖片』』』
Image(filename=『圖20.png』)

圖20

以上就是本文的全部內容,如有筆誤望指出!

更多精彩

在公眾號後臺對話框輸入以下關鍵詞

查看更多優質內容!

女朋友 | 大數據 | 運維 | 書單 | 算法

大數據 | JavaScript | Python | 黑客

AI | 人工智慧 | 5G | 區塊鏈

機器學習 | 數學 | 送書

相關焦點

  • 數據科學 | Python酷炫詞雲圖原來可以這麼玩
    詞雲圖是文本挖掘中用來表徵詞頻的數據可視化圖像,通過它可以很直觀地展現文本數據中地高頻詞。詞雲圖過濾掉大量的低頻低質的文本信息,使得瀏覽者只要一眼掃過文本就可領略文本的主旨。很多文章都會用詞雲圖來直觀的表示數據分析結果,詞雲圖是如果製作的就在這篇文章中尋找答案吧。
  • 詞雲圖,如何酷炫地突出重點
    詞雲圖,如何酷炫地突出重點在現實生活中,很多人想做詞雲圖,也有了關鍵詞的數據但自己又不會做詞雲圖這時候怎麼辦?看過來吧,今天我來教你怎麼做,讓你學會製作美觀、酷炫的詞雲圖。詞雲圖,其作用主要是為了文本數據的視覺表示,由詞彙組成類似雲的彩色圖形。相對柱狀圖,折線圖,餅圖等等用來顯示數值數據的圖表,詞雲圖的獨特之處在於,它可以展示大量文本數據。每個詞的重要性以字體大小,字體越大,越突出,也越重要。
  • 利用python畫出詞雲圖
    本文將介紹如何利用python中相應的模塊畫出詞雲圖。首先給出效果圖:其中詞雲圖中的詞彙是對手機簡訊中的垃圾簡訊的統計,字體越大表示在垃圾簡訊中出現的頻次越高。下面給出具體的步驟。讀取「垃圾簡訊」的csv數據首先給出代碼:其中pandas是一個python常用的數據可視化模塊。pd.read_csv函數是用來讀取csv文件,data.columns是修改文件中的列的名稱。
  • 用詞雲圖看Sustainability期刊熱門題目
    在之前的推文《用詞雲圖看2020社科基金課題~》中,我們已經介紹了詞雲圖的相關用法,並結合jieba分詞來繪製詞雲圖,由於jieba只針對中文進行分詞操作,本期當中,我們要在上周發布的推文《在Sustainability上發文最多的原來是這些高校》基礎上,利用nltk庫對論文題目進行分詞操作,並用詞雲圖直觀地了解Sustainability上發表論文的熱門課題,同時對詞雲圖的一些具體用法進行介紹。
  • 用Wordcloud生成指定形狀的詞雲圖
    在生成詞雲圖之前,首先要做一些準備工作1.安裝結巴分詞庫下面我來簡單介紹一下結巴分詞的用法結巴分詞的分詞模式分為三種:(1)全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度快,但是不能解決歧義問題(2)精確模式:將句子最精確地切開,適合文本分析(3)搜尋引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞下面用一個簡單的例子來看一下三種模式的分詞區別
  • 怎麼用Python畫出好看的詞雲圖?
    相信很多人在第一眼看到下面這些圖時,都會被其牛逼的視覺效果所吸引,這篇文章就教大家怎麼用Python畫出這種圖。分詞之後,就需要根據分詞結果生成詞雲,這個過程需要用到wordcloud庫最後需要將生成的詞雲展現出來,用到大家比較熟悉的matplotlib理清了詞雲圖繪製的主要脈絡之後,下面就用代碼操作起來。
  • 用python寫遊戲腳本原來這麼簡單
    當然,作為一名程式設計師,肝這種東西完全可以用寫代碼的方式幫我們自動完成。遊戲腳本其實並不高深,最簡單的體驗方法就是下載一個Airtest了,直接截幾個圖片,寫幾層代碼,就可以按照自己的邏輯玩兒遊戲了。當然,本篇文章不是要講Airtest這個怎麼用,而是用原始的python+opencv來實現上面的操作。
  • 一種用Python生成詞雲
    一種用Python生成詞雲我們在閱讀一篇很長的文章時,總先看看文章的關鍵詞來獲知文章的大概內容。今天我們就來製作一個詞雲程序,將文章中出現次數較多的詞語提取出來,生成一張詞雲圖。詞雲圖的生成原理:程序會將這篇文章中的所有詞組識別出來,然後統計每個詞組出現的次數,出現次數越多,詞組的字號越大,最後把所有詞組拼合成一張圖像,也就是我們想要的詞雲圖。我們需要把這篇文章儲存在一個txt文檔裡,把這個文檔和程序放在同一個文件夾下。
  • Python模塊Wordcloud,手把手教你生成詞雲圖
    wordcloud是Python擴展庫中一種將詞語用圖片表達出來的一種形式,通過詞雲生成的圖片,我們可以更加直觀的看出某篇文章的故事梗概。首先貼出一張詞雲圖(以哈利波特小說為例):在生成詞雲圖之前,首先要做一些準備工作1.安裝結巴分詞庫pip install jiebaPython中的分詞模塊有很多
  • 不會做詞雲圖?一分鐘教會你用手機做漂亮的詞雲圖
    什麼是詞雲圖我們經常會在網上看到這樣一種圖片:由多種顏色的文詞拼成的圖案,比如下面這張用關鍵詞「IP位址」拼成的IP字母圖案,不僅形象而且能夠突出想要表達的主要內容,非常實用,這就叫詞雲圖!那麼詞雲圖怎麼做呢?猴哥今天來告訴大家如何用手機做出各種圖案的詞雲圖。
  • 如何用DataFocus工具製作詞雲圖
    我在網上發現了一款操作簡單還使用感不錯的可視化工具,想和大家分享一下我的使用心得,接下來我將利用DataFocus中最新研發的一款圖表類型——詞雲圖,發給大家進行介紹,主要是介紹詞雲圖的操作步驟,希望對大家有所幫助。
  • Python製作詞雲視頻,通過詞雲圖來看小姐姐跳舞
    本文用 python 做了一個詞雲圖視頻,視頻左半部分是小姐姐跳舞視頻,右半部分是根據動作生成的的詞雲視頻,看一下效果製作過程分為以下幾個部分1,視頻下載首先需要下載一個小姐姐跳舞的視頻,這裡我用的是 you-get
  • 原來製作遊戲腳本這麼簡單!
    原來製作遊戲腳本這麼簡單!諸如鍵盤連按、滑鼠連點等,你只想過用,但你想過自己寫嗎?有時候這些輔助腳本的製作甚至比你熟悉一款網遊還來的簡單!你還別不信,看完下面的內容,或許下一秒你就能夠製作出超酷的遊戲工具幫助你遊戲了!
  • 實戰|Python輕鬆實現繪製詞雲圖(附詳細源碼)
    文章:菜J學Python雖然現在已經有很多現成的製作詞雲圖的工具了,但一般存在以下幾個問題:問題一:工具太多,眼花繚亂,質量參差不齊,選擇困難症;問題二:大多詞雲工具或多或少有一些限制,自定義的空間有限;問題三:有些工具甚至收費。基於以上幾個問題,J哥覺得有必要寫一篇Python繪製詞雲圖的文章,因為實在太簡單!
  • 【蛋糕製作】芒果蛋糕,千層蛋糕原來製作過程這麼簡單
    【蛋糕製作】芒果蛋糕,千層蛋糕原來製作過程這麼簡單 2020-12-05 20:04
  • 3分鐘做出炫酷詞雲圖,數據分析都能用
    在瀏覽公眾號文章的時候,會發現一些比較炫酷的插圖,是通過文字組合而成的,這就是詞雲圖。詞雲圖常常用在數據分析方面,出現在PPT中的概率也很高,用來統計重要詞頻。在做文章、標題、留言等要素的分析時,也可以利用詞雲圖對出現的重點詞彙進行分析提取,歸納總結,一目了然。
  • 超燃的文字雲效果,用Python就能輕鬆get!
    / 02 / stylecloud庫繪製詞雲01 stylecloud簡介對自己而言,平時用 python 製作詞雲主要使用wordcloud,如果在可視化的過程還要用 pyecharts 繪製其他圖,那麼詞雲也乾脆就用pyecharts製作了。
  • 詞雲圖生成器
    詞雲圖生成器是一款幫助設計師快速設計各種形狀「詞雲」圖的手機應用。海報模式:可以將詞條排列出宣傳海報的效果;強對比模式:會將首詞條的權重設置的更高,相對海報模式設計的詞雲圖,強對比模式更能突出首詞條的重要性;背景模式:該模式下的詞條沒有權重的區別,會均勻填充滿矢量模板,適合於製作背景圖或者LOGO圖。
  • Python用wordcloud展示,有你名字嗎?
    漂亮的詞雲圖我們仍以在線新華字典(自己搜,結果中第一個)的常用男孩名字作為數據源展開分析。該名字在百萬人中的數量我們需要獲取的就是框選內容:男性:XXX 女性:XXXX很簡單,大家先思考下如何操作。用Python將電子表格Excel展示在界面中,PyQt5之QTableWidget應用
  • 清甜細膩的煉乳,原來製作這麼簡單,只要一口鍋就能製作完成
    清甜細膩的煉乳,原來製作這麼簡單,只要一口鍋就能製作完成在我們生活中煉乳的運用是挺廣泛的,而夏天的甜品裡用的尤其多,例如奶茶裡面加點,西米露也可以加。煉乳是一種牛奶製品,用鮮牛奶或羊奶經過消煉乳毒濃縮製成的飲料,它的特點是可貯存較長時間。