Gab*_*iel 4 python polygon matplotlib
对于我到目前为止看到的所有类型的情节,matplotlib当没有xlim(), ylim()给出值时,它们会自动居中.例:
import matplotlib.pyplot as plt
A_pts = [(162.5, 137.5), (211.0, 158.3), (89.6, 133.7)]
ax = plt.subplot(111)
ax.scatter(*A_pts)
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是当我画一个 Polygon
ax = plt.subplot(111)
triangle = plt.Polygon(A_pts, fill=None, edgecolor='r')
ax.add_patch(triangle)
plt.show()
Run Code Online (Sandbox Code Playgroud)
绘图窗口显示[0, 1]两个轴的限制,这导致多边形不可见.我必须明确传递适当的限制,以便它将显示在绘图窗口中
ax.set_xlim(80, 250)
ax.set_ylim(120, 170)
Run Code Online (Sandbox Code Playgroud)
这是设计还是我错过了什么?
Imp*_*est 10
添加补丁时,会更改轴的数据限制,您可以通过打印查看ax.dataLim.bounds.但是,add_patch不会调用automlimits函数,而大多数其他绘图命令都会调用.
这意味着您可以手动设置绘图的限制(如问题中所示),也可以调用ax.autoscale_view()以调整限制.后者当然具有以下优点:您不需要在前缀之前确定限制并且保留边距.
import matplotlib.pyplot as plt
pts = [(162, 137), (211, 158), (89, 133)]
ax = plt.subplot(111)
triangle = plt.Polygon(pts, fill=None, edgecolor='r')
ax.add_patch(triangle)
print ax.dataLim.bounds
ax.autoscale_view()
plt.show()
Run Code Online (Sandbox Code Playgroud)
一旦你想添加一些自动缩放限制的其他情节,就不需要再打电话autoscale_view()了.
import matplotlib.pyplot as plt
pts = [(162, 137), (211, 158), (89, 133)]
ax = plt.subplot(111)
triangle = plt.Polygon(pts, fill=None, edgecolor='r')
ax.add_patch(triangle)
ax.plot([100,151,200,100], [124,135,128,124])
plt.show()
Run Code Online (Sandbox Code Playgroud)
这是设计的.类似的东西plot和scatter正在绘制的数据,创建艺术家和形成情节/调整轴的功能.add_patch另一方面,更多的是艺术家控制方法(它不创造艺术家,艺术家本身传入).正如Paul H的评论中所提到的,它处于公共API的最低级别,在该级别,假设您完全控制了该数字.
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |