【问题标题】:Matplotlib: Rotating a figure (patch) and applying colors in pythonMatplotlib:旋转图形(补丁)并在 python 中应用颜色
【发布时间】:2011-11-20 00:35:26
【问题描述】:

我想对补丁应用不同的转换,包括 旋转和改变填充颜色。 Hier 是受Matplotlib: rotating a patch启发的代码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib as mpl
from matplotlib.collections import PatchCollection

fig = plt.figure()
ax = fig.add_subplot(111)

myAngles=[0, -45, -90]
myColors=[30, 40, 50]
myPatches=[]

for color, angle in zip (myColors,myAngles):
    #r2 = patches.Rectangle((0,0), 20, 40, color=color,  alpha=0.50)
    r2 = patches.Rectangle((0,0), 20, 40)
    t2 = mpl.transforms.Affine2D().rotate_deg(angle) + ax.transData
    r2.set_transform(t2)
    #ax.add_patch(r2)
    myPatches.append(r2)

    plt.xlim(-20, 60)
    plt.ylim(-20, 60)

    plt.grid(True)


collection = PatchCollection(myPatches, cmap=mpl.cm.jet, alpha=0.5)
collection.set_array(np.array(myColors))
ax.add_collection(collection)

plt.show()

不幸的是,当我退出 for 循环时,转换就丢失了。如果我将补丁添加到循环内的斧头,那么一切都很好。但我必须在最后做,因为颜色是在循环中收集的,应该稍后应用。

任何形式的建议都非常感谢

干杯

阿梅尔

【问题讨论】:

  • 您是否想要循环中的xlimylimgrid 调用,或者这只是在SO 上发布时产生的缩进错误?这与您的具体问题无关,只是想我会提到它。
  • 确实是缩进错误!谢谢提及。

标签: python matplotlib transform patch


【解决方案1】:

我得到了这个数字:

当我从转换定义中注释掉 +ax.transData 时:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib as mpl
from matplotlib.collections import PatchCollection

fig = plt.figure()
ax = fig.add_subplot(111)

myAngles=[0, -45, -90]
myColors=[30, 40, 50]
myPatches=[]

for color, angle in zip (myColors,myAngles):
    #r2 = patches.Rectangle((0,0), 20, 40, color=color,  alpha=0.50)
    r2 = patches.Rectangle((0,0), 20, 40)
    t2 = mpl.transforms.Affine2D().rotate_deg(angle) #+ ax.transData
    r2.set_transform(t2)
    #ax.add_patch(r2)
    myPatches.append(r2)

    plt.xlim(-20, 60)
    plt.ylim(-20, 60)

    plt.grid(True)


collection = PatchCollection(myPatches, cmap=mpl.cm.jet, alpha=0.5)
collection.set_array(np.array(myColors))
ax.add_collection(collection)

fig.savefig('withoutTransData.png')
plt.show()

【讨论】:

  • 谢谢亚恩。这正是我想要的,我一直在看错误的地方。现在我对这个有时需要有时不需要的附加翻译 +ax.transData 有点困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 2020-10-07
  • 2017-06-27
  • 1970-01-01
相关资源
最近更新 更多