哈夫曼树_ 2024-10-28 12:29 采纳率: 55.6%
浏览 5

为什么下载的皮尔逊相关系数热力图是空白的?

利用以下代码,绘制皮尔逊相关系数热力图:

import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  
import seaborn as sns  
import matplotlib  
  
city_ls = ['Beijing', 'Chengdu', 'Guangzhou', 'Shanghai', 'Shenyang']  
  
def fileName(s):  
    return '{}PM20100101_20151231.csv'.format(s)  
  
for city in city_ls:  
    file = fileName(city)  
    df = pd.read_csv(file)  
    col = df.columns  
    factor_ls = []  
    dis_ls = []  
      
    if city == 'Beijing':  
        factor_ls = [col[i] for i in range(len(col)) if i > 9 and pd.api.types.is_numeric_dtype(df[col[i]])]  
    else:  
        factor_ls = [col[i] for i in range(len(col)) if i > 8 and pd.api.types.is_numeric_dtype(df[col[i]])]  
      
    dis_ls = [c for c in col if c.startswith('PM_') and c != 'PM_US Post' and pd.api.types.is_numeric_dtype(df[c])]  
      
    df_china = df[dis_ls + factor_ls]  
    df_china = df_china.dropna()  
      
    if 'PM_US Post' in col and pd.api.types.is_numeric_dtype(df['PM_US Post']):  
        df_US = df[['PM_US Post'] + factor_ls]  
        df_US = df_US.dropna()
      
    corr = df_china.corr(method='pearson')  
      
    # 设置图形大小  
    plt.figure(figsize=(12, 10))  
    sns.heatmap(corr, annot=True, cmap='coolwarm')  
      
    # 设置中文的字体  
    matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文  
    matplotlib.rcParams['axes.unicode_minus'] = False    # 正常显示负号  
      
    plt.title(f'{city} Correlation Heatmap')  
    fig_file = f'./fig/{city}各区相关系数热力图.jpg'
    plt.savefig(fig_file) 
    plt.show()
    
    print(corr)

在Jupyter中,图片可以正常显示:

img


但是下载的png格式的图片却是空白:

img

如何让下载的图片可以正常显示?

展开全部

  • 写回答

1条回答 默认 最新

  • 无疆76 2024-10-28 12:30
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据您提供的代码和描述,您遇到的问题可能是关于如何正确保存和显示皮尔逊相关系数热力图。针对您的问题,以下是可能的解决方案:

    1. 确保图形渲染完全完成:在某些情况下,绘图窗口可能因为处理数据量较大而没有完全渲染完成就保存了。尝试在执行 plt.savefig() 之前稍微等待一下,确保图形已经完全渲染出来。
    2. 使用不同的后端渲染工具:在 Jupyter Notebook 中,有时候默认的渲染后端可能不适合保存图像。您可以尝试使用其他后端工具来渲染和保存图像。例如,使用 matplotlib.backends.backend_agg 作为渲染后端。
    3. 检查文件保存路径和权限:确保您有权限在指定的路径下保存图像文件,并且路径是正确的。如果路径不存在,创建相应的文件夹。
    4. 检查图像格式和编码问题:有时候,保存的图像可能因为编码问题无法正常显示。尝试使用不同的图像格式(如 PNG)来保存图像,并检查是否有损坏或编码问题。
    5. 检查相关性数据:确保生成的热力图数据(即相关系数矩阵)是有意义的并且不为空。您可以打印相关系数矩阵(print(corr)),检查输出是否为空或是否有异常值。
    6. 调整字体设置:您的代码中已经设置了字体用于显示中文,这通常不会导致热力图空白。但如果出现问题,您可以再次确认字体设置是否正确。

    如果以上方法都不能解决问题,建议您检查其他部分的代码是否有错误,或者尝试简化代码逻辑,逐步调试以找到问题所在。此外,还可以考虑查看是否有相关的错误消息或警告,这可能会提供解决问题的线索。

    评论
    编辑
    预览

    报告相同问题?

    问题事件

    • 创建了问题 10月28日

    悬赏问题

    • ¥15 为什么树莓派5b显示禁止连接
    • ¥20 流量太费!寻找便宜的app音视频SDK或平替方案。
    • ¥15 kubeasz部署遇到问题
    • ¥15 GUIDE to App Designer Migration Tool for MATLAB
    • ¥50 第三代非支配排序遗传算法(NSGA-Ⅲ)和多目标粒子群优化算法(MOPSO)的实现
    • ¥20 plant simulation与python com接口实时数据交互
    • ¥15 有关汽车的MC9S12XS128单片机实验
    • ¥15 求c语言动态链表相关课程有偿,或能将这块知识点讲明白
    • ¥15 FLKT界面刷新异常
    • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部