如何更改" matplotlib.collections.PolyCollection"的位置?
我创建了一个PolyCollection,然后我想更改位置。
%matplotlib notebook
import matplotlib.pyplot as plt
p=plt.figure()
area=plt.gca().fill_between((0,4), 1, 2, facecolor='red', alpha=0.25)
type(area)
该文件在这里: https://matplotlib.org/api/collections_api.html#matplotlib.collections.PolyCollection
我认为set_offsets()是改变位置的功能。但我找不到榜样。
我试过了
area.set_offsets([[1.1, 2.1]])
没有效果。
答案 0 :(得分:2)
fill_between创建的PolyCollection不使用任何偏移量。它只是数据坐标中的路径集合。有三种可能的方法来更新通过fill_between
创建的PolyCollection的“位置”:
如果您想在数据坐标中设置偏移量,您需要告诉它通过area.set_offset_position("data")
import numpy as np
import matplotlib.pyplot as plt
p=plt.figure()
area=plt.gca().fill_between((0,4), 1, 2, facecolor='red', alpha=0.25)
area.set_offsets(np.array([[1.1, 2.1]]))
area.set_offset_position("data")
plt.show()
如果您愿意,可以更改路径:
import numpy as np
import matplotlib.pyplot as plt
p=plt.figure()
area=plt.gca().fill_between((0,4), 1, 2, facecolor='red', alpha=0.25)
offset = np.array([1.1, 2.1])
area.get_paths()[0].vertices += offset
plt.gca().dataLim.update_from_data_xy(area.get_paths()[0].vertices)
plt.gca().autoscale()
plt.show()
import numpy as np
import matplotlib.transforms
import matplotlib.pyplot as plt
p=plt.figure()
area=plt.gca().fill_between((0,4), 1, 2, facecolor='red', alpha=0.25)
offset = np.array([1.1, 2.1])
transoffset = matplotlib.transforms.Affine2D().translate(*offset)
area.set_transform(transoffset + area.get_transform())
plt.show()