2012-02-23 57 views
35

Nếu tôi tạo ra một cốt truyện với matplotlib sử dụng đoạn mã sau:chồng chéo trục y nhãn đánh dấu và trục x nhãn đánh dấu trong matplotlib

import numpy as np 
from matplotlib import pyplot as plt 
xx = np.arange(0,5, .5) 
yy = np.random.random(len(xx)) 
plt.plot(xx,yy) 
plt.imshow() 

tôi nhận được một kết quả giống như hình ảnh đính kèm. Vấn đề là nhãn dán nhãn dưới cùng của nhãn chồng lên nhãn x-trái bên trái nhất. Điều này trông không chuyên nghiệp. Tôi đã tự hỏi nếu có một cách tự động để xóa các nhãn y-đánh dấu dưới cùng, vì vậy tôi không có vấn đề trùng lặp. Ít dòng mã hơn thì càng tốt. enter image description here

Trả lời

35

Trong mô-đun ticker có một lớp được gọi là MaxNLocator rằng có thể mất một kwarg prune.
Sử dụng mà bạn có thể loại bỏ các đánh dấu đầu tiên:

import matplotlib.pyplot as plt 
from matplotlib.ticker import MaxNLocator 
import numpy as np 
xx = np.arange(0,5, .5) 
yy = np.random.random(len(xx)) 
plt.plot(xx,yy) 
plt.gca().xaxis.set_major_locator(MaxNLocator(prune='lower')) 
plt.show() 

Kết quả:

enter image description here

2

Điều này được trả lời chi tiết here. Về cơ bản, bạn sử dụng một cái gì đó như thế này:

plt.xticks([list of tick locations], [list of tick lables]) 
6

Một cách rất thanh lịch để khắc phục vấn đề chồng chéo đang tăng lên miếng đệm của x và y-ve nhãn (tức là khoảng cách đến trục). Loại bỏ hầu hết các nhãn có thể không phải lúc nào cũng muốn. Theo ý kiến ​​của tôi, nói chung nó có vẻ tốt đẹp nếu các nhãn là một chút xa hơn so với trục hơn được đưa ra bởi cấu hình mặc định.

Các đệm có thể được thay đổi thông qua các tập tin matplotlibrc hoặc trong kịch bản cốt truyện của bạn bằng cách sử dụng các lệnh

import matplotlib as mpl 

mpl.rcParams['xtick.major.pad'] = 8 
mpl.rcParams['ytick.major.pad'] = 8 

Hầu hết thời gian, một đệm của 6 cũng là đủ.

16

Bạn có thể pad ve trên trục x:

ax.tick_params(axis='x', pad=15) 

Thay ax với plt.gca() nếu bạn đã không được lưu trữ biến ax cho con số hiện tại.

Bạn cũng có thể dán cả hai trục loại bỏ thông số axis.

+1

Dường như rất thanh lịch, nhưng không may dường như không hoạt động trên các ô 3D, chẳng hạn như 'plot_surface'. – metakermit

Các vấn đề liên quan