2013-04-18 26 views
44

Tôi muốn nhận cả hai đường lưới ngang và dọc trên ô của mình nhưng chỉ các đường lưới ngang xuất hiện theo mặc định. Tôi đang sử dụng một pandas.DataFrame từ một truy vấn sql trong python để tạo ra một âm mưu đường với ngày tháng trên trục x. Tôi không chắc chắn tại sao họ không xuất hiện vào những ngày tháng và tôi đã cố gắng tìm kiếm câu trả lời cho điều này nhưng không thể tìm thấy câu trả lời.Bắt các đường lưới dọc để xuất hiện trong đường kẻ trong matplotlib

Tất cả những gì tôi đã sử dụng để vẽ đồ thị là mã đơn giản bên dưới.

data.plot() 
grid('on') 

dữ liệu là DataFrame chứa ngày và dữ liệu từ truy vấn sql.

Tôi cũng đã thử thêm mã bên dưới nhưng tôi vẫn nhận được cùng một đầu ra không có đường lưới dọc.

ax = plt.axes()   
ax.yaxis.grid() # horizontal lines 
ax.xaxis.grid() # vertical lines 

Mọi đề xuất?

enter image description here

+0

'data.plot (grid = "on") 'làm việc cho Tôi – Markus

Trả lời

52

Bạn có thể cần phải cung cấp boolean arg trong các cuộc gọi của mình, ví dụ: sử dụng ax.yaxis.grid(True) thay vì ax.yaxis.grid(). Ngoài ra, kể từ khi bạn đang sử dụng cả hai người trong số họ, bạn có thể kết hợp thành ax.grid, hoạt động trên cả hai, thay vì thực hiện nó một lần cho mỗi thứ nguyên.

ax = plt.gca() 
ax.grid(True) 

Điều đó sẽ phân loại bạn.

+0

Tôi đã thử nó nhưng vì một lý do nào đó nó vẫn trông giống như trước đây –

+1

Bạn đang làm điều này trong thông dịch viên tương tác? Hãy chắc chắn rằng bạn đang đặt lưới _before_ gọi 'plt.show()' – wim

+0

Tôi đang sử dụng iPython. Tôi đã thử thêm plt.show() nó sẽ không tạo ra sự khác biệt. –

23

plt.gca().xaxis.grid(True) được chứng minh là giải pháp cho tôi

+3

'myaxes.grid (mà = 'x')' không hoạt động đối với tôi với phiên bản matplotlib 1.4.2 ... không thể nhận được từ khóa 'nào' hoạt động. Tuy nhiên, 'myaxes.xaxis.grid (True)' đã thực hiện thủ thuật và là IMO tốt hơn về mặt khái niệm. Ồ, đừng quên phương pháp 'myaxes.set_axisbelow (True)' hữu ích để đặt lưới đằng sau dữ liệu. – travc

+0

Cuối cùng, đây là những gì tôi đã tìm kiếm ở khắp mọi nơi khác! – Wok

3

có lẽ điều này có thể giải quyết vấn đề: matplotlib, define size of a grid on a plot

ax.grid(True, which='both') 

Sự thật là lưới điện đang làm việc, nhưng chỉ có một v-lưới trong 00 : 00 và không có lưới ở những người khác. Tôi gặp cùng một vấn đề mà chỉ có một lưới vào ngày 1 tháng 11 trong nhiều ngày.

0

According to matplotlib documentation, Chữ ký của Axes lớp phương pháp grid() là như sau:

Axes.grid (b = Không, đó = 'lớn', trục = 'cả hai', ** kwargs)
Bật hoặc tắt các trục lưới.

which có thể là ‘major’ (mặc định), ‘minor’ hoặc ‘both’ để kiểm soát xem lưới đánh dấu chính, lưới đánh dấu nhỏ hoặc cả hai đều bị ảnh hưởng.

axis có thể là ‘cả hai’ (mặc định), ‘x’ hoặc ‘y’ để kiểm soát tập hợp các đường lưới nào được vẽ.

Vì vậy, để hiển thị đường lưới cho cả trục x và trục y, chúng ta có thể sử dụng đoạn mã sau:

ax = plt.gca() 
ax.grid(which='major', axis='both', linestyle='--') 
Các vấn đề liên quan