2017-10-05 300 views
0

我在pyqtgraph中绘制图像,我希望能够看到网格线。但网格线总是绘制在图像下方,因此图像的任何黑色区域都会遮挡网格。这是一个相当简单的例子:在pyqtgraph中显示网格线图像

import matplotlib # necessary for interactive plots in pyqtgraph 
import pyqtgraph as pg 
import numpy as np 
n = 100000 
sigma_y = 1e-3 
sigma_x = 1e-3 
x0 = np.matrix([np.random.normal(0, sigma_x, n), np.random.normal(0, sigma_y, n)]) 
bins = 30 
histogram, x_edges, y_edges = np.histogram2d(np.asarray(x0)[0], np.asarray(x0)[1], bins) 
x_range = x_edges[-1] - x_edges[0] 
y_range = y_edges[-1] - y_edges[0] 

imv = pg.ImageView(view=pg.PlotItem()) 
imv.show() 
imv.setPredefinedGradient('thermal') 
imv.getView().showGrid(True, True) 
imv.setImage(histogram, pos=(x_edges[0], y_edges[0]), scale=(x_range/bins, y_range/bins)) 

这是我看到的(缩小一点后)。您可以看到图像的黑色区域遮挡网格线。

pyqtgraph image screenshot

编辑:有可能在GUI中的黑色改变为透明(不是我的第一选择,但现在一个确定的解决方法),所以你可以看到下面的图像的网格。这工作正常,但我不知道如何在代码中做到这一点。我如何从ImageView中获取查找表来修改它?

+0

色阶由几种颜色之间的渐变组成。这些由颜色条右侧的三角形表示。如果您单击底部的黑色三角形,将会弹出一个对话框,您可以从该对话框中更改该设置点的颜色。将alpha分量设置为0以使下面的和比例透明。看到它适合你。我相信它也可以通过编程来完成。 – titusjan

+0

这实际上并不坏,并且比我预期的更好看。但我仍然希望在图像上方看到一条(微弱的)网格线。 – benshepherd

回答

2

这是我做的。

glw = pyqtgraph.GraphicsLayoutWidget() 
pw = glw.addPlot(0, 0) 

# Fix Axes ticks and grid 
for key in pw.axes: 
    ax = pw.getAxis(key) 

    # Set the grid opacity 
    if grid_is_visible: 
     ax.setGrid(grid_opacity * 255) 
    else: 
     ax.setGrid(False) 

    # Fix Z value making the grid on top of the image 
    ax.setZValue(1) 

这确实会导致一些其他问题,我想。它可能是上下文菜单,或者它与平移和缩放有关,因为Qt是如何发信号通知事件的。一个轴获得事件优先权并防止事件传播给其他轴进行平移和缩放。我向pyqtgraph提交了一个pull请求,所以这可能不再是问题。我不记得是什么造成了这个问题。它可能适合你。我做了很多其他的事情,比如改变背景颜色和改变导致一些小问题的viewbox背景颜色。

作为一个说明,我也改变了图像的z值。虽然你不应该。

imv.setZValue(1) 
+0

是的!这样可行。你是对的问题,虽然(我正在使用pyqtgraph 0.10.0)。在网格下方的图像中,我只能垂直平移。这可能令人讨厌,我会离开它的网格。 – benshepherd

+0

我在pyqtgraph中做了一个修复,并提交了一个pull请求。你可以去你的网站包python文件夹和编辑pyqtgraph。 https://github.com/pyqtgraph/pyqtgraph/pull/565或者你可以使用我的pyqtgraph版本,如果你真的需要它,但我并不总是更新我的版本,你会错过新的东西。 'pip install git + http:// github.com/HashSplat/pyqtgraph @ mydevelop'你必须安装git。 – HashSplat

+0

谢谢,是的,我发现你的公关。这只是一个美观的东西,所以我现在就离开它,但我会留意你的公关;如果它被接受,我会使用开发分支。 – benshepherd