2017-10-05 14 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 요청을 제출 했으므로 더 이상 문제가되지 않을 수 있습니다. 문제의 원인을 기억하지 못합니다. 그것은 당신을 위해 잘 작동합니다. 배경색을 변경하고 뷰포트 배경색을 변경하여 작은 문제를 일으키는 것과 같은 많은 작업을 수행하고있었습니다.

참고로 나는 또한 이미지 z 값을 변경했습니다. 그래도 안된다.

imv.setZValue(1) 
+0

예! 그거야. 당신은이 문제에 대해 옳았습니다 (저는 pyqtgraph 0.10.0을 사용하고 있습니다). 그리드 아래의 이미지로는 수직으로 만 이동할 수 있습니다. 그게 아마도 그리드를 떠날만큼 짜증나게 할 것입니다. – benshepherd

+0

pyqtgraph에서 픽스를 만들고 풀 요청을 제출했습니다. 귀하의 사이트 패키지 python 폴더에 가서 pyqtgraph를 편집 할 수 있습니다. https://github.com/pyqtgraph/pyqtgraph/pull/565 정말 필요하다면 pyqtgraph의 제 버전을 사용할 수는 있지만, 항상 내 버전을 업데이트하지는 않으며 새로운 것들을 놓치기 쉽습니다. 'pip install git + http : // github.com/HashSplat/pyqtgraph @ mydevelop' 당신은 git이 설치되어 있어야합니다. – HashSplat

+0

고마워, 네 PR을 찾았 어. 그것은 단지 화장품 일 뿐이므로 지금 당장 떠날 것입니다. 그러나 나는 당신의 PR을 주시 할 것입니다. 그것이 받아 들여지면 나는 개발 브랜치를 사용할 것이다. – benshepherd