8

matlibplot 軸を使用して 2 つのサブプロットをプロットしたいと考えています。これら 2 つのサブプロットには同じ ylabel と ticks があるため、2 番目のサブプロットの目盛りとマークの両方をオフにしたいと考えています。以下は私の短いスクリプトです:

import matplotlib.pyplot as plt
ax1=plt.axes([0.1,0.1,0.4,0.8])
ax1.plot(X1,Y1)
ax2=plt.axes([0.5,0.1,0.4,0.8])
ax2.plot(X2,Y2)

ところで、X軸のマークが重なっていて、きちんとした解決策があるかどうかはわかりません。(解決策は、最後のマークを除く各サブプロットの最後のマークを非表示にすることですが、方法はわかりません)。ありがとう!

4

2 に答える 2

11

簡単なグーグルで答えを見つけました:

plt.setp(ax2.get_yticklabels(), visible=False)
ax2.yaxis.set_tick_params(size=0)
ax1.yaxis.tick_left()
于 2012-07-22T22:07:08.147 に答える
4

少し異なる解決策は、実際に ticklabels を '' に設定することです。以下は、すべての y-ticklabels と目盛りを取り除きます。

# This is from @pelson's answer
plt.setp(ax2.get_yticklabels(), visible=False)

# This actually hides the ticklines instead of setting their size to 0
# I can never get the size=0 setting to work, unsure why
plt.setp(ax2.get_yticklines(),visible=False)

# This hides the right side y-ticks on ax1, because I can never get tick_left() to work
# yticklines alternate sides, starting on the left and going from bottom to top
# thus, we must start with "1" for the index and select every other tickline
plt.setp(ax1.get_yticklines()[1::2],visible=False)

そして、x 軸の最後の目盛りとラベルを削除します。

# I used a for loop only because it's shorter
for ax in [ax1, ax2]:
    plt.setp(ax.get_xticklabels()[-1], visible=False)
    plt.setp(ax.get_xticklines()[-2:], visible=False)
于 2012-07-24T01:34:38.233 に答える