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

EDIT:それは透明(ない私の最初の選択が、今のところOK回避策)に黒の色を変更するGUIで可能ですので、あなたは、画像の下にグリッドを表示することができます。それは正常に動作しますが、私はコードでそれを行う方法を理解することはできません。どのようにしてImageViewのルックアップテーブルを変更して変更するには?

+0

カラースケールは、いくつかの色の間のグラデーションで構成されています。これらは、カラーバーの右側の三角で示されます。下の黒い三角形をクリックすると、その設定点の色を変更できるダイアログが表示されます。アルファ成分を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がどのようにイベントを通知していたかによって、コンテキストメニューになっているかもしれないし、パンとズームと関連があったかもしれない。 1つの軸がイベント優先度を取得し、他の軸がパンとズームを行うためにイベントが伝播することを防ぎました。私はpyqtgraphにプルリクエストを提出しました。それはもう問題ではないかもしれません。私は問題の原因を覚えていない。それはあなたのためにうまくいくかもしれません。私は、背景色を変更したり、小さな問題を引き起こしたビューボックスの背景色を変更するなど、他の多くのことをやっていました。

私は画像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