1

matplotlibを利用してプロットレンダリングを行うPtQtを使用するプログラムがあります。画像を保存するために、凡例を使用してカスタム画像をレンダリングしたいと思います(さらに、組み込みのドラッグ可能な機能により、これは非常に魅力的です)。凡例を読んでいますが、カスタム画像をレンダリングできるQt用の独自のpaintEvent()メソッドを呼び出す凡例を作成する方法がわからないようです。

このアプローチがひどい場合は、これが私の目標です。プロットウィンドウ内に画像(Qtによってプログラム内にレンダリングされた)を配置するか、エクスポートされた図の上にこの画像を追加する方法を見つけたいと思います。

これは、出力が現在どのように見えるかのスクリーンショットです。

一番上にあるDAIP...シーケンスを取得し、それを図とともにエクスポートしてもらいたいと思います。

うまくいけば、誰かが以前に同様の問題に取り組んだことがあります。

4

1 に答える 1

1

画像を一時的なpngファイルに保存した後、matplotlibのOffsetImageおよびAnnotationBBox機能を使用して解決しました。何らかの理由で一時ファイルとして保持することはうまくいきませんでした。

簡単に:

#draw stuff onto QPixmap named pix
byteArray = QByteArray()
buffer = QBuffer(byteArray)
buffer.open(QIODevice.WriteOnly)
pix.save(buffer, 'PNG')
stringIO = StringIO(byteArray)
stringIO.seek(0)
tfile = tempfile.NamedTemporaryFile(suffix=".png", mode="wb", delete=False)
tfile.write(stringIO.buf)
tfile.close()
imagebox = mpl.offsetbox.OffsetImage(mpl._png.read_png(tfile.name),zoom=zlvl)
ab = mpl.offsetbox.AnnotationBbox(imagebox, [w/2,0],frameon=False)
ab.set_figure(self.canvas.figure)
ab.draggable()
self.subplot.axes.add_artist(ab)
os.remove(tfile.name)
于 2013-03-02T05:45:44.707 に答える