pyqtgraph散点图项目设置

2024-05-03 04:47:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着把列表的论点通过挫折冲刺。在

from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import numpy as np

app = QtGui.QApplication([])
mw = QtGui.QMainWindow()
mw.resize(800,800)
view = pg.GraphicsLayoutWidget()  
mw.setCentralWidget(view)
mw.setWindowTitle('pyqtgraph example: ScatterPlot')
w1 = view.addPlot()
x = [1,2,3,4,5,6,7,8,9,10]
y = [10,8,6,4,2,20,18,16,14,12]
s1 = pg.ScatterPlotItem(x,y,size=10, pen=pg.mkPen(None), brush=pg.mkBrush(255, 255, 255, 120))
s1.setBrush(['r']*10, mask=None)
w1.addItem(s1)
mw.show()

运行此代码时,出现以下错误:

Traceback (most recent call last): File "", line 1, in

File "C:\Python34\lib\site-packages\pyqtgraph\graphicsItems\ScatterPlotItem.py", line 467, in setBrush self.updateSpots(dataset)

File "C:\Python34\lib\site-packages\pyqtgraph\graphicsItems\ScatterPlotItem.py", line 553, in updateSpots self.fragmentAtlas.getAtlas() # generate atlas so source widths are available.

File "C:\Python34\lib\site-packages\pyqtgraph\graphicsItems\ScatterPlotItem.py", line 193, in getAtlas self.buildAtlas()

File "C:\Python34\lib\site-packages\pyqtgraph\graphicsItems\ScatterPlotItem.py", line 143, in buildAtlas img = renderSymbol(key[0], key[1], sourceRect.pen, sourceRect.brush)

File "C:\Python34\lib\site-packages\pyqtgraph\graphicsItems\ScatterPlotItem.py", line 74, in renderSymbol drawSymbol(p, symbol, size, pen, brush)

File "C:\Python34\lib\site-packages\pyqtgraph\graphicsItems\ScatterPlotItem.py", line 49, in drawSymbol painter.setBrush(brush) TypeError: arguments did not match any overloaded call: QPainter.setBrush(QBrush): argument 1 has unexpected type 'str' QPainter.setBrush(Qt.BrushStyle): argument 1 has unexpected type 'str'

我怎样才能通过这个名单?我必须给不同的点指定不同的颜色。在


Tags: inpylibpackageslinesitefilemw
2条回答

如果要更改点的颜色,可以将列表传递给symbolBrush关键字。然后您的代码变成:

from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import numpy as np
import time
import sys

app = QtGui.QApplication([])
mw = QtGui.QMainWindow()
mw.resize(800,800)
view = pg.GraphicsLayoutWidget()
mw.setCentralWidget(view)
mw.setWindowTitle('pyqtgraph example: ScatterPlot')
w1 = view.addPlot()
x = [1,2,3,4,5,6,7,8,9,10]
y = [10,8,6,4,2,20,18,16,14,12]

brush_list = [pg.mkColor(c) for c in "rgbcmykwrg"]

p1 = w1.plot()
s1 = p1.setData(x=x, y=y, size=10, pen=pg.mkPen(None), brush='g', symbol='o', symbolBrush=brush_list, symbolPen='r')
mw.show()
sys.exit(QtGui.QApplication.exec_())

我需要做p1 = w1.plot()来让它工作,但是我对所有pyqtgraph对象不够流利,无法告诉您这是怎么回事。在

我必须将颜色字符串(或元组或其他任何东西)转换为pg.mkColor()对象才能使其工作(尽管文档说不需要)

请注意,brush关键字填充图形,直到指定了某个值(例如x轴),该值对于直线很有用,但对于点没有显示任何内容,如图中所示。在

symbolPen关键字可用于点的线条颜色。在

enter image description here

添加s.setBrush(QtGui.QBrush({your parameters})) 举例说明:

  • 在QtGui.QBrush()
  • 在QtGui.QBrush(Qt.画笔风格理学学士)
  • 在QtGui.QBrush(Q颜色,Qt.画笔风格样式=Qt.SolidPattern)在
  • 在QtGui.QBrush(Qt.GlobalColor公司颜色,Qt.画笔风格样式=Qt.SolidPattern)在
  • 在QtGui.QBrush(QColor color,QPixmap像素)
  • 在QtGui.QBrush(Qt.GlobalColor公司颜色,QPixmap pixmap)
  • 在QtGui.QBrush(QPixmap像素)
  • 在QtGui.QBrush(齐玛格图片)
  • 在QtGui.QBrush(Q梯度)
  • 在QtGui.QBrush(Q毛刷)
  • 在QtGui.QBrush(Q变型)

在您的代码中:

import sys
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import numpy as np

app = QtGui.QApplication(sys.argv)
mw = QtGui.QMainWindow()
mw.resize(800, 800)
view = pg.GraphicsLayoutWidget()
mw.setCentralWidget(view)
mw.setWindowTitle('pyqtgraph example: ScatterPlot')
w1 = view.addPlot()
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [10, 8, 6, 4, 2, 20, 18, 16, 14, 12]

# Create seed for the random
time = QtCore.QTime.currentTime()
QtCore.qsrand(time.msec())

for i in range(len(x)):
    s = pg.ScatterPlotItem([x[i]], [y[i]], size=10, pen=pg.mkPen(None))  # brush=pg.mkBrush(255, 255, 255, 120))
    s.setBrush(QtGui.QBrush(QtGui.QColor(QtCore.qrand() % 256, QtCore.qrand() % 256, QtCore.qrand() % 256)))
    w1.addItem(s)
mw.show()
sys.exit(QtGui.QApplication.exec_())

输出:

enter image description here

如果要为前5个点(x:1-5)设置红色,为另5个点(x:6-10)设置蓝色

^{2}$

enter image description here

相关问题 更多 >