Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将pyqtgraph IsocurveItem实例与空打印轴(而不是ImageItem)对齐? 问题_Python_Pyqtgraph - Fatal编程技术网

Python 如何将pyqtgraph IsocurveItem实例与空打印轴(而不是ImageItem)对齐? 问题

Python 如何将pyqtgraph IsocurveItem实例与空打印轴(而不是ImageItem)对齐? 问题,python,pyqtgraph,Python,Pyqtgraph,的PyQTraph文档非常有用地建议,使用此类绘制的轮廓可以通过isocurve.setParentItem(image)与ImageItem实例对齐。但是,如果我不想显示图像数据,如何缩放轮廓输出以与给定X,Y数据的轴正确对齐 示例设置 使用此代码示例绘制: from pyqtgraph.Qt import QtGui, QtCore import numpy as np import pyqtgraph as pg import sys # Setup app = QtGui.QAppli

的PyQTraph文档非常有用地建议,使用此类绘制的轮廓可以通过
isocurve.setParentItem(image)
ImageItem
实例对齐。但是,如果我不想显示图像数据,如何缩放轮廓输出以与给定X,Y数据的轴正确对齐

示例设置 使用此代码示例绘制:

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

# Setup
app = QtGui.QApplication([])
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')

win = pg.PlotWidget()
layout = pg.GraphicsLayout()
win.setCentralItem(layout)
ax = pg.PlotItem()
layout.addItem(ax)

# Generate data
x = np.linspace(0, 6.28, 30)
y = x[:]
xx, yy = np.meshgrid(x, y)
z = np.sin(xx) + np.cos(yy)

# Add data
ax.setXRange(x.min(), x.max())
ax.setYRange(y.min(), y.max())
c = pg.IsocurveItem(data=z, level=0.5, pen='r')
# c.setParentItem(ax)  # This doesn't work
ax.addItem(c)

# Finish up
win.show()
sys.exit(app.exec_())
哪个输出:

或者,如果没有setXRange和setYRange部分,它看起来是这样的:

我想从第二个绘图被拉伸,以适应第一个轴。 所以,我想我只需要告诉IsocurveItem如何在给定X,Y,Z数据的情况下压缩和对齐它自己,而不仅仅是Z。我该怎么做呢

另外,等效的*matplotlib等高线调用是
等高线(x,y,z,levels=[0.5],colors='r')

*必须处理轴订单/行主订单与列主订单;没什么大不了的

失败的解决方案 不可见缩放图像项 添加一个
ImageItem
并缩放它,然后使其稍后不可见。通过将其父项设置为
ImageItem
,尝试使
isosurveitem
缩放:

img = pg.ImageItem(z, axisOrder='row-major')
img.scale((x.max() - x.min()) / img.width(), (y.max() - y.min()) / img.height())
ax.addItem(img)
c.setParentItem(img)

ImageItem
可以缩放,但是
isosurveitem
不会随车而来。

isosurveitem
通过
GraphicsObject
继承了
.scale()
.translate()
方法,它是其中的一个子类。因此,在定义
c
之后,只需将这些行添加到示例中:

c.translate(x.min(), y.min())
c.scale((x.max() - x.min()) / np.shape(z)[0], (y.max() - y.min()) / np.shape(z)[1])
为了使测试更加严格,我还更改了
x
,因此它不会从0开始:

x = np.linspace(10, 16.28, 30)
现在输出为

使用混合中的
ImageItem
可以更容易地可视化(也可以转换和缩放):