軸に双軸が書かれているかどうかを検出する方法はありますか?たとえば、ax
と入力した場合、ax2
が存在することをどのようにして知ることができますか?matplotlib軸に対して双軸が生成されているかどうかを検出する方法
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3])
ax2 = ax.twinx()
軸に双軸が書かれているかどうかを検出する方法はありますか?たとえば、ax
と入力した場合、ax2
が存在することをどのようにして知ることができますか?matplotlib軸に対して双軸が生成されているかどうかを検出する方法
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3])
ax2 = ax.twinx()
私はビルトインこれを実行するために、任意のはありだとは思わないが、あなたはおそらく、図中の他の軸は、当該軸と同一のバウンディングボックスを持っているかどうかをチェックすることができます。
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
軸に共有軸があるかどうかを確認することができます。しかし、必ずしも双子であるとは限りません。しかし、位置を照会するだけで十分です。
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])
これはすべきです! –
twins_of_ax = [a!= axとa.bbox.bounds == ax.bbox.boundsの場合、fig.axesのaに対してaはa] – theCake