Używam python + matplotlib i mam dwa wykresy, które mają wspólną oś. Jeśli spróbujesz ustawić graph1.set_xticklabels([])
podczas współdzielenia osi, nie odniesie to skutku, ponieważ jest współdzielona. Czy istnieje sposób na współdzielenie osi ORAZ możliwość ukrycia osi x jednego wykresu?
python
matplotlib
pseudonim
źródło
źródło
plt.setp(ax2.get_yticklabels(), visible=True)
. Działał bez zarzutu.W wątku na matplotlib-users , możesz użyć
import matplotlib.pyplot as plt for ax in plt.gcf().axes: try: ax.label_outer() except: pass
źródło
try
potrzebny? Wydaje się dobrze bez tego.try
jest potrzebny, ponieważ nie wszystkie elementyplt.gcf().axes
listy sąsubplot
instancjami (zlabel_outer
metodą).Możesz użyć 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)
źródło
Możesz współużytkować osie podczas tworzenia wykresu podrzędnego
plt.subplots
jakofig, axes = plt.subplots(nrows=2, sharex=True)
Spowoduje to automatyczne wyłączenie znaczników dla osi wewnętrznych.
Kompletny przykład:
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()
źródło
label_outer()
wydaje się działać stackoverflow.com/a/12751192/125507Niestety nie wolno mi komentować odpowiedzi esmita (co jest moim zdaniem najlepszym rozwiązaniem, dzięki esmit), więc muszę napisać swój komentarz jako nową odpowiedź: jego rozwiązanie umieściłem w prostej funkcji
def remove_inner_ticklabels(fig): for ax in fig.axes: try: ax.label_outer() except: pass
do którego możesz zadzwonić wcześniej
plt.show()
. Z jakiegoś powodu odpowiedź Joe Kingtona nie zadziałała.źródło