2010-09-23 41 views
211

Tôi cần trợ giúp thiết lập giới hạn của trục y trên matplotlib. Đây là mã mà tôi đã thử, không thành công.đặt giới hạn trục y trong matplotlib

import matplotlib.pyplot as plt 

plt.figure(1, figsize = (8.5,11)) 
plt.suptitle('plot title') 
ax = [] 
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1") 
ax.append(aPlot) 
plt.plot(paramValues,plotDataPrice[0], color = '#340B8C', 
    marker = 'o', ms = 5, mfc = '#EB1717') 
plt.xticks(paramValues) 
plt.ylabel('Average Price') 
plt.xlabel('Mark-up') 
plt.grid(True) 
plt.ylim((25,250)) 

Với dữ liệu tôi có cho âm mưu này, tôi nhận được giới hạn trục y là 20 và 200. Tuy nhiên, tôi muốn giới hạn 20 và 250.

+1

Làm việc với tôi với Matplotlib 1.0.0 nếu tôi thêm 'plt.show()' vào cuối để hiển thị cốt truyện. Bạn đang sử dụng phiên bản nào và phụ trợ nào? –

+9

Làm việc với tôi với Matplotlib 0.98.5.2, Python 2.6.2. Tôi đã thử cả 'plt.ylim ((25,250))' và 'plt.ylim (ymax = 250, ymin = 25)'. Tôi đang sử dụng phần phụ trợ 'Agg'. –

+1

Nhờ cả hai bạn. Nó có hoạt động với chương trình phụ trợ PDF cho bạn không. – Curious2learn

Trả lời

6

này nên làm việc. Mã của bạn làm việc cho tôi, giống như cho Tamás và Manoj Govindan. Có vẻ như bạn có thể thử cập nhật Matplotlib. Nếu bạn không thể cập nhật Matplotlib (ví dụ nếu bạn không có đủ quyền quản trị), có thể sử dụng một chương trình phụ trợ khác với matplotlib.use() có thể giúp bạn.

+0

Cảm ơn bạn đã kiểm tra! Tôi đang sử dụng chương trình phụ trợ pdf ('matplotlib.use ('PDF')'). Tôi đang sử dụng phiên bản đi kèm với phiên bản mới nhất của Phân phối Python Enthought. Bạn có thể vui lòng xem liệu nó có hoạt động với chương trình phụ trợ PDF hay không. Cảm ơn! – Curious2learn

+0

Nó hoạt động với phần phụ trợ PDF, trên Mac OS X. Bạn có chắc chắn rằng tệp đầu ra thực sự được cập nhật với 'plt.savefig()'? – EOL

+0

Tôi nhận ra vấn đề, tôi nghĩ vậy. Nếu tôi đưa ra 'aPlot =' trong dòng 'plt.subplot' nó cũng làm việc cho tôi. Dường như nếu người ta gán subplot cho một biến như thế, thì phải sử dụng một số phương pháp khác để đặt giới hạn trục. Điều đó có đúng không? – Curious2learn

89

Mã của bạn cũng hoạt động đối với tôi. Tuy nhiên, cách giải quyết khác có thể để có được trục của cốt truyện và sau đó chỉ thay đổi giá trị y:

x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))

316

Hãy thử điều này. Làm việc cho các subplots quá.

axes = plt.gca() 
axes.set_xlim([xmin,xmax]) 
axes.set_ylim([ymin,ymax]) 
+34

BTW, đây là từ viết tắt ngớ ngẩn có nghĩa là "** g ** và ** c ** urrent ** a ** xes". –

+1

Lenar, tuyệt vời. Tôi nghe thấy thuật ngữ này một cách tình cờ, nghe nói nó có nguồn gốc từ MATLAB. nhận xét hữu ích. – Arjee

4

Để thêm vào câu trả lời của @ Hima, nếu bạn muốn sửa đổi giới hạn x hoặc y hiện tại, bạn có thể sử dụng như sau.

import numpy as np # you probably alredy do this so no extra overhead 
fig, axes = plt.subplot() 
axes.plot(data[:,0], data[:,1]) 
xlim = axes.get_xlim() 
# example of how to zoomout by a factor of 0.1 
factor = 0.1 
new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor) 
axes.set_xlim(new_xlim) 

Tôi thấy điều này đặc biệt hữu ích khi tôi muốn thu nhỏ hoặc phóng to một chút so với cài đặt cốt truyện mặc định.

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