2011-07-06 13 views
11

Tôi đang cố gắng tạo một âm mưu bề mặt trong matplotlib, nhưng tôi không thể làm cho định dạng của trục z trông tốt. Tôi muốn nó được ký hiệu khoa học, với tiền tố dọc theo trục và số mũ trên trục (giống như những gì bạn thường nhận được trong MATLAB). Tại thời điểm này tôi chỉ có thể nhận được các giá trị mà không có ký hiệu khoa học (với dấu phẩy và năm số 0 ở phía trước), hoặc tôi nhận được tiền tố nhưng không phải là số mũ ...định dạng trục z trong mplot3d

Hãy thử 1: (ký hiệu khoa học, chứ không phải mũ)

from matplotlib import ticker 

ax = fig.gca(projection='3d') 
ax.plot_surface(X, Y, Z, rstride=3, cstride=3) 
formatter = ticker.ScalarFormatter() 
formatter.set_scientific(True) 
formatter.set_powerlimits((-2,2)) 
ax.w_zaxis.set_major_formatter(formatter) 

Try 2: (cho các giá trị vào mẫu số thập phân, giống như đầu ra mặc định)

from matplotlib import ticker 

ax = fig.gca(projection='3d') 
ax.plot_surface(X, Y, Z, rstride=3, cstride=3) 
ax.ticklabel_format(axis="z", style="sci", scilimits=(0,0)) 

tôi đang làm gì sai ở đây?

+1

Phiên bản nào của matplotlib bạn đang sử dụng? Bạn có thể đang gặp lỗi không được sửa cho đến 1.0.1. http://old.nabble.com/Displaying-offsets-in-3d-plots-td30474615.html –

+1

@Stephen Terry: Tôi đang chạy 1.0.1. 'Python 2.7.1 | EPD 7.0-2 (32-bit) | (r271: 86832, ngày 3 tháng 12 năm 2010, 15:41:32) [GCC 4.0.1 (Apple Inc. xây dựng 5488)] trên darwin >>> nhập matplotlib >>> matplotlib .__ version__ '1.0.1' ' – Magnus

Trả lời

3

Khi bạn tạo của bạn "sử dụng Math Text" tham số ScalarFormatter, hãy thử:

from matplotlib import ticker 
niceMathTextForm = ticker.ScalarFormatter(useMathText=True) 
ax.w_zaxis.set_major_formatter(niceMathTextForm) 
+1

useOffset = false cũng tốt cho ký pháp khoa học – denfromufa

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