我需要自动为多个2D数据集生成散点图。
默认情况下,宽高比设置为ax.set_aspect(aspect='equal')
,大部分时间都有效,因为x,y
值在平方区域中或多或少地分布。
有时候,我会遇到一个数据集,当用equal
比率绘制时,看起来像这样:
即:给定轴太窄。对于上图,轴大约为1:8。
在这种情况下,ax.set_aspect(aspect='auto')
的宽高比会产生更好的情节:
现在,我不想将aspect='auto'
设置为所有数据集的默认设置,因为使用aspect='equal'
实际上是显示此类散点图的正确方法
我需要回归使用ax.set_aspect(aspect='auto')
仅用于上述等案例。
问题:如果使用aspect='equal'
,如果情节的宽高比太窄,有没有办法知道?就像获得绘制数据集的实际宽高比一样。
这样,基于这样的数字,我可以将宽高比调整为更健全的东西(即:auto
或其他宽高比),而不是'equal'
。
答案 0 :(得分:4)
这样的事应该做,
aspect = (max(x) - min(x)) / (max(y) - min(y))
答案 1 :(得分:2)
ax.get_data_ratio()
方法get_data_ratio
提供了数据界限的宽高比.¹
M = 4.0
ax.set_aspect('equal' if 1/M < ax.get_data_ratio() < M else 'auto')
例如:
max(y) == max(ax.get_ylim())
¹当轴在数据周围缩放时,这是@farenorth's answer的倒数,即ax.get_ybound
,因为它是使用ax.get_xbound
和{中的范围计算的{1}}。