苹果派小猫 2024-04-19 19:51 采纳率: 71.4%
浏览 7
已结题

python绘制热图出现问题

python绘制热图时出现问题,没有显示文字,如何解决这个问题。

img

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-19 19:51
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试使用Seaborn库绘制一个热图,并遇到了一些错误。让我们逐步分析并修复这些问题。

    首先,我们看到的第一个错误信息是关于XTick对象没有label属性。这个错误可能是因为你尝试访问了轴标签(xtick labels),但可能在创建图表之前没有正确地设置它们。为了解决这个问题,确保你设置了正确的XTicks和YTicks。

    接下来,第二个错误信息是一个AttributeError,这通常意味着你试图访问或调用一个不存在的方法或属性。具体来说,错误发生在sns.heatmap()函数调用上。这可能是由于拼写错误、版本问题或者是传递给函数的参数不正确。

    为了修复这两个问题,我会提供一个修正后的代码示例,同时解释每一步骤的作用。

    import numpy as np
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 假设 data_1 是你的原始数据集
    # df_3 = data_1.drop([...])  # 删除不需要的列
    # df_3.rename(columns={...})  # 重命名列名
    # df_3 = df_3.set_index(...)  # 设置索引
    # df_3 = df_3.iloc[:20]  # 取前20行
    # df_3 = df_3.apply(...)  # 标准化数据
    
    # 创建一个新的随机数据集作为例子
    np.random.seed(42)
    df_3 = pd.DataFrame(np.random.rand(20, 5), columns=['stock_name', 'PE', 'outstanding', 'totalAssets', 'reserve'])
    
    # 设置字体
    myfont2 = None  # 如果你需要特定的字体,这里可以设定
    myfont1 = None  # 同样,如果你需要特定的标题字体,这里可以设定
    
    # 设置Seaborn样式
    sns.set(style="whitegrid")
    
    # 将DataFrame转换为适合热图的形式
    df_3_stacked = df_3.stack().reset_index(name='value')
    df_3_stacked.columns = ['stock_name', 'variable', 'value']
    
    # 绘制热图
    plt.figure(figsize=(8, 8))
    sns.heatmap(
        df_3_stacked.pivot_table(index='stock_name', columns='variable', values='value'),
        annot=False,
        cmap="Blues",
        linewidths=0.05,
        cbar=False,
        fmt=".2g"  # 设置小数点后两位精度
    )
    plt.title("股票数据热力图", fontproperties=myfont1)
    
    # 保存图片(可选)
    # plt.savefig('heat1.png', dpi=1000, transparent=False)
    
    plt.show()
    

    这个代码应该能正确地绘制出带有颜色的热图,但是没有文本标注(因为annot=False)。如果你需要显示文字,只需将annot=False改为annot=True

    注意:对于实际的数据集,请确保按照你的需求进行相应的数据清洗和预处理。这个示例使用的是随机数据。另外,记得安装必要的库,例如numpy, pandas, seaborn, 和 matplotlib,如果没有安装,可以使用pip install numpy pandas seaborn matplotlib命令进行安装。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 创建了问题 4月19日