You can use QCategoryAxis to place ticks where you want:
Initialize:
ch = self.chView.chart() self.chartAxisX = QCategoryAxis(labelsPosition=QCategoryAxis.AxisLabelsPositionOnValue, startValue=0.0) ch.setAxisX(self.chartAxisX) self.chartAxisY = QCategoryAxis(labelsPosition=QCategoryAxis.AxisLabelsPositionOnValue, startValue=0.0) ch.setAxisY(self.chartAxisY)
add series:
ch.addSeries(s) s.attachAxis(self.chartAxisX) s.attachAxis(self.chartAxisY)
sets ticks with a multiple of 5:
for s in self.chartAxisX.categoriesLabels(): self.chartAxisX.remove(s) for i in range(0, int(max_x_value) + 1, 5): self.chartAxisX.append(str(i), i) self.chartAxisX.setRange(0.0, max_x_value)
or use this generic function for any interval:
def format_axis(axis, min_value, max_value, step): for s in axis.categoriesLabels(): axis.remove(s) axis.setStartValue(min_value) for i in range(ceil(min_value / step), floor(max_value / step) + 1): v = i * step axis.append('%g' % v, v) axis.setRange(min_value, max_value) format_axis(self.chartAxisX, -1.1, 0.98, 0.25)
source share