예제 #1
0
    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)
예제 #3
0
    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()
예제 #5
0
    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()
예제 #6
0
    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()
예제 #7
0
    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()  # создаем ось У
예제 #8
0
    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
예제 #9
0
    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')
예제 #10
0
    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)
예제 #11
0
 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)
예제 #12
0
    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)
예제 #13
0
파일: main.py 프로젝트: nanoric/pyqtchart
    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
예제 #14
0
    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()
예제 #15
0
    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()
예제 #16
0
    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)
예제 #18
0
    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)
예제 #19
0
    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)
예제 #20
0
    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()
예제 #21
0
    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()
예제 #22
0
    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
예제 #23
0
	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)
예제 #24
0
    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
예제 #25
0
    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)
예제 #26
0
    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)
예제 #27
0
def create_axis(log=False):
    if log:
        axis = QtChart.QLogValueAxis()
        axis.setMinorTickCount(-1)
        axis.setLabelFormat("%g")
        return axis
    return QtChart.QValueAxis()
예제 #28
0
파일: chap05.py 프로젝트: Tanba28/PyQt-Test
    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())
예제 #29
0
    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)
예제 #30
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)