2012-11-10 28 views
6

Tôi có hai ô. Trong ô đầu tiên các giá trị cho trục y lên tới 30000. Do đó, Matlab đang gắn nhãn trục thay vì '30000' bằng '3' và 'x10^4' TRÊN ô. Trong ô thứ hai, các giá trị y chỉ đạt đến 10000. Do thực tế là giá trị này quá thấp để tự động chuyển sang định dạng số mũ, nó thực sự in '10000'.Định dạng theo cấp số nhân của các dấu tick LIKE MATLAB tự động thực hiện

Tôi muốn biết nếu có cách nào để buộc định dạng theo hàm mũ. Điều này sẽ dẫn đến định dạng THEO D asI như Matlab tự động làm điều đó. Tôi yêu cầu điều này bởi vì tôi đã thấy các giải pháp mà bạn có thể làm cho Matlab in '10^3 'trực tiếp thành nhãn Y, nhưng tôi chỉ muốn hiển thị' 1 'là Nhãn và' x10^3 'bên trên cốt truyện.

Hình ảnh sau đây hiển thị cho các ô khác nhau được hợp nhất với nhau chỉ nhằm mục đích làm rõ câu hỏi của tôi. Trong nửa bên trái của hình ảnh, bạn có thể thấy Matlab làm gì nếu tôi đang sử dụng các giá trị> 10000. Và đó là loại định dạng tôi muốn nhận cho trục hiển thị trong nửa thứ hai nếu hình ảnh bên dưới.

Exponential formatting vs. regular

Trả lời

2

Nó không xuất hiện để có thể dựa trên một số đọc, thử nghiệm và tài sản kiểm tra:

http://www.mathworks.com/matlabcentral/answers/8005-axes-tick-in-scientific-notation

Nhãn ký hiệu khoa học sẽ chỉ tự động xuất hiện nếu bạn chưa thiết thuộc tính YTickLabel. Nếu bạn đặt YTickLabel, thì không có cách nào được ghi nhận (tài liệu) để MATLAB tự động đặt vào số mũ theo cùng một cách.

Để giải quyết vấn đề này, nếu bạn đặt YTickLabel và bạn muốn số mũ , bạn cần nhắn tin() số mũ mà bạn muốn nó xuất hiện.

Bạn có thể định dạng các nhãn trục y như vậy

set(gca,'YTickLabel',sprintf('%3.1f|',get(gca,'ytick')/max(get(gca,'ytick')) 

Sau đó, thêm x 10^4 với đánh dấu TeX ('$ \ times10^$ 4') để có được kết quả tương tự bằng tay.

+0

Tôi đã thêm văn bản theo cách thủ công nhưng tôi đã có 'bộ (gca, 'LooseInset', nhận được (gca, 'TightInset'));' sau đó đã cắt văn bản. Vì vậy, tôi đã phải điều chỉnh thủ công quá: một cái gì đó như 'set (gca, 'LooseInset', [.0449 .1297 .0170 .06]);' – damjeux

0

Đối với tôi, sử dụng cú pháp '$[TeX]$' không hoạt động (R2012a). Thay vào đó, texlabel() hoạt động.

Tuy nhiên, Matlab không cho phép TeX giải thích trong nhãn trục (ít nhất là không 2012a, và help cho 2013a dường như không hứa hẹn: ví dụ set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})

Đây là một cách giải quyết khác, nơi mà bạn thực hiện nhãn của riêng bạn . bằng text() chức năng

plot(1:9,exp(-[1:9])) 
set(gca,'XTick',[1 3 5 7 9],'XTicklabel',[]) 
arrayfun(@(x)text(x-.1,-.02,texlabel(sprintf('e^%d',x))),[1 5 9],'UniformOutput',false) 
1

tôi chỉ nhận được ở đây bởi vì tôi cần một cái gì đó tương tự, và tôi biết rằng bây giờ có một giải pháp cho điều đó có lẽ từ R2015 và mới hơn, bạn có thể thiết lập số mũ excatly với.:

ax.YAxis.Exponent = 3 % 3 is for example 

Hoặc, nếu bạn muốn những con số đầy đủ:

ax.YAxis.Exponent = 0 

Trong khi ax là handle trục.

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