2010-09-15 28 views
8

Tôi đã tạo một ô hình ảnh với ax = imshow(). ax là một đối tượng AxesImage, nhưng tôi không thể tìm thấy hàm hoặc thuộc tính mà tôi cần để tùy chỉnh các nhãn đánh dấu. ordinary pyplots dường như có các phương thức set_ticksset_ticklabels, nhưng chúng dường như không có sẵn cho lớp AxesImage. Bất kỳ ý tưởng? Cảm ơn ~tùy chỉnh các dấu tích cho AxesImage?

Trả lời

8

Đối với những gì nó có giá trị, bạn đang hơi hiểu lầm gì imshow() lợi nhuận, và làm thế nào trục matplotlib được cấu trúc nói chung ...

Một đối tượng AxesImage chịu trách nhiệm về hình ảnh hiển thị (ví dụ colormaps, dữ liệu, vv), nhưng không phải là trục mà hình ảnh cư trú. Nó không có quyền kiểm soát đối với những thứ như bọ ve và nhãn đánh dấu.

Điều bạn muốn sử dụng là phiên bản trục hiện tại.

Bạn có thể truy cập điều này với gca(), nếu bạn đang sử dụng giao diện pylab hoặc matplotlib.pyplot.gca nếu bạn đang truy cập mọi thứ thông qua pyplot. Tuy nhiên, nếu bạn đang sử dụng một trong hai, có chức năng xticks() để nhận/đặt nhãn và vị trí xtick.

Ví dụ (sử dụng pylab):

import pylab 
pylab.figure() 
pylab.plot(range(10)) 
pylab.xticks([2,3,4], ['a','b','c']) 
pylab.show() 

Sử dụng một cách tiếp cận hướng đối tượng hơn (trên một lưu ý ngẫu nhiên, getter và setter matplotlib của được gây phiền nhiễu một cách nhanh chóng ...):

import matplotlib.pyplot as plt 
import numpy as np 
fig = plt.figure() 
ax = fig.add_subplot(1,1,1) # Or we could call plt.gca() later... 
im = ax.imshow(np.random.random((10,10))) 
ax.set_xticklabels(['a','b','c','d']) # Or we could use plt.xticks(...) 

Hy vọng rằng xóa mọi thứ lên một chút!

+0

Yup! Cảm ơn - Tôi đã dự kiến ​​nó sẽ được phần nào tương tự như MATLAB nơi hình ảnh() trả về các trục xử lý. Tên của đối tượng là một chút sai lầm quá ... Tôi đã nhận thấy rằng về getter/setter cũng! Trong MATLAB, tôi thường chuyển các đối số tới các bộ định tuyến trục bằng cách sử dụng ký hiệu 'cellarray {:}' giống như cú pháp '* args' và' ** kwargs' của python, nhưng trong trường hợp này nó không hoàn toàn đơn giản (mặc dù tôi chắc chắn có những cách xung quanh nó). – hatmatrix

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