2016-08-08 7 views
1

プロットにPNG調整します。この図では、線、ポリゴン、円などがたくさんありますが、外側から.pngイメージを挿入したいと考えています。ここで挿入/私は<code>matplotlib</code>ライブラリを使用してpythonで私の論文のためのイラストをやっている[matplotlibの]

は、私がこれまで何をしようとしているのです:

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.patches import Polygon 

fig, ax = plt.subplots() 

plt.tick_params(axis='x', which='both', bottom='off', top='off', labelbottom='off') 
ax.axis('off') 

# drawing circle 
ax.add_patch(
       plt.Circle((0, 0), 0.5, color = 'black') 
      ) 
# drawing polygon 
ax.add_patch(
     Polygon(
      [[0,0], [20, 15], [20, 40]], 
      closed=True, fill=False, lw=1) 
     ) 
# importing image 
im = plt.imread("frame.png") 
# defining image position/size 
rect = 0.5, 0.4, 0.4, 0.4 # What should these values be? 
newax = fig.add_axes(rect, anchor='NE', zorder=1) 
newax.imshow(im) 
newax.axis('off') 

ax.set_aspect(1) 
ax.set_xlim(0, 60) 
ax.set_ylim(0, 40) 
plt.show() 

がそこで問題は、どのように私はrect = 0.5, 0.4, 0.4, 0.4の値を決定しますか?たとえば、.pngの左下を[20, 15]にして、その高さを25にします。

この

は、得られた画像です:

nonadjusted image

しかし、私はこのダミーフレームは、このように、私のポリゴンのポイントに調整することにしたい(Photoshopで調整し、この1の):

adjusted in photoshop

PS実験するためのlinkからframe.pngまでです。

答えて

1

同じ軸に線と画像をプロットできますか?そのため は、plt.imshow()

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.patches import Polygon 


im='d:/frame.png' 
img=plt.imread(im) 
fig, ax = plt.subplots() 

frame_height=25 
x_start=20 
y_start=15 
ax.imshow(img,extent=[x_start,x_start+frame_height,y_start,y_start+frame_height]) 

ax.add_patch(
     Polygon(
      [[0,0], [20, 15], [20, 40]], 
      closed=True, fill=False, lw=1) 
     ) 
ax.set_xlim(0, 60) 
ax.set_ylim(0, 40) 
plt.show() 
+0

おかげでextentキーを使用して、これは私のために働きました。しかし、その答えは簡単だとは思わなかった。とにかく、その質問があまりにも愚かであれば、私を許してください。 –

関連する問題