gfdncs 2023-11-09 22:13 采纳率: 50%
浏览 30
已结题

chart.setAxisX 多余

报警多余的代码数据
#py:30: DeprecationWarning: Function: 'QChart.setAxisX(QAbstractAxis * axis, QAbstractSeries * series)' is marked as deprecated, please check the documentation for more information.
chart.setAxisX(axis_x, series_xy) #设置坐标轴的数据!!! 报警多余的数据
d:\BaiduSyncdisk\通讯模块\Qchart测试.py:31: DeprecationWarning: Function: 'QChart.setAxisY(QAbstractAxis * axis, QAbstractSeries * series)' is marked as deprecated, please check the documentation for more information.
chart.setAxisY(axis_y, series_xy) #设置坐标轴的数据!!!报警多余的数据#

import sys,math  #Demo8_1.py
from PySide6.QtWidgets import QApplication,QWidget,QVBoxLayout
from PySide6.QtCharts import QChartView,QChart,QLineSeries,QValueAxis
from PySide6.QtCore import QPointF

class MyWidget(QWidget):
    def __init__(self,parent=None):
        super().__init__(parent)
        self.resize(800,600)
        V = QVBoxLayout(self)
        chartView = QChartView(self)  #创建图表视图控件
        V.addWidget(chartView)
        chart = QChart()  #创建图表
        chartView.setChart(chart)   #图表控件中添加图表
        chart.setTitle("X-Y")   #设置图表的标题
        series_xy = QLineSeries()   #创建折线数据序列
        series_xy.setName("X-Y")   #设置数据序列的名称

        xn = [5, 10, 15, 20, 50]
        yn=  [5, 15, 25, 15, 45]
        for x,y in zip(xn,yn):
            series_xy.append(QPointF(float(x),float(y)))
        chart.addSeries(series_xy)  #图表中添加数据序列
        axis_x = QValueAxis()  #创建坐标轴
        axis_x.setRange(0,60)  #设置坐标轴的范围
        axis_x.setTitleText('mm')  #设置坐标轴的标题
        axis_y = QValueAxis()
        axis_y.setRange(0,60)
        axis_y.setTitleText("s")
        chart.setAxisX(axis_x, series_xy)  #设置坐标轴的数据!!! 报警多余的数据!!!
        chart.setAxisY(axis_y, series_xy)  #设置坐标轴的数据!!!报警多余的数据!!!


if __name__== "__main__":
    app=QApplication(sys.argv)
    window=MyWidget()
    window.show()
    sys.exit(app.exec())

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-11 02:45
    关注

    【以下回答由 GPT 生成】

    这个警告是由于QChart.setAxisXQChart.setAxisY方法已被标记为过时(deprecated)导致的。根据警告信息,你可以检查相关文档以获取更多信息。

    要解决这个问题并优化你的代码,你可以按照以下步骤进行操作:

    1. 首先,你可以使用QChart.setAxisX()QChart.setAxisY()方法的替代方法QChart.addAxis()来设置坐标轴。

    2. 创建坐标轴的代码如下:

    axis_x = QValueAxis()
    axis_x.setRange(0, 60)
    axis_x.setTitleText('mm')
    chart.addAxis(axis_x, Qt.AlignBottom)  # 添加坐标轴到图表底部
    series_xy.attachAxis(axis_x)  # 将数据序列与x轴关联
    
    axis_y = QValueAxis()
    axis_y.setRange(0, 60)
    axis_y.setTitleText('s')
    chart.addAxis(axis_y, Qt.AlignLeft)  # 添加坐标轴到图表左侧
    series_xy.attachAxis(axis_y)  # 将数据序列与y轴关联
    

    这将使用QChart.addAxis()QAbstractAxis.attachAxis()方法来设置坐标轴并与数据序列关联。Qt.AlignBottomQt.AlignLeft参数表示将坐标轴放置在图表底部和左侧。

    你的完整代码如下所示:

    import sys
    import math
    from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout
    from PySide6.QtCharts import QChartView, QChart, QLineSeries, QValueAxis
    from PySide6.QtCore import QPointF, Qt
    
    
    class MyWidget(QWidget):
        def __init__(self, parent=None):
            super().__init__(parent)
            self.resize(800, 600)
            V = QVBoxLayout(self)
            chartView = QChartView(self)  # 创建图表视图控件
            V.addWidget(chartView)
            chart = QChart()  # 创建图表
            chartView.setChart(chart)  # 图表控件中添加图表
            chart.setTitle("X-Y")  # 设置图表的标题
            series_xy = QLineSeries()  # 创建折线数据序列
            series_xy.setName("X-Y")  # 设置数据序列的名称
    
            xn = [5, 10, 15, 20, 50]
            yn = [5, 15, 25, 15, 45]
            for x, y in zip(xn, yn):
                series_xy.append(QPointF(float(x), float(y)))
            chart.addSeries(series_xy)  # 图表中添加数据序列
    
            axis_x = QValueAxis()  # 创建坐标轴
            axis_x.setRange(0, 60)  # 设置坐标轴的范围
            axis_x.setTitleText('mm')  # 设置坐标轴的标题
            chart.addAxis(axis_x, Qt.AlignBottom)  # 添加x轴到图表底部
            series_xy.attachAxis(axis_x)  # 将数据序列与x轴关联
    
            axis_y = QValueAxis()
            axis_y.setRange(0, 60)
            axis_y.setTitleText('s')
            chart.addAxis(axis_y, Qt.AlignLeft)  # 添加y轴到图表左侧
            series_xy.attachAxis(axis_y)  # 将数据序列与y轴关联
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        widget = MyWidget()
        widget.show()
        sys.exit(app.exec())
    

    通过以上修改,你的代码应该能够正常运行,而且不再产生警告信息。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月19日
  • 已采纳回答 11月11日
  • 创建了问题 11月9日