LEO_200 2024-07-03 18:08 采纳率: 0%
浏览 15
已结题

pyqtgraph双y轴

def initUI(self):
    self.wave_area = pg.GraphicsLayoutWidget()
    # value = self.wave_area.getviewbox().state('viewRange')
    # print(value[0][0])
    self.wave_area.setWindowTitle('pyqtgraph 标题')
    self.wave_area.setInteractive(True)
    self.wave_area.resize(1000, 1000)
    layout = QVBoxLayout(self)
    self.wave_area.setBackground('w')
    # 定义轴
    self.right_axis = pg.AxisItem("right")
    # 视图框,用于存放折线
    self.v2 = pg.ViewBox()

    l = pg.GraphicsLayout()
    l.resize(1000, 1000)
    # 设置视图中心小部件 为该布局
    self.wave_area.setCentralWidget(l)
    # 向布局添加轴
    # 注意这里col参数的位置

    l.addItem(self.right_axis, row=0, col=1)
    # 至少有一个绘图项使用它自己的视图框和左轴。
    self.pI = pg.PlotItem()  # 定义一个绘图项

    self.v1 = self.pI.vb  # 对绘图项的视图框的引用
    l.addItem(self.pI, row=0, col=0)  #
    print('555', l.getItem(0, 1))
    l.getItem(0, 1).setPos(1, 0)

    # 向绘图框添加视图框
    l.scene().addItem(self.v1)
    # 用轴连接 存放折线的视图框
    self.right_axis.linkToView(self.v2)

    self.v2.setXLink(self.v1)

    # 轴标签
    self.pI.getAxis("left").setLabel('Power', color='black')
    self.right_axis.setLabel('Temperature', color='blue')
    self.pI.showGrid(x=True, y=True)  # 把X和Y的表格打开
    self.pI.setLabel(axis='bottom', text='Time(s)')
    self.v1.sigResized.connect(self.updateViews)
    # 开始时自动调整一次以适应视图
    # enableAutoRange 启用自动范围
   
    #self.display_Dividing_sampling = float(self.display_interval) / float(self.sampling_interval)

def updateViews(self):
    print(222)
    self.v2.setGeometry(self.v1.sceneBoundingRect())

在右边增加了一个y轴,但是两边的y轴对不齐,怎么解决

img

  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-07-03 18:31
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    在 PyQtGraph 中实现双 Y 轴的对齐问题,通常可以通过以下步骤来解决:

    1. 确保两个视图框(ViewBox)的尺寸和位置一致:这可以通过设置相同的尺寸和位置参数来实现。

    2. 链接两个视图框:使用 setXLink 方法将右侧的视图框与左侧的视图框链接起来,确保它们在 X 轴方向上同步。

    3. 调整轴的位置:确保轴的位置正确,可以使用 setPos 方法来调整轴的位置。

    4. 同步视图框的更新:确保当一个视图框更新时,另一个视图框也能相应地更新。

    根据你提供的代码片段和描述,这里有一些可能的解决方案:

    • 确保 self.v2self.v1 的尺寸和位置是一致的。你可以在 updateViews 方法中同步它们的位置和尺寸。

    • 检查 self.right_axissetPos 方法调用是否正确。你可能需要调整参数以确保轴的位置正确。

    • 确保 self.v2self.v1 在视图更新时能够同步。这可以通过连接它们的信号和槽来实现。

    下面是一些可能的代码调整:

    # 在 initUI 方法中
    # 确保 self.v2 和 self.v1 的尺寸一致
    self.v2.setGeometry(self.v1.sceneBoundingRect())
    
    # 在 updateViews 方法中
    def updateViews(self):
        # 当 self.v1 更新时,更新 self.v2 的尺寸和位置
        self.v2.setGeometry(self.v1.sceneBoundingRect())
        # 确保 self.right_axis 的位置正确
        self.right_axis.setPos(self.v1.xRange().width(), 0)
    

    请注意,这些代码只是示例,可能需要根据你的具体情况进行调整。如果你上传的图片中包含了具体的对齐问题,我建议你根据图片中的布局来调整代码。

    由于我无法直接查看你上传的图片,我无法提供更具体的解决方案。但是,如果你能描述图片中的具体问题,我可以提供更针对性的帮助。

    最后,如果你需要参考链接,这里有一些可能有用的资源:

    希望这些信息能帮助你解决问题!如果还有其他问题,随时欢迎提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月5日
  • 创建了问题 7月3日

悬赏问题

  • ¥15 verilog 非阻塞赋值下的移位拼接错误
  • ¥100 两个按钮控制一个LED
  • ¥15 用C语言写离散数学相关问题
  • ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理
  • ¥15 ansys机翼建模肋参数
  • ¥15 Sumo软件无法运行
  • ¥15 如何在vscode里搭建stata的编辑环境?
  • ¥15 dify知识库创建问题
  • ¥15 如何用C#的chart画1000万个点不卡顿
  • ¥15 爬虫技术找到网上看过房源客户的电话