2017-10-05 351 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