13
我想在matplotlib旋轉矩形,但是當我申請改造,矩形不會再顯示:Matplotlib:旋轉補丁
rect = mpl.patches.Rectangle((0.0120,0),0.1,1000)
t = mpl.transforms.Affine2D().rotate_deg(45)
rect.set_transform(t)
這是一個已知的錯誤還是我犯了一個錯誤?
我想在matplotlib旋轉矩形,但是當我申請改造,矩形不會再顯示:Matplotlib:旋轉補丁
rect = mpl.patches.Rectangle((0.0120,0),0.1,1000)
t = mpl.transforms.Affine2D().rotate_deg(45)
rect.set_transform(t)
這是一個已知的錯誤還是我犯了一個錯誤?
顯然,補丁上的變換是用於處理縮放和邊界框的幾種變換的組合。將變換添加到現有的陰謀變換似乎給了更多像你期望的東西。雖然看起來仍然有一個抵消的工作。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib as mpl
fig = plt.figure()
ax = fig.add_subplot(111)
rect = patches.Rectangle((0.0120,0),0.1,1000)
t_start = ax.transData
t = mpl.transforms.Affine2D().rotate_deg(-45)
t_end = t_start + t
rect.set_transform(t_end)
print repr(t_start)
print repr(t_end)
ax.add_patch(rect)
plt.show()
中所提供的代碼的補丁使得它很難說這是怎麼回事,所以我做了一個清楚地表明,我從一個matplotlib例如制定:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib as mpl
fig = plt.figure()
ax = fig.add_subplot(111)
r1 = patches.Rectangle((0,0), 20, 40, color="blue", alpha=0.50)
r2 = patches.Rectangle((0,0), 20, 40, color="red", alpha=0.50)
t2 = mpl.transforms.Affine2D().rotate_deg(-45) + ax.transData
r2.set_transform(t2)
ax.add_patch(r1)
ax.add_patch(r2)
plt.xlim(-20, 60)
plt.ylim(-20, 60)
plt.grid(True)
plt.show()
你能否詳細說明這個問題,你究竟想在這裏做什麼? – steabert 2010-11-26 14:05:20
我想爲我的「ax」添加一個`Rectangle`(這個工作正常),但不是一個直的矩形,我希望它傾斜45度。最後的目標是代表軸上的「切割」。 – Mermoz 2010-11-26 14:11:01