本文介绍了PyQtGraph - 如何设置轴的间隔的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面是我编写的一个函数,它根据分数元组列表(分数及其频率)创建一个图表
Below is a function I have written that create a graph based on a list of tuples of scores (scores and their frequency)
def initialise_chart(self, scores):
pg.setConfigOption("background", "w")
pg.setConfigOption("foreground", "k")
results_graph = pg.PlotWidget()
self.chart_results.addWidget(results_graph)
results_graph.plot([i[0] for i in scores], [i[1] for i in scores], pen={'color': "#006eb4"})
results_graph.setLabels(left="Frequency", bottom="Scores")
results_graph.setXRange(0, self.max_mark, padding=0)
这会产生以下图表:
有没有办法设置 y 轴的间隔,使数字以 1 的步长递增,但范围仍会自动缩放?例如.示例图的 y 轴上显示的唯一数字是 0、1、2
Is there any way to set the intervals of the y-axis so that the numbers go up in steps of 1, but the range is still autoscaled? eg. the only number displayed on the example graph's y-axis would be 0, 1, 2
推荐答案
您必须更改 AxisItem 上的刻度,例如:
You must change the ticks on the AxisItem, by example:
import pyqtgraph as pg
import numpy as np
from pyqtgraph.Qt import QtCore, QtGui
app = pg.mkQApp()
pw = pg.PlotWidget(title="Example")
x = np.arange(20)
y = x**2/150
pw.plot(x=x, y=y, symbol='o')
pw.show()
pw.setWindowTitle('Example')
ax = pw.getAxis('bottom') # This is the trick
dx = [(value, str(value)) for value in list((range(int(min(x.tolist())), int(max(x.tolist())+1))))]
ax.setTicks([dx, []])
ay = pw.getAxis('left') # This is the trick
dy = [(value, str(value)) for value in list((range(int(min(y.tolist())), int(max(y.tolist())+1))))]
ay.setTicks([dy, []])
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
之前:
之后:
这篇关于PyQtGraph - 如何设置轴的间隔的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!