我必须绘制 3 条从传感器读取的数据更新曲线。当我只使用一条曲线时,更新图非常快,但是当我尝试绘制它们时,它们中的每一个都非常慢。我使用的代码如下:
#!/usr/bin/python
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import time
import numpy as np
app = QtGui.QApplication([])
win = pg.GraphicsWindow()
p1 = win.addPlot()
p2 = win.addPlot()
p3 = win.addPlot()
curve1 = p1.plot()
curve2 = p2.plot()
curve3 = p3.plot()
readData = [0.0, 0.0, 0.0]
y1=[0.0]
y2=[0.0]
y3=[0.0]
temp = [0.0]
start = time.time()
def update():
global curve1, curve2, curve3
t = time.time()-start # measure of time as x-coordinate
readData= readfun() #function that reads data from the …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 PyQt 应用程序中使用 PyQtGraph 创建绘图布局。
我需要一行有两个图,前两列宽,第二个单列宽。
阅读文档我认为这样的事情会起作用:
# Create the PyQtGraph Plot area
self.view = pg.GraphicsLayoutWidget()
self.w1 = self.view.addPlot(row=1, col=1, colspan=2, title = 'Data1')
self.w2 = self.view.addPlot(row=1, col=3, colspan=1, title = 'Data2')
Run Code Online (Sandbox Code Playgroud)
但在本例中,我得到两个绘图区域,每个区域占窗口宽度的 50%。
我究竟做错了什么?
此致,
本
我试图在 pyqtgraph 中使用 PlotCurveItem 创建的两条曲线之间进行填充。
phigh = self.p2.addItem(pg.PlotCurveItem(x, y, pen = 'k'))
plow = self.p2.addItem(pg.PlotCurveItem(x, yy, pen = 'k'))
pfill = pg.FillBetweenItem(phigh, plow, brush = br)
self.p2.addItem(pfill)
Run Code Online (Sandbox Code Playgroud)
曲线项目绘制正确,但没有填充。
我想将 PyQtGraph PlotWidget 实现到 PySide2 应用程序中。使用 PyQt5 一切正常。使用 PySide2 我得到底部显示的错误。我已经发现,有一些工作正在进行中,但似乎也有一些人设法使这项工作正常进行。但是,我还做不到。我使用的是 Pyqtgraph 0.10 而不是开发者分支。我要不要改变?我需要做什么?
from PySide2.QtWidgets import QApplication, QMainWindow, QGraphicsView, QVBoxLayout, QWidget
import sys
import pyqtgraph as pg
class WdgPlot(QWidget):
def __init__(self, parent=None):
super(WdgPlot, self).__init__(parent)
self.layout = QVBoxLayout(self)
self.pw = pg.PlotWidget(self)
self.pw.plot([1,2,3,4])
self.pw.show()
self.layout.addWidget(self.pw)
self.setLayout(self.layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = WdgPlot()
w.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
错误:
QtGui.QGraphicsView.__init__(self, parent)
TypeError: arguments did not match any overloaded call:
QGraphicsView(parent: QWidget = None): argument 1 has unexpected type 'WdgPlot'
QGraphicsView(QGraphicsScene, parent: QWidget …Run Code Online (Sandbox Code Playgroud) 我正在使用 pyqtgraph 绘制二维 numpy 数组。我想绘制没有 x 或 y 轴的数据。目前我的情节是这样的

但我不需要 x 或 y 轴。我一直希望有这样的事情
我绘图的方式是创建一个 PlotWidget 对象并将其添加到我的主窗口中。用户加载该数据后,我创建一个 ScatterPlotItem 和 PlotCurveItem 并将其添加到 PlotWidget 中。
我尝试阅读 PlotWidget、ScatterPlotItem 和 PlotCurveItem 的文档,但我确实无法找到隐藏轴的方法。
我想知道是否有一种方法可以只绘制没有 x,y 轴的点和线?
我在 Y 轴上看到这样的数字:
1.935
1.9325
1.93
1.9275
1.925
Run Code Online (Sandbox Code Playgroud)
但我需要看到这个:
1.9350
1.9325
1.9300
1.9275
1.9250
Run Code Online (Sandbox Code Playgroud)
如何设置 AxisItem 以始终显示小数点后固定的位数?
我正在尝试设置 pyqtgraph.PlotWidget 绘图区域的轴样式。我在用着:
font = QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
myPlotWidget.getAxis('left').setPen('b')
myPlotWidget.getAxis('left').setFont(font)
Run Code Online (Sandbox Code Playgroud)
我不明白为什么刻度标签颜色不是蓝色,而轴、网格和轴标签是蓝色。
我正在尝试获取数据的实时情节,因为它是由仪器使用pyqtgraph收集的.
数据收集由主进程处理,然后通过连接传递给绘制它的子进程.我只是想传递新数据并在新数据传递时更新.
我试图通过在Qt Timer更新循环中读取连接来实现这一点,但是在连续更新周期之间我很难传递图形数据(我想附加).我从下面的代码中省略了,但基本上我想加入连续的大量connData,我认为使用全局会工作,但由于某种原因我不能在这里实现.
编辑1:我与pyqtgraph示例相比的问题似乎是将数据传递给Qtimer的更新过程,我得到:
NameError:未定义全局名称"CurveData"
我试图这样做而不是使用pyqtgraph的多处理模块的原因是我不想每次都通过连接传递整个数据集(我认为这是必要的).谢谢!
编辑2:有没有pyqtgraph.multiprocess的文档?
(这是提供的原始代码)
import multiprocessing
import numpy as np
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
import pyqtgraph.opengl as gl
import sys
import os
def MakeGraph(conn):
win = pg.GraphicsWindow(title = "test")
win.resize(300,300)
p1 = win.addPlot(title = "test")
curve = p1.plot(pen = 'y')
timer = QtCore.QTimer()
def Update():
try:
ConnData = conn.recv()
ConnData = [float(i) for i in ConnData]
curve.setData(ConnData)
except EOFError:
print "Graph connection closed\n"
timer.stop()
QtGui.QApplication.quit()
timer.timeout.connect(Update)
timer.start(0)
if (sys.flags.interactive != …Run Code Online (Sandbox Code Playgroud) 我愿意获得2个随机数据,并使用PyQtGraph实时地将其绘制在同一控件中。我希望它们显示为红色和蓝色的点。但是,经过一段时间后,我的脚本无法正常工作。
我想知道要怎么做才能在同一图中获得两个数据。
我知道这是一个愚蠢的问题。我是Python和编码的初学者。
这是我的代码:
#-*- coding: utf-8 -*-
import random
import time
from collections import deque
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
import os
import spidev
win = pg.GraphicsWindow()
win.setWindowTitle('DOTS')
p1 = win.addPlot()
p1.setRange(yRange=[0,25])
p1.setRange(xRange=[0,25])
curve1 = p1.plot()
nsamples=300 #Number of lines for the data
dataRed= np.zeros((nsamples,2),float) #Matrix for the Red dots
dataBlue=np.zeros((nsamples,2),float) #Matrix for the Blue dots
def getData():
global dataRed, dataBlue
t0= random.uniform(1.6,20.5) #Acquiring Data
d0= random.uniform(1.6,20.5) #Acquiring Data
vec=(t0, d0) …Run Code Online (Sandbox Code Playgroud)