解决pycharm使用matplotlib时,matplotlib后端设置不正确或与运行环境不兼容引起的报错:AttributeError: module ‘backend_interagg‘ ...

报错提示如下:

AttributeError: module 'backend_interagg' has no attribute 'FigureCanvas'. Did you mean: 'FigureCanvasAgg'?

1.将jupyter notebook 上的可视化代码直接挪到pychram上, 报错

 

2.报错分析

这个错误通常是由于matplotlib后端设置不正确或与运行环境不兼容引起的。为了解决这个问题,我们可以尝试以下方法:

1. 确保matplotlib后端正确设置。
2. 升级matplotlib库。
3. 使用不同的后端。

3.解决方法

方法1:设置matplotlib后端为:交互式后端

请确保在导入`matplotlib.pyplot`之前设置后端为`TkAgg`。这是一个交互式后端,通常适用于大多数环境。

import matplotlib
matplotlib.use('TkAgg')  # 设置为交互式后端
import matplotlib.pyplot as plt
import torch
import torch.nn as nn
import numpy as np
import pandas as pd

# 读取数据集
file_path = r'D:\datasets\预测模型实验\PRZ liquid space leak 0.8.csv'
dataset = pd.read_csv(file_path)

# 将行数做成一列显式的索引列
dataset.insert(0, 'Index_Column', dataset.index)

# 读取'主回路1热管段冷却剂温度(℃)306.852814'的数据
column_name = '主回路1热管段冷却剂温度(℃)306.852814'
if column_name in dataset.columns:
    all_data = dataset[column_name].values
    print(all_data)

    # 可视化显示数据分布情况
    plt.figure(figsize=(16, 8))
    plt.plot(dataset[column_name])

    # 设置中文字体
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用中文字体(例如:黑体)
    plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

    plt.title('主回路1热管段冷却剂温度')
    plt.ylabel('℃')
    plt.xlabel('Times')
    plt.show()
else:
    print(f"列'{column_name}'在数据集中不存在。")

交互显图效果: 

方法2:升级matplotlib库

确保你的matplotlib库是最新版本。你可以使用以下命令升级matplotlib:

```bash
pip install --upgrade matplotlib
```

方法3:使用不同的后端

如果`TkAgg`后端仍然有问题,可以尝试使用其他后端,如`Qt5Agg`或`Agg`。请根据需要进行修改:

import matplotlib
matplotlib.use('Agg')  # 或者使用 'Agg' 后端
import matplotlib.pyplot as plt
import torch
import torch.nn as nn
import numpy as np
import pandas as pd

# 读取数据集
file_path = r'D:\datasets\预测模型实验\PRZ liquid space leak 0.8.csv'
dataset = pd.read_csv(file_path)

# 将行数做成一列显式的索引列
dataset.insert(0, 'Index_Column', dataset.index)

# 读取'主回路1热管段冷却剂温度(℃)306.852814'的数据
column_name = '主回路1热管段冷却剂温度(℃)306.852814'
if column_name in dataset.columns:
    all_data = dataset[column_name].values
    print(all_data)

    # 可视化显示数据分布情况
    plt.figure(figsize=(16, 8))
    plt.plot(dataset[column_name])

    # 设置中文字体
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用中文字体(例如:黑体)
    plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

    plt.title('主回路1热管段冷却剂温度')
    plt.ylabel('℃')
    plt.xlabel('Times')
    plt.savefig('filename.png')
else:
    print(f"列'{column_name}'在数据集中不存在。")

注意,使用Agg后端时,需要用plt.savefig('filename.png')代替plt.show()将图像保存为文件。这在无GUI环境中很有用。 

解释:

1. 设置后端:在导入`matplotlib.pyplot`之前设置后端为交互式后端,如`TkAgg`或`Qt5Agg`。
2. 升级库:确保使用最新版本的matplotlib,以避免已知问题。
3. 尝试不同后端:根据环境和需求选择不同的后端。

以上步骤应该能够解决你在PyCharm中运行matplotlib代码时遇到的错误。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Top Secret

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值