当前位置: 首页 > news >正文

在 Kaggle 中绘制中文乱码解决

在 Kaggle 中绘制中文时,需要设置 Matplotlib 的字体,否则中文会显示为乱码。可以使用 SimHei(黑体)或 Microsoft YaHei(微软雅黑)。

解决方案

  • 使用 matplotlib 设置中文字体
  • 在 Kaggle 安装 SimHei 字体
  • 方法1:手动上传 SimHei.ttf

    如果你一定要用 SimHei(黑体),可以按照以下步骤操作:

    步骤 1:下载 SimHei 字体

  • 在本地下载 SimHei.ttf
    👉 SimHei.ttf(可从 Windows 电脑 C:\Windows\Fonts\simhei.ttf 获取)
  • 上传到 Kaggle Notebook(点击左侧 "Upload" 按钮)
  • import matplotlib.pyplot as plt
    import matplotlib
    
    # 设置字体路径(Kaggle 上传真实目录,根据需要自己改)
    font_path = "/kaggle/input/simhei.ttf"
    
    # 加载字体
    from matplotlib import font_manager
    my_font = font_manager.FontProperties(fname=font_path)
    
    # 应用字体
    plt.rcParams['font.sans-serif'] = my_font.get_name()
    plt.rcParams['axes.unicode_minus'] = False  # 解决负号问题
    
    方法 2:使用 Kaggle Notebook 自带的 Noto Sans CJK
  • 找到字体路径

    运行以下代码,查找 Noto Sans CJK 字体的具体路径:

    import matplotlib.font_manager as fm
    
    # 列出所有可用字体
    for font in fm.findSystemFonts():
        if "NotoSansCJK" in font:
            print(font)
    

    Kaggle 上的 matplotlib 可能默认不识别中文,即使已安装 Noto Sans CJK,你需要手动加载字体并在 legend,xlable,ylabel,title 里指定 prop=my_font。以下是示例的完整代码:

    import matplotlib.pyplot as plt
    import matplotlib.font_manager as fm
    import seaborn as sns
    
    # 1. 安装字体(如果未安装)
    !apt-get update
    !apt-get install -y fonts-noto-cjk
    
    # 2. 查找并加载 Noto Sans CJK 字体
    font_path = "/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc"  # 可能路径
    my_font = fm.FontProperties(fname=font_path)
    
    # 3. 定义模型名称和 F1-score
    models = ["逻辑回归", "SVM", "随机森林", "BERT"]
    f1_scores = [89.6, 89.3, 79.1, 95.0]  # 百分比形式
    
    # 4. 设置 Matplotlib 字体
    plt.rcParams["font.family"] = my_font.get_name()  # 让 Matplotlib 识别中文
    plt.rcParams["axes.unicode_minus"] = False  # 解决负号问题
    
    # 5. 绘制条形图
    plt.figure(figsize=(8, 5))
    bars = plt.bar(models, f1_scores, color=['gray', 'gray', 'gray', 'black'])
    
    # 6. 添加数据标签
    for bar, score in zip(bars, f1_scores):
        plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height() + 0.5,
                 f"{score}%", ha='center', fontsize=12, fontweight='bold', fontproperties=my_font)
    
    # 7. 添加标题和标签
    plt.xlabel("模型", fontsize=14, fontproperties=my_font)
    plt.ylabel("F1-score (%)", fontsize=14, fontproperties=my_font)
    plt.title("不同模型的 F1-score 对比", fontsize=16, fontproperties=my_font)
    
    # 8. 图例(防止乱码)
    plt.legend(["模型性能"], prop=my_font)
    
    # 9. 设置 y 轴范围
    plt.ylim(70, 100)
    
    # 10. 显示图像
    plt.show()
    

相关文章:

  • 相对论-空间和时间(2)
  • 神聖的綫性代數速成例題5. 矩陣運算的定義、轉置的性質、方陣多項式的概念
  • Android 英文文章选词
  • 【Go】函数闭包、堆和栈的概念
  • android ConstraintLayout布局 实战:打造复杂界面的最佳实践
  • Go语言--语法基础3--变量常量运算符--变量
  • 1.8PageTable
  • CSS选择器
  • 93.HarmonyOS NEXT窗口管理基础教程:深入理解WindowSizeManager
  • 蓝桥杯学习-12递归
  • git基础概念和操作
  • 2025年西安交通大学少年班招生考试初试数学试题(初中组)
  • 【TCP】三次挥手,四次挥手详解--UDP和TCP协议详解
  • 继承知识点—详细
  • EMC整改黄金搭档:共模滤波器与磁环
  • Qt中的 #include “xxxx.moc“ 说明
  • 3.13-4 字符
  • 【C++】如何高效掌握UDP数据包解析
  • 2023年蓝桥杯 省赛 ————特殊日期
  • 2025年【广东省安全员C证第四批(专职安全生产管理人员)】考试及广东省安全员C证第四批(专职安全生产管理人员)模拟试题
  • 如何制作wap网站/优惠活动推广文案
  • 任经理 徐州网站建设/深圳网络营销网站设计
  • 网站系统渗透测试报告/重庆seo论坛
  • 自己设计logo网站/seo云优化外包
  • 大型网站建设动力无限/湖人队最新消息
  • 做网站用到的单词/seo关键词排名优化工具