如何检测轴是否有双轴写在它上面?例如,如果下面有ax
,我怎么才能发现ax2
存在?
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3])
ax2 = ax.twinx()
答案 0 :(得分:5)
我认为没有任何内置功能可以执行此操作,但您可以检查图中的任何其他轴是否与相关轴具有相同的边界框。这是一个快速的代码片段:
def has_twin(ax):
for other_ax in ax.figure.axes:
if other_ax is ax:
continue
if other_ax.bbox.bounds == ax.bbox.bounds:
return True
return False
# Usage:
fig, ax = plt.subplots()
print(has_twin(ax)) # False
ax2 = ax.twinx()
print(has_twin(ax)) # True
答案 1 :(得分:1)
您可以检查轴是否有共享轴。但这并不一定是双胞胎。但是,只要询问这个位置就足够了。
import matplotlib.pyplot as plt
fig, axes = plt.subplots(2,2)
ax5 = axes[0,1].twinx()
def has_twinx(ax):
s = ax.get_shared_x_axes().get_siblings(ax)
if len(s) > 1:
for ax1 in [ax1 for ax1 in s if ax1 is not ax]:
if ax1.bbox.bounds == ax.bbox.bounds:
return True
return False
print has_twinx(axes[0,1])
print has_twinx(axes[0,0])
答案 2 :(得分:0)
我想提出一个import re
str_arg = "\"Apartment at Chennai has 4 rooms with a swimming pool\" \"this apartment has 2/3 room with a coridor\""
room_found = re.findall(r"([0-9]+) rooms", str_arg)
print(room_found)
函数而不是get_twin -> Axes
,它具有更多的应用程序。您仍然可以通过检查has_twin -> bool
而不是if get_twin(...) is None
来检查斧头是否有双胞胎,因此不会丢失功能。
这基于 @ImportanceOfBeingErnest 的答案。 @jakevdp 的健壮性稍差一些,因为它没有明确检查兄弟姐妹。
if has_twin(...)