Tôi muốn làm cho ve bên phải và phía trên trục vô hình và không chắc chắn những gì dòng thứ ba nên là:Tắt phía trên/phải trục đánh dấu đánh dấu
import matplotlib.pyplot as plt
plt.plot(X,Y)
#plt.upper_right_axis_ticks_off()
Tôi muốn làm cho ve bên phải và phía trên trục vô hình và không chắc chắn những gì dòng thứ ba nên là:Tắt phía trên/phải trục đánh dấu đánh dấu
import matplotlib.pyplot as plt
plt.plot(X,Y)
#plt.upper_right_axis_ticks_off()
Như nhọn bởi @imsc, Bạn có thể tinh chỉnh khả năng hiển thị của các dấu tick bằng cách thiết lập vị trí của ve ở phía dưới và bên trái (nếu bạn không muốn chúng ở trên và bên phải) bằng cách sử dụng các phương thức ax.xaxis.set_ticks_position
và ax.yaxis.set_ticks_position
.
Nếu bạn cũng muốn đặt trục tự ẩn, hãy kiểm tra lớp matplotlib.spines. Bạn chỉ cần đặt màu của các gai thành none
bằng cách sử dụng phương thức ax.spines[spine].set_color
.
Nếu bạn có nhiều ô để hiển thị và không muốn tắt các trục/bọ theo cách thủ công mỗi lần, dưới đây là một chức năng sẽ thực hiện công việc cho bạn. Về cơ bản, bạn xác định cho mỗi trục màu bạn muốn (trong trường hợp này none
sẽ làm cho nó vô hình), và chức năng cũng sẽ "tắt" các dấu tích cho tất cả các trục vô hình. Tôi cũng đã thêm các tùy chọn để xác định các số linewidth
của các trục, cũng như fontsize
của các dấu tick và pad
giữa các dấu tick và dấu tick.
def customaxis(ax, c_left='k', c_bottom='k', c_right='none', c_top='none',
lw=3, size=12, pad=8):
for c_spine, spine in zip([c_left, c_bottom, c_right, c_top],
['left', 'bottom', 'right', 'top']):
if c_spine != 'none':
ax.spines[spine].set_color(c_spine)
ax.spines[spine].set_linewidth(lw)
else:
ax.spines[spine].set_color('none')
if (c_bottom == 'none') & (c_top == 'none'): # no bottom and no top
ax.xaxis.set_ticks_position('none')
elif (c_bottom != 'none') & (c_top != 'none'): # bottom and top
ax.tick_params(axis='x', direction='out', width=lw, length=7,
color=c_bottom, labelsize=size, pad=pad)
elif (c_bottom != 'none') & (c_top == 'none'): # bottom but not top
ax.xaxis.set_ticks_position('bottom')
ax.tick_params(axis='x', direction='out', width=lw, length=7,
color=c_bottom, labelsize=size, pad=pad)
elif (c_bottom == 'none') & (c_top != 'none'): # no bottom but top
ax.xaxis.set_ticks_position('top')
ax.tick_params(axis='x', direction='out', width=lw, length=7,
color=c_top, labelsize=size, pad=pad)
if (c_left == 'none') & (c_right == 'none'): # no left and no right
ax.yaxis.set_ticks_position('none')
elif (c_left != 'none') & (c_right != 'none'): # left and right
ax.tick_params(axis='y', direction='out', width=lw, length=7,
color=c_left, labelsize=size, pad=pad)
elif (c_left != 'none') & (c_right == 'none'): # left but not right
ax.yaxis.set_ticks_position('left')
ax.tick_params(axis='y', direction='out', width=lw, length=7,
color=c_left, labelsize=size, pad=pad)
elif (c_left == 'none') & (c_right != 'none'): # no left but right
ax.yaxis.set_ticks_position('right')
ax.tick_params(axis='y', direction='out', width=lw, length=7,
color=c_right, labelsize=size, pad=pad)
Dưới đây là một ví dụ về cách sử dụng nó:
import numpy as np
import matplotlib.pyplot as plt
fig, ([ax1, ax2], [ax3, ax4]) = plt.subplots(nrows=2, ncols=2)
for ax in [ax1, ax2, ax3, ax4]:
ax.plot(np.random.randn(10), lw=2)
customaxis(ax1) #default: no right and top axis
customaxis(ax2, c_left='none', c_bottom='none', c_right='k', c_top='k')
customaxis(ax3, c_left='none', c_bottom='k', c_right='k', c_top='none')
customaxis(ax4, c_left='k', c_bottom='none', c_right='none', c_top='k')
plt.show()
tick_params
nên làm điều đó.
Tôi không có matplotlib được cài đặt trên máy tính hiện tại của tôi, vì vậy tôi không thể kiểm tra nó, nhưng điều này sẽ làm việc:
import matplotlib.pyplot as plt
ax = plt.subplot(111)
plt.plot([0,1], [0,1])
ax.tick_params(labeltop='off', labelright='off')
plt.show()
Có một cái nhìn tại http://matplotlib.sourceforge.net/examples/pylab_examples/spine_placement_demo.html
import pylab as p
t = p.arange(0.0, 2.0, 0.01)
ax=p.subplot(111)
s = p.sin(2*p.pi*t)
ax.plot(t, s, color='r',linewidth=1.0)
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
p.show()
plt.tick_params(top='off', right='off', which='both')
tôi đã sử dụng trên mã với 'bật' thay vì 'tắt', để hiển thị dấu tick ở trên cùng và bên phải cùng với mặc định 'dưới cùng' và 'trái', trong matplotlib 2.0
Chào mừng bạn đến với SO! Vui lòng định dạng câu trả lời của bạn để dễ đọc hơn, hãy xem nút trợ giúp định dạng ở bên phải của hộp chỉnh sửa khi bạn chỉnh sửa câu trả lời. –