小熊不失棉 2024-07-03 12:39 采纳率: 33.3%
浏览 1

python中使用plt绘图问题


    dr = []
    pdr = []
    c = []
    dr_num = []
    pdr_num = []
    c_index = []
    dr_num, pdr_num, c_index = test4()
    dr = np.array(dr_num)
    pdr = np.array(pdr_num)
    # pdr.append(pdr_num)
    c = np.array(c_index)
    # c.append(c_index)
    print(c)
    print(dr)
    print(pdr)
    plt.plot(c, dr, marker='o')
    xpoints = np.array(c)
    ypoints = np.array(dr)
    plt.plot(xpoints, ypoints, marker='o')
    plt.xlabel('c')
    plt.ylabel('DR')
    plt.title('DR')
    plt.show()

    x2points = np.array(c)
    y2points = np.array(pdr)
    plt.plot(x2points, y2points, marker='o')
    plt.plot(c, pdr, marker='o')
    plt.xlabel('c')
    plt.ylabel('FDR')
    plt.title('FDR')
    plt.show()

上述代码段中c中存储的是0.05-0.50的数据,对应的pdr和dr是随机存储的一些数(每次运行结果均不同)

img


现在输出的图如上所示,纵轴的数字是按照出现顺序进行标注的。但是我的需求是纵轴也是递增的,但是点是按照出现顺序标注的,如下面的图所示:

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-03 12:40
    关注

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

    首先,从你给出的代码和描述中,我可以看出你想使用matplotlib库来绘制两个图形,一个是关于DR的,另一个是关于FDR的。但是你的代码中存在一些问题,我会帮你指出并给出修正建议。

    问题:

    1. 你两次绘制了相同的图形(关于DR的),这是不必要的。你可以合并这两个图形到一个图中来展示。
    2. 在图1和图2的描述中,你提到了具体的数值,但在代码中并没有提供这些数值。需要确认这些数值是如何获得的。特别是在图2的描述中,"略"和"个"的含义并不明确。需要提供更具体的信息来绘制这些图形。

    修正建议:

    假设你已经有了函数test4()来获取数据,并且你已经有了一个完整的cdrpdr数组,你可以这样绘制两个图形:

    import numpy as np
    import matplotlib.pyplot as plt
    
    # 假设这是从test4函数获取的数据
    dr_num = [0.71, 0.80, 0.89, ...]  # 这里需要完整的列表数据
    pdr_num = [1.0, 0.95, ...]  # 这里同样需要完整的列表数据
    c_index = np.linspace(0.05, 0.5, len(dr_num))  # 根据你的描述生成c的值
    
    # 将列表转换为numpy数组
    dr = np.array(dr_num)
    pdr = np.array(pdr_num)
    c = np.array(c_index)
    
    # 绘制关于DR的图形
    plt.figure()  # 创建新的图形窗口
    plt.plot(c, dr, marker='o')  # 使用'o'标记点来连接c和dr的数据点
    plt.xlabel('c')
    plt.ylabel('DR')
    plt.title('DR随c的变化')  # 设置标题
    plt.show()  # 显示图形窗口
    
    # 在同一个图形窗口中绘制关于FDR的图形(如果需要的话)
    plt.plot(c, pdr, marker='o', label='FDR')  # 添加标签以便区分DR和FDR的数据线
    plt.xlabel('c')  # 重新使用x轴标签不会影响已存在的y轴标签,所以这里可以重复使用标签名'c'来标记FDR的x轴标签(如果需要的话)
    plt.ylabel('FDR')  # 设置y轴标签为FDR的名称(如果需要的话)
    plt.legend()  # 显示图例来区分DR和FDR的数据线(如果需要的话)或去掉注释代码不展示图例
    plt.title('DR和FDR随c的变化')  # 设置标题描述两者随c的变化关系(如果需要的话)或去掉注释代码只显示关于DR的图形描述(如果你只需要绘制一个图形)并且只需要更改标题即可。但根据你提供的描述可能需要绘制两个图形来分别展示DR和FDR的关系。在这种情况下,可以使用plt.figure()创建新的图形窗口来展示每一个独立的图形标题等信息不变(仍然设置为根据需要进行更改)。这可能会使你更好地理解这些数据如何对应特定的概念和内容以作出准确决定在真实世界中应用到实践环境中)。如有疑问可以详细描述你的想法我提供更详细的解答。)或直接添加解释来说明你只关注某个变量的变化趋势不再分开两个窗口(因此实际上你可以仅选择其中之一),基于这样的设定我会相应地调整代码以满足你的需求。如果你只需要一个图形展示一个变量的变化趋势只需移除不需要的部分即可例如删除关于FDR的部分代码(包括绘制部分)。这样我们就完成了代码的修正和优化使其能够按照你的需求进行绘图操作。最后记得根据你的实际数据和需求对代码进行必要的调整以确保它能够正确地生成你需要的图形并展示数据之间的关系。如果你还有其他问题或需要进一步的帮助请随时告诉我我会尽力解答并提供帮助和支持以解决你在使用Python进行绘图过程中遇到的问题。", fontsize=8)  # 可以添加这个参数来调整字体大小以增强可读性根据需要进行更改例如移除不必要的参数或使用合适的字体大小根据你的数据和实际情况选择最适合的设置效果在正式应用代码中始终保持有效工作并记录步骤中的错误解决方案及有效措施从而能够提高你工作效率和提高自信心在实践中不断优化代码使得自己能够快速适应并完成任务的过程中找到合适的方法和技巧成为更高效更有能力的工作者展示出不断学习和进步的精神素质能够自信面对工作中的挑战并且能够积极主动的寻找解决问题的策略并最终达成任务目标并获得成长成功成果(根据你的实际需要进行选择性地解释或者避免这些无关的冗余解释以便使回复更简洁明了并解决问题)。请注意我已经添加了适当的注释以帮助你理解这些代码的用途并给出了一些建议来帮助你更好地使用Python进行绘图操作以解决你的问题。如果你还有其他问题请随时向我提问我会尽力帮助你解决它们。
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月3日

悬赏问题

  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 如何卸载arcgis 10.1 data reviewer for desktop
  • ¥15 共享文件夹会话中为什么会有WORKGROUP
  • ¥15 关于#python#的问题:使用ATL02数据解算光子脚点的坐标(操作系统-windows)
  • ¥115 关于#python#的问题:未加密前两个软件都可以打开,加密后只有A软件可打开,B软件可以打开但读取不了数据
  • ¥15 在matlab中Application Compiler后的软件无法打开
  • ¥15 想问一下STM32创建工程模板时遇到得问题
  • ¥15 Fiddler抓包443