Iannn_ 2024-04-09 17:55 采纳率: 0%
浏览 1

双y坐标轴标题报错问题

求解为何会报错,定位是ax1.set_ylabel这一行。

import pandas as pd
from tkinter import messagebox, filedialog
import matplotlib.pyplot as plt

messagebox.showinfo("提示", "请先选择数据")
file_path = filedialog.askopenfilename()

DataFrame = pd.read_excel(file_path)

fig = plt.figure()
ax1 = fig.subplots()
ax2 = ax1.twinx()
line1 = ax1.plot(DataFrame[['time']], DataFrame[['L']], 'r-', label='L')
line2 = ax2.plot(DataFrame[['time']], DataFrame[['S0']], 'b--', label='S0 ANGLE')

ax1.set_xlabel('TimeSpan (s)')
ax1.set_ylabel('L (mm)', 'r-')
ax2.set_ylabel('S0 ANGLE (deg)', 'b--')

lines = line1 + line2
labels = [h.get_label() for h in lines]
plt.legend(lines, labels, loc='best')
plt.show()

AttributeError: 'str' object has no attribute 'items'

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-09 17:55
    关注

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

    非常抱歉给您带来了困扰。针对您在Python代码中报错的问题,“AttributeError: 'str' object has no attribute 'items'"的错误信息,这是一个很常见的Python操作错误,通常出现在尝试对字符串对象执行列表或其他集合的操作时。

    下面是我为您提供的一种可能的解决方案:

    首先,确保您的dataframe变量的数据类型是一个列表。如果dataframe不是一个列表(例如,它是一个字典),则会引发此错误。

    下面是修复后的代码:

    import pandas as pd
    from tkinter import messagebox, filedialog
    import matplotlib.pyplot as plt
    
    messagebox.showinfo("提示", "请先选择数据")
    file_path = filedialog.askopenfilename()
    
    # 检查dataframe是否为列表
    if isinstance(dataframe, list):
        DataFrame = pd.read_excel(file_path)
    else:
        messagebox.showinfo("提示", "请先将数据框转换为列表")
    
    fig = plt.figure()
    ax1 = fig.subplots()
    ax2 = ax1.twinx()
    line1 = ax1.plot(DataFrame[['time']], DataFrame[['L']], 'r-', label='L')
    line2 = ax2.plot(DataFrame[['time']], DataFrame[['S0']], 'b--', label='S0 ANGLE')
    
    ax1.set_xlabel('TimeSpan (s)')
    ax1.set_ylabel('L (mm)', 'r-')
    ax2.set_ylabel('S0 ANGLE (deg)', 'b--')
    
    lines = line1 + line2
    labels = [h.get_label() for h in lines]
    plt.legend(lines, labels, loc='best')
    plt.show()
    

    如果您是在创建图表的过程中遇到问题,我建议您参考matplotlib的官方文档,那里有详细的步骤描述了如何创建和使用各种类型的图表,以及如何设置数据标签等。另外,我建议您使用Matplotlib的try-except块来处理可能出现的异常,并提供一个明确的错误消息,以便用户更容易理解您的意图和代码中的错误原因。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月9日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境