2013-08-31 92 views
6

Tôi muốn chỉ hiển thị các phần liên quan trên trục x trong ô được tạo bởi matplotlib - sử dụng thư viện bao bọc pyplot.Cách đặt khoảng thời gian trục sử dụng Matplotlib hoặc các thư viện khác trong python

Câu hỏi: Làm thế nào cốt truyện có thể bị buộc phải cắt tại một số vị trí trục nhất định, bằng cách truyền các bộ khoảng thời gian, xác định khoảng thời gian cho trục x được vẽ. Lý tưởng nhất là việc cắt bỏ sẽ được biểu thị bằng một dấu hiệu hai mặt vẫy thẳng đứng chồng lên trục x.

Sử dụng xlim and axis là không sử dụng, vì nó chỉ cho phép đầu và cuối của trục x được thiết lập nhưng không có khoảng thời gian ở giữa:

enter image description here Cụ thể, đối âm mưu trên, x- vùng trục giữa 60 to 90 không được hiển thị và các dấu gạch ngang/cắt không liên tục phải được thêm vào.

import matplotlib.pyplot as pyplot 
x1, x2 = 0, 50 
y1, y2 = 0, 100 
pyplot.xlim([x1, x2]) 
#alternatively 
pyplot.axis([x1, x2, y1, y2]) 

Sử dụng matplotlib không phải là yêu cầu.

Cập nhật/Tóm tắt:

  • Viktor trỏ tới this source, sử dụng subplots -splitting và hai lô bắt chước một âm mưu phá vỡ dòng trong matplotlib/pyplot.

enter image description here

+1

@SaulloCastro Cảm ơn các con trỏ. Vì vậy, vấn đề này dường như chưa được giải quyết trong matplotlib sau đó? Tuy nhiên, câu hỏi này bao gồm các con trỏ tới các thư viện âm mưu tiện lợi khác. Tôi quên cập nhật tiêu đề chủ đề ... –

+0

Tôi đã tìm thấy các bit và phần về các thư viện vẽ sơ đồ khác ở đây ... [Thư viện vẽ sơ đồ tốt nhất cho Python là gì?] (Http://stackoverflow.com/questions/1120542/what -i-the-tốt nhất-âm mưu-thư viện-cho-python) –

Trả lời

-1

Nếu bạn sử dụng matplotlib.pyplot.xticks bạn có thể kiểm soát vị trí và giá trị của tất cả các nhãn hiệu.

This answer sẽ cho bạn biết cách thực hiện.

+0

Cảm ơn, nhưng cụ thể, tôi không muốn vùng trục x giữa 60-90 được hiển thị. Các tick không quan trọng hàng đầu ... –

+0

@LoSauer nếu bạn đặt các dấu sao cho 60-90 không có ở đó và loại bỏ dữ liệu trục y tương ứng (số 0 trong trường hợp của bạn), đây sẽ là kết quả. Tham khảo liên kết mà Saullo gửi cho bạn. Có vẻ như câu hỏi này đã được trả lời ở đó. –

+0

Các liên kết trỏ đến các giải pháp thay thế bằng cách sử dụng một phần tử 'subplots' với hai ô. Có lẽ có một thư viện wrapper trừu tượng cao hơn để matplotlib có sẵn trong Python hơn pyplot? –

4

Bạn có một ví dụ của trục bị hỏng trong các ví dụ matplotlib: Broken Axis

Trong ví dụ của bạn, subplots sẽ chỉ chia sẻ trục y thay vì trục x, và giới hạn sẽ được đặt trên trục x.

Ví dụ với một âm mưu thanh:

fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True) 
x = [1, 2, 3, 4, 5, 51, 52, 53, 54, 55] 
y = [4, 3, 4, 5, 4, 3, 4, 5, 6, 4] 
ax1.bar(x, y) 
ax2.bar(x, y) 

# Fix the axis 
ax1.spines['right'].set_visible(False) 
ax1.yaxis.tick_left() 
ax2.spines['left'].set_visible(False) 
ax2.yaxis.tick_right() 
ax2.tick_params(labelleft='off') 
ax1.set_xlim(1, 6) 
ax2.set_xlim(51, 56) 
+0

[Câu trả lời chỉ liên kết không tốt] (http://meta.stackexchange.com/a/8259/223330), vì các liên kết có thể bị hỏng. – hooy

+0

@nordev OK. Đã thêm một ví dụ. –