如何获取QtChart QLineSeries中的轴标签

2024-10-01 17:37:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我能够使用Python中的QtCharts库生成图形,但我似乎不知道如何将轴标签添加到图形中

我看到了为QValueAxis设置LabelFormat()的功能,但没有看到如何设置文本本身。我肯定我错过了一些简单的东西

以下是生成图形所需的代码:

def plotLossesChart(self):

      set0 = QBarSet('Conduction Loss')
      set1 = QBarSet('Switching Loss')

      set0.append([random.randint(0, 10) for i in range(5)])
      set1.append([random.randint(0, 10) for i in range(5)])

      series = QStackedBarSeries()
      series.append(set0)
      series.append(set1)

      chart = QChart()
      chart.addSeries(series)
      chart.setTitle('Loss Summary')
      chart.setAnimationOptions(QChart.SeriesAnimations)

      months = ('Upper FET', 'Lower FET', 'Driver', 'Inductor', 'Cap ESR')

      axisX = QBarCategoryAxis()
      axisX.append(months)

      axisY = QValueAxis()
      axisY.setRange(0, 15)

      chart.addAxis(axisX, Qt.AlignBottom)
      chart.addAxis(axisY, Qt.AlignLeft)

      chart.legend().setVisible(True)
      chart.legend().setAlignment(Qt.AlignBottom)

      return chart

def plotEfficiencyChart(self):

      series = QLineSeries()

      load = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 30]
      eff = [0, 0.5726, 0.7321, 0.7978, 0.8398, 0.8616, 0.8798, 
             0.8903, 0.9002, 0.9062, 0.9127, 0.9267, 0.9379, 0.9430, 0.9448]

      for i, e in zip(load, eff):
        series.append(QPointF(float(i), float(e)*100))

      chart = QChart()
      chart.addSeries(series)
      chart.setTitle('Efficiency vs. Load')
      chart.setAnimationOptions(QChart.SeriesAnimations)

      axisX = QValueAxis()
      axisX.setRange(0, 30)
      axisX.setLabelFormat("%.1f")
      axisX.setTickCount(7)

      axisY = QValueAxis()
      axisY.setRange(0, 100)
      axisY.setLabelFormat("%d")
      axisY.setMinorTickCount(5)

      chart.addAxis(axisX, Qt.AlignBottom)
      chart.addAxis(axisY, Qt.AlignLeft)

      series.attachAxis(axisX)
      series.attachAxis(axisY)

      chart.legend().setVisible(False)

      return chart

在主程序中,我将图表添加到图表视图,并将其附加到QGridLayout

这就是我得到的:

This is what I get:

这就是我想要的(将标签添加到我的轴):

enter image description here

我似乎在文档中找不到如何做到这一点。。。有人能帮我吗


Tags: in图形forchartqtseriesappendloss
1条回答
网友
1楼 · 发布于 2024-10-01 17:37:18

必须使用轴的^{}方法:

def plotLossesChart(self):
    # ...
    axisY = QValueAxis()
    axisY.setRange(0, 15)
    axisY.setTitleText("Loss (W)")
    # ...

def plotEfficiencyChart(self):
    # ...
    axisX = QValueAxis()
    axisX.setRange(0, 30)
    axisX.setLabelFormat("%.1f")
    axisX.setTickCount(7)
    axisX.setTitleText("Load (A)")

    axisY = QValueAxis()
    axisY.setRange(0, 100)
    axisY.setLabelFormat("%d")
    axisY.setMinorTickCount(5)
    axisY.setTitleText("Efficiency (%)")
    # ...

enter image description here

相关问题 更多 >

    热门问题