
代码绘制成果展示











代码解释


第一部分

# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom wordcloud import WordCloudimport randomimport osimport matplotlib

第二部分

# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {1: ["#4B0082", "#800080", "#FF8C00", "#FFA500", "#00008B", "#C71585"],60: ["#0b090a", "#161a1d", "#660708", "#a4161a", "#ba181b", "#e5383b"]}SCHEME_ID = 1 #配色方案SHAPE_KEY = 'b' #设置形状colors = COLOR_SCHEMES.get(SCHEME_ID, COLOR_SCHEMES[1]) #提取配色方案

第三部分

# =========================================================================================# ======================================3.辅助函数======================================# =========================================================================================def custom_color_func(word, font_size, position, orientation, random_state=None, **kwargs): # 定义一个自定义的颜色函数,用于生成每个词的颜色return random.choice(colors) #从获取到的颜色列表中随机抽取一种颜色,并返回给词云使用def get_mask_from_library(key): # 定义一个函数,根据传入的标识符生成对应的形状蒙版矩阵size = 1000 #设定蒙版画布的大小x, y = np.ogrid[:size, :size] # 生成用于计算的二维网格坐标系center = size // 2 #画布的中心点坐标if key == 'a': # 方形return None # 直接返回elif key == 'b': # 圆形mask = (x - center) ** 2 + (y - center) ** 2 > (size // 2 - 20) ** 2 # 利用圆的几何方程判断当前像素点是否在圆形外部,返回布尔矩阵return 255 * mask.astype(int) # 将布尔值转换为整数,并乘以255,使圆外部分白色遮挡,圆内部分放置文字else:return None

第四部分

# =========================================================================================# ======================================4.绘图函数======================================# =========================================================================================def plot_and_save_wordcloud(frequencies, output_name, key='a'):mask = get_mask_from_library(key) # 调用上面定义的蒙版函数,获取对应形状的蒙版数据# 使用字典映射获取形状的英文名称用于文件命名shape_name = {'a': 'Square','b': 'Circle',}.get(key, 'Unknown')# 将传入的词频字典输入到WordCloud中,生成词云数据wc.generate_from_frequencies(frequencies)#创建画布plt.figure(figsize=(10, 10))# 在画布上渲染显示词云图像plt.imshow(wc, interpolation="bilinear")plt.axis("off") # 关闭

第五部分

# =========================================================================================# ======================================5.执行部分======================================# =========================================================================================if __name__ == "__main__":df = pd.read_excel(r"data.xlsx") #读取数据frequencies = dict(zip(df['POI_Type'], df['Count'])) #提取数据打包后转换为词频字典#调用绘图函数plot_and_save_wordcloud(frequencies, "Local_Data_Cloud",SHAPE_KEY)

如何应用到你自己的数据

1.设置配色方案:
SCHEME_ID = 1 #配色方案2.设置形状方案:
SHAPE_KEY = 'b' #设置形状3.设置绘图结果的保存路径:
plt.savefig(fr"{shape_name}_Theme{SCHEME_ID}.png" , dpi=300, bbox_inches='tight')4.设置原始数据的文件路径:
df = pd.read_excel(r"data.xlsx") 
预告












推荐


获取方式
