def updateIndicator(self, data, candles_visible): true_range = talib.ATR(data[2], data[3], data[4], timeperiod=14) firstNotNan = np.where(np.isnan(true_range))[0][-1] + 1 true_range[:firstNotNan] = true_range[firstNotNan] true_range = true_range[-candles_visible:] self.true_range_line.clear() for i in range(candles_visible): self.true_range_line.append(i + 0.5, true_range[i]) # detach and remove old axes for ax in self.true_range_line.attachedAxes(): self.true_range_line.detachAxis(ax) for ax in self.axes(): self.removeAxis(ax) # set x axes ax = QtChart.QValueAxis() ax.setRange(0, candles_visible) ax.hide() # set y axes ay = QtChart.QValueAxis() ay.setRange(min(true_range), max(true_range)) ay.setGridLinePen(QtGui.QPen(QtGui.QColor(80, 80, 80), 0.5)) ay.setLinePen(QtGui.QPen(QtGui.QColor(0, 0, 0), 0.5)) ay.applyNiceNumbers() ay.setTickCount(3) # add and attach new axes self.addAxis(ax, QtCore.Qt.AlignBottom) self.addAxis(ay, QtCore.Qt.AlignRight) self.true_range_line.attachAxis(ax) self.true_range_line.attachAxis(ay)
def updateIndicator(self, data, candles_visible): # ADOSC(high, low, close, volume, fastperiod=3, slowperiod=10) chaikin_oscillator = talib.ADOSC(data[2], data[3], data[4], data[5], fastperiod=3, slowperiod=10) chaikin_oscillator = chaikin_oscillator[-candles_visible:] self.oscillator.clear() for i in range(candles_visible): self.oscillator.append(i + 0.5, chaikin_oscillator[i]) # detach and remove old axes for ax in self.oscillator.attachedAxes(): self.oscillator.detachAxis(ax) for ax in self.axes(): self.removeAxis(ax) # set x axes ax = QtChart.QValueAxis() ax.setRange(0, candles_visible) ax.hide() # set x axes ay = QtChart.QValueAxis() bound = max(abs(min(chaikin_oscillator)), max(chaikin_oscillator)) ay.setRange(-bound, bound) ay.setGridLinePen(QtGui.QPen(QtGui.QColor(80, 80, 80), 0.5)) ay.setLinePen(QtGui.QPen(QtGui.QColor(0, 0, 0), 0.5)) ay.applyNiceNumbers() ay.setTickCount(3) # add and attach new axes self.addAxis(ax, QtCore.Qt.AlignBottom) self.addAxis(ay, QtCore.Qt.AlignRight) self.oscillator.attachAxis(ax) self.oscillator.attachAxis(ay)
def __init__(self, name): super().__init__() # self.setParent(parent) self.chart = qtch.QChart(title=name) self.setChart(self.chart) self.series = qtch.QLineSeries(name='Counts') self.chart.addSeries(self.series) self.ydata = [] self.xdata = [] self.series.append([ qtc.QPointF(x, self.ydata[index]) for index, x in enumerate(self.xdata) ]) x_axis = qtch.QValueAxis() x_axis.setRange(0, 10) y_axis = qtch.QValueAxis() y_axis.setRange(0, self.max) self.chart.setAxisX(x_axis, self.series) self.chart.setAxisY(y_axis, self.series) self.chart.setTheme(qtch.QChart.ChartThemeDark) self.setRenderHint(qtg.QPainter.Antialiasing)
def __init__(self): super().__init__() # create chart chart = qtch.QChart(title=self.chart_title) self.setChart(chart) # series self.series = qtch.QSplineSeries(name="Percentage") chart.addSeries(self.series) # Create data container self.data = deque([0] * self.num_data_points, maxlen=self.num_data_points) self.series.append([qtc.QPoint(x, y) for x, y in enumerate(self.data)]) # CPU Axes x_axis = qtch.QValueAxis() x_axis.setRange(0, self.num_data_points) x_axis.setLabelsVisible(False) y_axis = qtch.QValueAxis() y_axis.setRange(0, 100) chart.setAxisX(x_axis, self.series) chart.setAxisY(y_axis, self.series) # Appearance tweaks self.setRenderHint(qtg.QPainter.Antialiasing) # configure timer self.timer = qtc.QTimer(interval=200, timeout=self.refresh_stats) self.timer.start()
def __init__(self, parent=None): super().__init__(parent=parent) self.max = self.min = 0 if not parent: self.setWindowTitle(self.title) chart = QtChart.QChart(title=self.chart_title) self.setChart(chart) self.chart().setTitle(self.chart_title + f"min-> {self.min}, max-> {self.max}") self.seriesName = "ultilização " self.series = QtChart.QSplineSeries(name=self.seriesName) chart.addSeries(self.series) self.data = deque([0] * self.num_data_points, maxlen=self.num_data_points) self.series.append( [QtCore.QPoint(x, y) for x, y in enumerate(self.data)]) x_axis = QtChart.QValueAxis() x_axis.setRange(0, self.num_data_points) x_axis.setLabelsVisible(False) y_axis = QtChart.QValueAxis() y_axis.setRange(0, 100) chart.setAxisX(x_axis, self.series) chart.setAxisY(y_axis, self.series) chart.setTheme(QtChart.QChart.ChartThemeBlueCerulean) self.timer = QtCore.QTimer(interval=200, timeout=self.refresh_stats) self.timer.start() self.show()
def __init__(self, parent=None): super().__init__(parent=parent) self.lastMousePosition = None if not parent: self.setWindowTitle(self.title) chart = QtChart.QChart(title=self.title) self.setChart(chart) self.seriesName = 'Frequency' self.series = QtChart.QSplineSeries(name=self.seriesName) chart.addSeries(self.series) self.data = deque([0] * self.numDataPonints, maxlen=self.numDataPonints) self.series.append([QtCore.QPoint(x, y) for x, y, in enumerate(self.data)]) xAxis = QtChart.QValueAxis() xAxis.setRange(0, self.numDataPonints) xAxis.setLabelsVisible(False) chart.setAxisX(xAxis, self.series) yAxis = QtChart.QValueAxis() current, min, max = psutil.cpu_freq() self.chart().setTitle(self.title + f" min->{min}, max->{max}") self.average = current yAxis.setRange(0, max) chart.setAxisY(yAxis, self.series) self.setRenderHint(QtGui.QPainter.Antialiasing) chart.setTheme(QtChart.QChart.ChartThemeBlueCerulean) self.timer = QtCore.QTimer(interval=200, timeout=self.updateFrequency) self.timer.start() self.show()
def __init__(self): # основной конструктор self.label = QtWidgets.QLabel( Form) # создаем элементы подписи размерностей у полей self.label_2 = QtWidgets.QLabel(Form) self.label_3 = QtWidgets.QLabel(Form) self.label_4 = QtWidgets.QLabel(Form) self.label_5 = QtWidgets.QLabel(Form) self.label_6 = QtWidgets.QLabel(Form) self.t = QtWidgets.QDoubleSpinBox( Form) # созда ем элементы числовых полей для ввода значений self.k = QtWidgets.QDoubleSpinBox(Form) self.N = QtWidgets.QDoubleSpinBox(Form) self.F = QtWidgets.QDoubleSpinBox(Form) self.fi = QtWidgets.QDoubleSpinBox(Form) self.w = QtWidgets.QDoubleSpinBox(Form) self.btn_pause = QtWidgets.QPushButton(Form) # создаем кнопку паузы self.btn_start = QtWidgets.QPushButton(Form) # создаем кнопку старт self.chartView = QtChart.QChartView(Form) # создаем поле для графиков self.chart = self.chartView.chart( ) # получаем ссылку на график из chartView self.axisX = QtChart.QValueAxis() # создаем ось Х self.axisY = QtChart.QValueAxis() # создаем ось У
def __init__(self): self.r = QtWidgets.QDoubleSpinBox(Form) self.label_4 = QtWidgets.QLabel(Form) self.label_3 = QtWidgets.QLabel(Form) self.L = QtWidgets.QDoubleSpinBox(Form) self.btn_pause = QtWidgets.QPushButton(Form) self.btn_start = QtWidgets.QPushButton(Form) self.label_2 = QtWidgets.QLabel(Form) self.R = QtWidgets.QDoubleSpinBox(Form) self.label = QtWidgets.QLabel(Form) self.M = QtWidgets.QDoubleSpinBox(Form) self.chartView = QtChart.QChartView(Form) self.chartView.setRenderHint(QtGui.QPainter.Antialiasing) self.chart = self.chartView.chart() self.chart.legend().setVisible(False) self.axisX = QtChart.QValueAxis() self.axisY = QtChart.QValueAxis() self.axis_series = QtChart.QLineSeries() self.ring_series = QtChart.QLineSeries() self.rope_series = QtChart.QLineSeries() self.dot_series = QtChart.QScatterSeries() self.timer = QtCore.QTimer() self.timer.setInterval(100) self.total_time = .0 self.runge_kutta = ode(self.f) self.runge_kutta.set_integrator('dopri5') self.dest = +1 self.flag = True
def __init__(self): self.W = QtWidgets.QDoubleSpinBox(Form) self.H = QtWidgets.QDoubleSpinBox(Form) self.label_25 = QtWidgets.QLabel(Form) self.label_24 = QtWidgets.QLabel(Form) self.label_23 = QtWidgets.QLabel(Form) self.label_22 = QtWidgets.QLabel(Form) self.dY = QtWidgets.QDoubleSpinBox(Form) self.mu = QtWidgets.QDoubleSpinBox(Form) self.label_21 = QtWidgets.QLabel(Form) self.dX = QtWidgets.QDoubleSpinBox(Form) self.label_20 = QtWidgets.QLabel(Form) self.label_19 = QtWidgets.QLabel(Form) self.label_18 = QtWidgets.QLabel(Form) self.label_17 = QtWidgets.QLabel(Form) self.label_16 = QtWidgets.QLabel(Form) self.M = QtWidgets.QDoubleSpinBox(Form) self.k4 = QtWidgets.QDoubleSpinBox(Form) self.label_15 = QtWidgets.QLabel(Form) self.m = QtWidgets.QDoubleSpinBox(Form) self.label_14 = QtWidgets.QLabel(Form) self.label_13 = QtWidgets.QLabel(Form) self.label_12 = QtWidgets.QLabel(Form) self.label_11 = QtWidgets.QLabel(Form) self.label_10 = QtWidgets.QLabel(Form) self.k3 = QtWidgets.QDoubleSpinBox(Form) self.label_9 = QtWidgets.QLabel(Form) self.label_8 = QtWidgets.QLabel(Form) self.k2 = QtWidgets.QDoubleSpinBox(Form) self.label_7 = QtWidgets.QLabel(Form) self.label_6 = QtWidgets.QLabel(Form) self.label_5 = QtWidgets.QLabel(Form) self.k1 = QtWidgets.QDoubleSpinBox(Form) self.label_4 = QtWidgets.QLabel(Form) self.btn_pause = QtWidgets.QPushButton(Form) self.btn_start = QtWidgets.QPushButton(Form) self.btn_hide = QtWidgets.QPushButton(Form) self.chartView = QtChart.QChartView(Form) self.chartView.setRenderHint(QtGui.QPainter.Antialiasing) self.chart = self.chartView.chart() self.chart.legend().setVisible(False) self.axisX = QtChart.QValueAxis() self.axisY = QtChart.QValueAxis() self.mass_series = QtChart.QScatterSeries() self.trajectory_series = QtChart.QLineSeries() self.box_series = QtChart.QLineSeries() self.s1_series = QtChart.QLineSeries() self.s2_series = QtChart.QLineSeries() self.s3_series = QtChart.QLineSeries() self.s4_series = QtChart.QLineSeries() self.timer = QtCore.QTimer() self.timer.setInterval(10) self.total_time = .0 self.runge_kutta = ode(self.f) self.runge_kutta.set_integrator('dopri5')
def updateIndicator(self, data, candles_visible): # OBV(close, volume) obv = talib.OBV(data[4], data[5]) obv = obv[-candles_visible:] self.obv.clear() for i in range(candles_visible): self.obv.append(i + 0.5, obv[i]) # detach and remove old axes for ax in self.obv.attachedAxes(): self.obv.detachAxis(ax) for ax in self.axes(): self.removeAxis(ax) # set x axes ax = QtChart.QValueAxis() ax.setRange(0, candles_visible) ax.hide() # set y axes ay = QtChart.QValueAxis() ay.setRange(min(obv), max(obv)) ay.setGridLinePen(QtGui.QPen(QtGui.QColor(80, 80, 80), 0.5)) ay.setLinePen(QtGui.QPen(QtGui.QColor(0, 0, 0), 0.5)) ay.applyNiceNumbers() ay.setTickCount(3) # add and attach new axes self.addAxis(ax, QtCore.Qt.AlignBottom) self.addAxis(ay, QtCore.Qt.AlignRight) self.obv.attachAxis(ax) self.obv.attachAxis(ay)
def addChart(self, radius, profile, type="line"): series = QtChart.QLineSeries() self.currentRadius = [] self.currentProfile = [] for x, y in zip(radius, profile): series.append(x, y) self.currentRadius.append(x) self.currentProfile.append(y) self.profileChart = QtChart.QChart() self.profileChart.setTheme(self.theme) self.profileChart.setBackgroundRoundness(0) self.profileChart.setMargins(QtCore.QMargins(0, 0, 0, 0)) self.profileChart.removeAllSeries() self.profileChart.addSeries(series) axisX = QtChart.QValueAxis() axisX.setTickCount(10) if type == "line" or type == "rectangle": axisX.setTitleText("K (\u212B\u207B\u00B9)") elif type == "arc": axisX.setTitleText("\u03A7 (\u00BA)") axisY = QtChart.QValueAxis() axisY.setTickCount(10) axisY.setTitleText("Intensity (arb. units)") self.profileChart.addAxis(axisX, QtCore.Qt.AlignBottom) self.profileChart.addAxis(axisY, QtCore.Qt.AlignLeft) series.attachAxis(axisX) series.attachAxis(axisY) self.profileChart.legend().setVisible(False) self.setChart(self.profileChart) self.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
def updateIndicator(self, data, candles_visible): # STOCH(high, low, close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0) slowK, slowD = talib.STOCH(data[2], data[3], data[4], fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0) firstNotNan = np.where(np.isnan(slowK))[0][-1] + 1 slowK[:firstNotNan] = slowK[firstNotNan] firstNotNan = np.where(np.isnan(slowD))[0][-1] + 1 slowD[:firstNotNan] = slowD[firstNotNan] slowK = slowK[-candles_visible:] slowD = slowD[-candles_visible:] self.slowK.clear() self.slowD.clear() for i in range(candles_visible): self.slowK.append(i + 0.5, slowK[i]) self.slowD.append(i + 0.5, slowD[i]) self.top_line.clear() self.bottom_line.clear() self.top_line.append(0, 80) self.top_line.append(candles_visible, 80) self.bottom_line.append(0, 20) self.bottom_line.append(candles_visible, 20) # detach and remove old axes for ax in self.slowK.attachedAxes(): self.slowK.detachAxis(ax) for ax in self.slowD.attachedAxes(): self.slowD.detachAxis(ax) for ax in self.area.attachedAxes(): self.area.detachAxis(ax) for ax in self.axes(): self.removeAxis(ax) # set x axes ax = QtChart.QValueAxis() ax.setRange(0, candles_visible) ax.hide() # set y axes ay = QtChart.QValueAxis() ay.setRange(0, 100) ay.setGridLinePen(QtGui.QPen(QtGui.QColor(80, 80, 80), 0.5)) ay.setLinePen(QtGui.QPen(QtGui.QColor(0, 0, 0), 0.5)) ay.applyNiceNumbers() ay.setTickCount(3) # add and attach new axes self.addAxis(ax, QtCore.Qt.AlignBottom) self.addAxis(ay, QtCore.Qt.AlignRight) self.slowK.attachAxis(ax) self.slowK.attachAxis(ay) self.slowD.attachAxis(ax) self.slowD.attachAxis(ay) self.area.attachAxis(ax) self.area.attachAxis(ay)
def __init__(self, parent=None): super().__init__(parent) self.series = QtChart.QCandlestickSeries() self.series.setUseOpenGL(True) self.chart = QtChart.QChart() self.chart.addSeries(self.series) self.setChart(self.chart) # x axis self.x_scrolling = QtChart.QValueAxis() # x axis used for scrolling self.x_scrolling.setTickType(QtChart.QValueAxis.TicksFixed) self.x_scrolling.setLabelsVisible(False) self.x_scrolling.setVisible(False) self.chart.setAxisX(self.x_scrolling, self.series) # y axis self.y = QtChart.QValueAxis() self.y.setTitleText("price") self.chart.setAxisY(self.y, self.series) self.chart.legend().hide() self.chart.setTitle("BarData") # visual control self.days_to_show = 20 self.price_window_scale = 1.1 self.showing_index_end = 0 # 非正数表示数组最末尾的第n个,正数表示除了显示最新的数据以外还额外显示空白数据 self.indicator: Optional[Indicator] = None self.crosshair_h: Optional[QGraphicsLineItem] = None self.crosshair_v: Optional[QGraphicsLineItem] = None self.indicator_index = None # index in self.showing_records # config self.x_zoom_scale_ratio = 0.5 self.max_padding_days = 3 # 最多显示的空白数据数量,也就是限制self.showing_index_end的最大值 self.y_label_count = 30 self.y_scale_threshold = 1.1 # status variables self.dragging = False self.dragging_info: Optional[DraggingInfo] = None self.showing_records: List["InternalData"] = [] # data record(use model/view to reduce memory if necessary) self.datas: List["InternalData"] = [] # intermediate variables to speed up calculation self.y_range = 1 # used in redraw_indicator self.y_min = 1 # used in redraw_indicator self.y_max = 1 # used in redraw_indicator # redraw self.redraw_lock = Lock() self.redraw_scheduled = False self.redraw_y_lock = Lock() self.redraw_y_scheduled = False
def plot_clicked(self): """ :return: """ if self.__data is None: QtWidgets.QMessageBox.critical(self, "Error Plotting Data", "Need to import data first.") return psi_series = QtChart.QLineSeries() psi_series.setName("Pressure") for ts, p in self.__data.pressure.iteritems(): psi_series.append(time.mktime(ts.timetuple()) * 1000, p) temp_series = QtChart.QLineSeries() temp_series.setName("Temperature") for ts, t in self.__data.temperature.iteritems(): temp_series.append(time.mktime(ts.timetuple()) * 1000, t) chart = QtChart.QChart() chart.addSeries(psi_series) chart.addSeries(temp_series) x_axis = QtChart.QDateTimeAxis() x_axis.setTickCount(10) x_axis.setFormat("HH:mm:ss") x_axis.setTitleText("Time") chart.addAxis(x_axis, QtCore.Qt.AlignBottom) psi_series.attachAxis(x_axis) psi_axis = QtChart.QValueAxis() psi_axis.setLabelFormat("%i") psi_axis.setTitleText("Pressure (psi)") chart.addAxis(psi_axis, QtCore.Qt.AlignLeft) psi_series.attachAxis(psi_axis) temp_axis = QtChart.QValueAxis() temp_axis.setLabelFormat("%.2f") temp_axis.setTitleText("Temperature (C)") chart.addAxis(temp_axis, QtCore.Qt.AlignLeft) temp_series.attachAxis(temp_axis) chart.setTitle("Pressure Test %s" % (self.testReportLineEdit.text())) view = QtChart.QChartView(chart) view.setRenderHint(QtGui.QPainter.Antialiasing) dialog = QtWidgets.QDialog(self) layout = QtWidgets.QVBoxLayout() layout.addWidget(view) dialog.setLayout(layout) dialog.resize(1000, 800) dialog.show()
def __init__(self, port, baud=115200, samples=255, min_value=0, max_value=1023, **kwargs): super(SerialPlotter, self).__init__(**kwargs) self._serial_port = port self._serial_port_baud = baud self.samples = samples self.series = [] self.data = [] # set up chart self.setWindowTitle('Serial Plotter') self.setContentsMargins(0, 0, 0, 0) self.chart = QtChart.QChart() self.chart.setTheme(QtChart.QChart.ChartThemeDark) # remove the annoying white border self.chart.layout().setContentsMargins(0, 0, 0, 0) self.chart.setBackgroundRoundness(0) # set up chart view self.chart_view = QtChart.QChartView(self.chart) self.chart_view.setRenderHint(QtGui.QPainter.Antialiasing) self.chart_view.setMinimumSize(800, 600) # set up axis self.x_axis = QtChart.QValueAxis() self.x_axis.setRange(0, self.samples) self.x_axis.setTitleText('Samples') self.x_axis.setLabelFormat('%i') self.y_axis = QtChart.QValueAxis() self.y_axis.setRange(min_value, max_value) self.y_axis.setTitleText('Values') self.chart.addAxis(self.x_axis, Qt.AlignBottom) self.chart.addAxis(self.y_axis, Qt.AlignLeft) self.setCentralWidget(self.chart_view) # Setup the serial port self.serial = QtSerialPort.QSerialPort( self._serial_port, baudRate=self._serial_port_baud, readyRead=self.on_serial_ready_read, ) if not self.serial.open(QtCore.QIODevice.ReadWrite): print('can\'t open serial port') sys.exit(1) self.show()
def __init__(self): super().__init__() self._chart = QtChart.QChart() self._chart.legend().hide() self._chart.layout().setContentsMargins(0, 0, 0, 0) self._chart.setBackgroundRoundness(0) self._chart.setBackgroundVisible(False) self._chart.setMargins(QtCore.QMargins(0, 0, 0, 0)) self._xAxis = QtChart.QValueAxis() self._xAxis.setTickCount(3) self._xAxis.setMinorTickCount(4) self._xAxis.setLabelFormat("%.3f mm") self._chart.addAxis(self._xAxis, QtCore.Qt.AlignBottom) self._yAxis = QtChart.QValueAxis() self._yAxis.setTickCount(2) self._yAxis.setMinorTickCount(3) self._yAxis.setLabelFormat("%.2g Ohm") self._chart.addAxis(self._yAxis, QtCore.Qt.AlignLeft) self._line = QtChart.QLineSeries() self._line.setColor(QtGui.QColor('magenta')) self._chart.addSeries(self._line) self._line.attachAxis(self._xAxis) self._line.attachAxis(self._yAxis) self._series = QtChart.QScatterSeries() self._series.setName("R") self._series.setMarkerSize(3) self._series.setBorderColor(QtGui.QColor('red')) self._series.setColor(QtGui.QColor('red')) self._chart.addSeries(self._series) self._series.attachAxis(self._xAxis) self._series.attachAxis(self._yAxis) self._marker = QtChart.QScatterSeries() self._marker.setMarkerSize(9) self._marker.setBorderColor(QtGui.QColor('red')) self._marker.setColor(QtGui.QColor('red')) self._chart.addSeries(self._marker) self._marker.attachAxis(self._xAxis) self._marker.attachAxis(self._yAxis) self.qt.setMinimumSize(160, 60) self._view = QtChart.QChartView(self._chart) self.qt.layout().setContentsMargins(0, 0, 0, 0) self.qt.layout().addWidget(self._view)
def updateIndicator(self, data, candles_visible): # CCI(high, low, close, timeperiod=14) cci = talib.CCI(data[2], data[3], data[4], timeperiod=14) try: firstNotNan = np.where(np.isnan(cci))[0][-1] + 1 except: firstNotNan = 0 cci[:firstNotNan] = cci[firstNotNan] cci = cci[-candles_visible:] self.cci.clear() for i in range(candles_visible): self.cci.append(i + 0.5, cci[i]) self.top_line.clear() self.bottom_line.clear() self.top_line.append(0, 100) self.top_line.append(candles_visible, 100) self.bottom_line.append(0, -100) self.bottom_line.append(candles_visible, -100) # detach and remove old axes for ax in self.cci.attachedAxes(): self.cci.detachAxis(ax) for ax in self.area.attachedAxes(): self.area.detachAxis(ax) for ax in self.axes(): self.removeAxis(ax) # set x axes ax = QtChart.QValueAxis() ax.setRange(0, candles_visible) ax.hide() # set y axes ay = QtChart.QValueAxis() bound = max(abs(min(cci)), max(cci)) ay.setRange(min(-bound, -200), max(bound, 200)) ay.setGridLinePen(QtGui.QPen(QtGui.QColor(80, 80, 80), 0.5)) ay.setLinePen(QtGui.QPen(QtGui.QColor(0, 0, 0), 0.5)) ay.applyNiceNumbers() ay.setTickCount(3) # add and attach new axes self.addAxis(ax, QtCore.Qt.AlignBottom) self.addAxis(ay, QtCore.Qt.AlignRight) self.cci.attachAxis(ax) self.cci.attachAxis(ay) self.area.attachAxis(ax) self.area.attachAxis(ay)
def __set_default_chart(self, chart): chart.removeAllSeries() self.__clear_axes(chart) axis_x = QtChart.QValueAxis() axis_x.setTitleText('') axis_x.setRange(-1, self.__offset_x + 1) axis_y = QtChart.QValueAxis() axis_y.setTitleText('') axis_y.setRange(-1, self.__groups[0].y + 1) chart.setAxisX(axis_x) chart.setAxisY(axis_y)
def updateIndicator(self, data, candles_visible): # RSI(close, timeperiod=14) rsi = talib.RSI(data[4], timeperiod=14) try: firstNotNan = np.where(np.isnan(rsi))[0][-1] + 1 except: firstNotNan = 0 rsi[:firstNotNan] = rsi[firstNotNan] rsi = rsi[-candles_visible:] self.index_line.clear() for i in range(candles_visible): self.index_line.append(i + 0.5, rsi[i]) self.top_line.clear() self.bottom_line.clear() self.top_line.append(0, 70) self.top_line.append(candles_visible, 70) self.bottom_line.append(0, 30) self.bottom_line.append(candles_visible, 30) # detach and remove old axes for ax in self.index_line.attachedAxes(): self.index_line.detachAxis(ax) for ax in self.area.attachedAxes(): self.area.detachAxis(ax) for ax in self.axes(): self.removeAxis(ax) # set x axes ax = QtChart.QValueAxis() ax.setRange(0, candles_visible) ax.hide() # set y axes ay = QtChart.QValueAxis() ay.setRange(0, 100) ay.setGridLinePen(QtGui.QPen(QtGui.QColor(80, 80, 80), 0.5)) ay.setLinePen(QtGui.QPen(QtGui.QColor(0, 0, 0), 0.5)) ay.applyNiceNumbers() ay.setTickCount(3) # add and attach new axes self.addAxis(ax, QtCore.Qt.AlignBottom) self.addAxis(ay, QtCore.Qt.AlignRight) self.index_line.attachAxis(ax) self.index_line.attachAxis(ay) self.area.attachAxis(ax) self.area.attachAxis(ay)
def __init__(self, parent=None): super().__init__(parent=parent) if not parent: self.setWindowTitle(self.title) chart = QtChart.QChart(title=self.title) self.setChart(chart) self.yRange = 10 netInfo = psutil.net_io_counters() self.lastSent = netInfo.bytes_sent self.lastReceived = netInfo.bytes_recv xAxis = QtChart.QValueAxis() xAxis.setRange(0, self.numDataPonints) xAxis.setLabelsVisible(False) chart.setAxisX(xAxis) yAxis = QtChart.QValueAxis() yAxis.setRange(0, self.yRange) chart.setAxisY(yAxis) self.yAxis = yAxis self.sendSplineName = "eviados " sentSpline = QtChart.QSplineSeries() sentSpline.setName(self.sendSplineName) chart.addSeries(sentSpline) sentSpline.attachAxis(xAxis) sentSpline.attachAxis(yAxis) self.sendSpline = sentSpline self.reciveSplineName = "recebidos " receivedSpline = QtChart.QSplineSeries() receivedSpline.setName(self.reciveSplineName) chart.addSeries(receivedSpline) receivedSpline.attachAxis(xAxis) receivedSpline.attachAxis(yAxis) self.reciveSpline = receivedSpline self.setRenderHint(QtGui.QPainter.Antialiasing) chart.setTheme(QtChart.QChart.ChartThemeBlueCerulean) self.sentData = deque([0] * self.numDataPonints, maxlen=self.numDataPonints) self.receivedData = deque([0] * self.numDataPonints, maxlen=self.numDataPonints) self.sendSpline.append([QtCore.QPointF(x, y) for x, y, in enumerate(self.sentData)]) self.reciveSpline.append([QtCore.QPointF(x, y) for x, y, in enumerate(self.receivedData)]) self.timer = QtCore.QTimer(interval=1000, timeout=self.upadeData) self.timer.start() self.show()
def __init__(self, parent=None): super().__init__(parent=parent) chart = QtChart.QChart(title=self.title) if not parent: self.setWindowTitle(self.title) self.setChart(chart) self.yRange = 20 diskInfo = psutil.disk_io_counters() self.lastRead = diskInfo.read_bytes self.lastWrite = diskInfo.write_bytes xAxis = QtChart.QValueAxis() xAxis.setRange(0, self.numDataPonints) xAxis.setLabelsVisible(False) chart.setAxisX(xAxis) yAxis = QtChart.QValueAxis() yAxis.setRange(0, self.yRange) chart.setAxisY(yAxis) self.yAxis = yAxis writeSpline = QtChart.QSplineSeries() self.WriteSplineName = "write(MB) " writeSpline.setName(self.WriteSplineName) chart.addSeries(writeSpline) writeSpline.attachAxis(xAxis) writeSpline.attachAxis(yAxis) self.writeSpline = writeSpline readSpline = QtChart.QSplineSeries() self.readSplineName = "read(MB) " readSpline.setName(self.readSplineName) chart.addSeries(readSpline) readSpline.attachAxis(xAxis) readSpline.attachAxis(yAxis) self.readSpline = readSpline chart.setTheme(QtChart.QChart.ChartThemeBlueCerulean) self.writeData = deque([0] * self.numDataPonints, maxlen=self.numDataPonints) self.readData = deque([0] * self.numDataPonints, maxlen=self.numDataPonints) self.writeSpline.append([QtCore.QPoint(x, y) for x, y, in enumerate(self.writeData)]) self.readSpline.append([QtCore.QPoint(x, y) for x, y, in enumerate(self.readData)]) self.timer = QtCore.QTimer(interval=1000, timeout=self.upadeData) self.timer.start() self.show()
def getChart(self, lessonname, data): series = QtChart.QStackedBarSeries() for key, name, color, brush in zip( [self.PASS, self.FAIL], ["pass", "fail"], ["green", "red"], [QtCore.Qt.Dense1Pattern, QtCore.Qt.Dense2Pattern]): barset = QtChart.QBarSet(name) barset.append([d[key] for d in data]) barset.setBrush(QtGui.QBrush(QtGui.QColor(color), brush)) barset.setLabel(name) series.append(barset) series.setLabelsFormat("@value%") series.setLabelsVisible(True) chart = QtChart.QChart() chart.addSeries(series) chart.setTitle(lessonname) chart.setAnimationOptions(QtChart.QChart.SeriesAnimations) categories = [d["name"] for d in data] axis = QtChart.QBarCategoryAxis() axis.append(categories) chart.setAxisX(axis, series) axis = QtChart.QValueAxis() axis.setMax(100) axis.setMin(0) chart.setAxisY(axis) chart.legend().setVisible(True) return chart
def setAxis(self): # Setting X-axis self.axis_x = QtChart.QValueAxis() self.axis_x.setTickCount(11) self.axis_x.setLabelFormat("%.0f") self.axis_x.setTitleText(self.labelx) self.axis_x.setRange(0, 600) self.addAxis(self.axis_x, QtCore.Qt.AlignBottom) # Setting Y-axis self.axis_y = QtChart.QValueAxis() self.axis_y.setTickCount(10) self.axis_y.setRange(-45, 45) self.axis_y.setLabelFormat("%.1f") self.axis_y.setTitleText(self.labely) self.addAxis(self.axis_y, QtCore.Qt.AlignLeft)
def calculate_graph(self): """ Calculate the Bar graph for the selected SKU's from database. """ if self.show_graph: bar_set_1, bar_set_2 = self.get_graph_point() series = QtChart.QStackedBarSeries() series.append(bar_set_1) series.append(bar_set_2) chart = QtChart.QChart() chart.setTitle("Good and Bad") chart.addSeries(series) chart.setAnimationOptions(QtChart.QChart.SeriesAnimations) x_axis = QtChart.QBarCategoryAxis() x_axis.append(constants.TIME_VALUES[:-1]) chart.addAxis(x_axis, QtCore.Qt.AlignBottom) series.attachAxis(x_axis) y_axis = QtChart.QValueAxis() chart.addAxis(y_axis, QtCore.Qt.AlignLeft) series.attachAxis(y_axis) chart.legend().setVisible(True) chart.legend().setAlignment(QtCore.Qt.AlignBottom) chart_view = QtChart.QChartView(chart) chart_view.setRenderHint(QtGui.QPainter.Antialiasing) return chart_view
def __init__(self): super().__init__() # Create chart chart = qtch.QChart(title=self.chart_title) self.setChart(chart) # Create series series = qtch.QBarSeries() chart.addSeries(series) # add bar sets bar_set = qtch.QBarSet('Percent Used') series.append(bar_set) # Get the data partitions = [] for part in psutil.disk_partitions(): if 'rw' in part.opts.split(','): partitions.append(part.device) usage = psutil.disk_usage(part.mountpoint).percent bar_set.append(usage) # Create Axis x_axis = qtch.QBarCategoryAxis() x_axis.append(partitions) chart.setAxisX(x_axis) series.attachAxis(x_axis) y_axis = qtch.QValueAxis() y_axis.setRange(0, 100) chart.setAxisY(y_axis) series.attachAxis(y_axis) # Add labels series.setLabelsVisible(True)
def __init__(self, parent): super().__init__() self.chart = qtch.QChart() self.setChart(self.chart) self.series = qtch.QBarSeries() self.series.setBarWidth(1) self.chart.addSeries(self.series) self.chart.legend().setVisible(False) self.chart.setContentsMargins(-10, -10, -10, -10) self.bar_set = qtch.QBarSet('') self.series.append(self.bar_set) self.bar_set.append(20) self.x_axis = qtch.QBarCategoryAxis() self.x_axis.setVisible(False) self.chart.setAxisX(self.x_axis) self.series.attachAxis(self.x_axis) self.y_axis = qtch.QValueAxis() self.y_axis.setRange(0, 100) self.y_axis.setTickCount(5) self.y_axis.setVisible(False) self.chart.setAxisY(self.y_axis) self.series.attachAxis(self.y_axis) self.series.setLabelsVisible(True) self.chart.layout().setContentsMargins(0, 0, 0, 0) self.chart.setTheme(qtch.QChart.ChartThemeDark) self.setMinimumSize(10, 50) self.setParent(parent)
def create_axis(log=False): if log: axis = QtChart.QLogValueAxis() axis.setMinorTickCount(-1) axis.setLabelFormat("%g") return axis return QtChart.QValueAxis()
def add_series(self,name,columns): self.series = QtChart.QLineSeries() self.series.setName(name) for i in range(self.model.rowCount()): t = self.model.index(i,0).data() date_fmt = "yyyy-MM-dd HH:mm:ss.zzz" x = QtCore.QDateTime().fromString(t,date_fmt).toSecsSinceEpoch() y = float(self.model.index(i,1).data()) if x > 0 and y > 0: self.series.append(x,y) self.chart.addSeries(self.series) self.axis_x = QtChart.QDateTimeAxis() self.axis_x.setTickCount(10) self.axis_x.setFormat("dd.MM (h:mm)") self.axis_x.setTitleText("Date") self.chart.addAxis(self.axis_x,QtCore.Qt.AlignBottom) self.series.attachAxis(self.axis_x) self.axis_y = QtChart.QValueAxis() self.axis_y.setTickCount(10) self.axis_y.setLabelFormat("%.2f") self.axis_y.setTitleText("Magnitude") self.chart.addAxis(self.axis_y,QtCore.Qt.AlignLeft) self.series.attachAxis(self.axis_y) self.model.color = "{}".format(self.series.pen().color().name())
def __init__(self, *args, **kwargs): super(BuyTimelineChartCont, self).__init__(*args, **kwargs) # chart self.chart = qtchart.QChart() # self.chart.legend().hide() self.chart.legend().setAlignment(qt.AlignRight) self.chart.legend().setLabelColor( style.myStyle.getQColor("TEXT_NORMAL")) self.chart.setBackgroundVisible(False) # date axis self.xAxis = qtchart.QDateTimeAxis() self.xAxis.setTickCount(10) self.xAxis.setFormat("dd MM yy") self.xAxis.setGridLineColor( style.myStyle.getQColor("BACKGROUND_BITDARK")) self.xAxis.setLinePenColor( style.myStyle.getQColor("BACKGROUND_BITDARK")) self.xAxis.setLabelsColor(style.myStyle.getQColor("TEXT_NORMAL")) self.chart.addAxis(self.xAxis, qt.AlignBottom) # balance axis self.yAxisBalance = qtchart.QValueAxis() self.yAxisBalance.setLabelFormat("%.2f") self.yAxisBalance.setGridLineColor( style.myStyle.getQColor("BACKGROUND_BITDARK")) self.yAxisBalance.setLinePenColor( style.myStyle.getQColor("BACKGROUND_BITDARK")) self.chart.addAxis(self.yAxisBalance, qt.AlignLeft) # price axis self.yAxisPrice = qtchart.QValueAxis() self.yAxisPrice.setLabelFormat("%.2f") self.yAxisPrice.setGridLineColor( style.myStyle.getQColor("BACKGROUND_BITDARK")) self.yAxisPrice.setLinePenColor( style.myStyle.getQColor("BACKGROUND_BITDARK")) self.chart.addAxis(self.yAxisPrice, qt.AlignRight) # chartview self.chartView = qtchart.QChartView(self.chart) self.chartView.setRenderHint(qtgui.QPainter.Antialiasing) self.layout = qtwidgets.QHBoxLayout(self) self.layout.addWidget(self.chartView) self.layout.setContentsMargins(0, 0, 0, 0)
def cla(self): self.ydata = [] self.xdata = [] self.max = 100 y_axis = qtch.QValueAxis() y_axis.setRange(0, self.max) self.chart.setAxisY(y_axis, self.series)