【发布时间】:2018-08-12 22:43:10
【问题描述】:
我得到了这个直方图:
import somewhere.pyqtgraph as pg
from PyQt5 import QtWidgets, QtGui, QtCore
import numpy as np
import sys
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
class HistogramWidget(pg.PlotWidget):
def __init__(self, parent=None):
pg.PlotWidget.__init__(self, parent=parent)
self.values = np.array([])
self.bins = np.linspace(0, 1, 10)
self.brush = (0, 0, 255, 255)
self.curve = None
self.names = []
self.getPlotItem().buttonsHidden = True
self.setStyleSheet("border: 1px solid gray")
def set_bins(self, bins, names):
self.bins = bins
self.names = names
self.xdict = dict(enumerate(names))
self.getPlotItem().axes['bottom']['item'].setTicks([self.xdict.items()])
def add_values(self, values):
self.values = np.append(self.values, values)
self.values = self.values.flatten()
self.y, self.x = np.histogram(self.values, bins=self.bins)
if self.curve is not None:
self.removeItem(self.curve)
self.curve = pg.PlotCurveItem(list(self.xdict.keys()), self.y, stepMode=True, fillLevel=0, brush=self.brush)
self.addItem(self.curve)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = HistogramWidget()
w.set_bins(np.linspace(-3, 8, 40), ['bin_'+str(i[0]) for i in enumerate(np.linspace(-3, 8, 40))])
w.add_values(np.hstack([np.random.normal(size=500), np.random.normal(size=260, loc=4)]))
w.show()
sys.exit(app.exec_())
看起来像这样:
我的问题是:有哪些选项可以更好地显示 xticks?
我可以根据缩放显示一些刻度,为此我找到了AxisItem.textFillLimits,但它没有任何效果,我必须把它放在哪里?这是我尝试过的:
self.getPlotItem().axes['bottom']['item'].setStyle(textFillLimits=[(0, 0.8), (2, 0.6), (4, 0.4), (6, 0.2)])
理想情况下,xticks 应该旋转 45 度,但我没有找到任何关于如何执行此操作的线索。有什么提示吗?
【问题讨论】: