颜色在 pyqtgraph 中的工作方式与在 matplotlib 中的工作方式不同
Color is not working in pyqtgraph like the way it works in matplotlib
我有一个 2d numpy 数组如下
import numpy as np
agents = np.array([[ 1. , -71.8, 41.2],
[ 1. , -71.8, 41.3],
[ 0. , -71.8, 41.4],
[ 0. , -71.7, 41.4],
[ 0. , -71.6, 41.4]])
现在我想形象化它。在 matplotlib 中,我可以做这样的事情,因为我需要根据第一列的值使用不同的颜色。
import matplotlib.pyplot as plt
plt.scatter(agents [:,1],agents [:,2],c=agents [:,0])
但是我怎样才能在pyqtgraph中得到相同的结果呢?
我试过了
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 = agents[:,1]
y = agents[:,2]
z = agents[:,0]
s = pg.ScatterPlotItem(x, y,pen=pg.mkPen(z))
w1.addItem(s)
mw.show()
sys.exit(QtGui.QApplication.exec_())
得到这个异常
Exception: Not sure how to make a color from "(array([1., 0., 0., 0.]),)"
如果你想为每个点设置颜色,你必须传递一个颜色列表,在你的例子中,你传递的是一个列表,如果你想设置边框的颜色,你必须传递它 QPen或者 QBrush 如果你想设置填充颜色。
据我了解,您想要最新的:
s = pg.ScatterPlotItem(x, y, brush=[pg.mkBrush(v) for v in z])
# or
# s = pg.ScatterPlotItem(x, y, brush=list(map(pg.mkBrush, z)))
如果要设置边框颜色,请使用:
s = pg.ScatterPlotItem(x, y, pen=[pg.mkPen(v) for v in z])
# or
# s = pg.ScatterPlotItem(x, y, pen=list(map(pg.mkPen, z)))
我有一个 2d numpy 数组如下
import numpy as np
agents = np.array([[ 1. , -71.8, 41.2],
[ 1. , -71.8, 41.3],
[ 0. , -71.8, 41.4],
[ 0. , -71.7, 41.4],
[ 0. , -71.6, 41.4]])
现在我想形象化它。在 matplotlib 中,我可以做这样的事情,因为我需要根据第一列的值使用不同的颜色。
import matplotlib.pyplot as plt
plt.scatter(agents [:,1],agents [:,2],c=agents [:,0])
但是我怎样才能在pyqtgraph中得到相同的结果呢? 我试过了
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 = agents[:,1]
y = agents[:,2]
z = agents[:,0]
s = pg.ScatterPlotItem(x, y,pen=pg.mkPen(z))
w1.addItem(s)
mw.show()
sys.exit(QtGui.QApplication.exec_())
得到这个异常
Exception: Not sure how to make a color from "(array([1., 0., 0., 0.]),)"
如果你想为每个点设置颜色,你必须传递一个颜色列表,在你的例子中,你传递的是一个列表,如果你想设置边框的颜色,你必须传递它 QPen或者 QBrush 如果你想设置填充颜色。
据我了解,您想要最新的:
s = pg.ScatterPlotItem(x, y, brush=[pg.mkBrush(v) for v in z])
# or
# s = pg.ScatterPlotItem(x, y, brush=list(map(pg.mkBrush, z)))
如果要设置边框颜色,请使用:
s = pg.ScatterPlotItem(x, y, pen=[pg.mkPen(v) for v in z])
# or
# s = pg.ScatterPlotItem(x, y, pen=list(map(pg.mkPen, z)))