我正在生成一个带有散点和两个点的简单图像,我希望这些点完全可见,但
ax.autoscale_view()
似乎无法正常工作。
fig, ax = plt.subplots(figsize=(3, 3), dpi=150)
ax.scatter([0, 1], [0, 1], s=2000)
ax.autoscale_view()
我做错了什么吗?无论标记大小如何,如何才能使点完全可见
s
?
尝试在
ax.margins()
之前致电 ax.autoscale_view()
。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(3, 3), dpi=150)
ax.scatter([0, 1], [0, 1], s=2000)
ax.margins(x=0.25, y=0.25)
ax.autoscale_view()
我做错了什么吗?
我不那么薄——从 matplotlib 文档来看,它看起来像
autoscale_view()
仅根据绘制数据的限制进行缩放,而不是标记的大小:“使用数据限制自动缩放视图限制。”
无论标记大小如何,如何才能使点完全可见?
对于这个问题我没有好的解决方案。我会亲自手动调整
margins
参数,直到您喜欢它的外观。
标记尺寸
s
的单位是“点**2”,即屏幕上的距离。边距单位采用 x,y 坐标。为了使点完全可见,我认为您必须将边距设置为等于点半径的 x 和 y 坐标,这取决于图形的大小(以英寸为单位)以及图形的 x 和 y 限制。绘制的数据。我认为没有一种简单的方法可以进行这种转换,但如果您找到一种方法,请发帖并证明我错了。
margins
添加到您的绘图中。方法如下:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(3, 3), dpi=150)
ax.scatter([0, 1], [0, 1], s=1000)
ax.margins(0.15) # Adds 15% margin to both axes, you may need to adjust
ax.autoscale_view()
生成: