Programing

matplotlib는 x 축을 공유하지만 둘 다에 대해 x 축 눈금 레이블을 표시하지 않습니다.

lottogame 2020. 10. 12. 07:05
반응형

matplotlib는 x 축을 공유하지만 둘 다에 대해 x 축 눈금 레이블을 표시하지 않습니다.


저는 python + matplotlib를 사용하고 있고 축을 공유하는 두 개의 플롯이 있습니다. graph1.set_xticklabels([])축을 공유하면서 설정하려고하면 공유되기 때문에 효과가 없습니다. 축을 공유하고 한 플롯의 x 축을 숨길 수있는 방법이 있습니까?


이것은 공유 축을 사용할 때 흔히 발생하는 문제입니다.

다행히도 간단한 수정이 있습니다. plt.setp(ax.get_xticklabels(), visible=False)레이블을 하나의 축에서만 보이지 않게 만드는 것입니다.

이것은 [label.set_visible(False) for label in ax.get_xticklabels()]가치가 무엇이든간에. setp개별 객체뿐만 아니라 matplotlib 객체의 반복 가능한 객체에서 자동으로 작동합니다.

예로서:

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.plot(range(10), 'b-')

ax2 = fig.add_subplot(2,1,2, sharex=ax1)
ax2.plot(range(10), 'r-')

plt.setp(ax1.get_xticklabels(), visible=False)

plt.show()

대체 텍스트


matplotlib-users 의 스레드 당 다음을 사용할 수 있습니다.

import matplotlib.pyplot as plt
for ax in plt.gcf().axes:
    try:
        ax.label_outer()
    except:
        pass

Axes.tick_params () 사용할 수 있습니다 .

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212, sharex=ax1)

ax1.tick_params(labelbottom=False)

서브 플롯을 생성하는 동안 다음과 plt.subplots같이 축을 공유 할 수 있습니다.

fig, axes = plt.subplots(nrows=2, sharex=True)

그러면 내부 축에 대한 눈금 레이블이 자동으로 꺼집니다.

완전한 예 :

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=2, sharex=True)

axes[0].plot([1,2,3])
axes[1].plot([3,2,1])

plt.show()

여기에 이미지 설명 입력


불행히도 esmit의 답변 (제 생각에 가장 좋은 해결책 인 esmit 감사합니다)에 대해 언급 할 수 없으므로 새로운 답변으로 의견을 작성해야합니다. 그의 솔루션을 간단한 함수에 넣었습니다.

def remove_inner_ticklabels(fig):
    for ax in fig.axes:
        try:
            ax.label_outer()
        except:
            pass

전에 전화 할 수 있습니다 plt.show(). Joe Kington의 답변은 어떤 이유로 저에게 효과가 없었습니다.

참고 URL : https://stackoverflow.com/questions/4209467/matplotlib-share-x-axis-but-dont-show-x-axis-tick-labels-for-both-just-one

반응형