2012-02-03 22 views
84

Tôi hiện đang sử dụng matplotlib.pyplot để tạo biểu đồ và muốn có các đường lưới chính vững chắc và màu đen và các đường nhỏ hoặc xám hoặc đứt.Làm thế nào để tạo các đường lưới lớn và nhỏ với các kiểu dáng khác nhau trong Python

Trong thuộc tính lưới, which=both/major/mine, sau đó màu sắc và kiểu dáng được xác định đơn giản bằng phong cách. Có cách nào để chỉ định phong cách riêng nhỏ không?

Mã thích hợp tôi có cho đến nay là

plt.plot(current, counts, 'rd', markersize=8) 
plt.yscale('log') 
plt.grid(b=True, which='both', color='0.65', linestyle='-') 

Trả lời

120

Trên thực tế, nó cũng đơn giản như việc thiết majorminor riêng :

In [9]: plot([23, 456, 676, 89, 906, 34, 2345]) 
Out[9]: [<matplotlib.lines.Line2D at 0x6112f90>] 

In [10]: yscale('log') 

In [11]: grid(b=True, which='major', color='b', linestyle='-') 

In [12]: grid(b=True, which='minor', color='r', linestyle='--') 

Bí quyết với lưới nhỏ là bạn phải có dấu tick nhỏ bật lên quá. Trong đoạn mã trên, điều này được thực hiện bởi yscale('log'), nhưng nó cũng có thể được thực hiện với plt.minorticks_on().

enter image description here

+5

Đôi khi bạn cũng cần gọi 'plt.minorticks_on()' cho lưới nhỏ thực sự xuất hiện. Xem http://stackoverflow.com/a/19940830/209246 – eqzx

+0

Từ [tài liệu] (https://matplotlib.org/devdocs/api/_as_gen/matplotlib.pyplot.grid.html): "Nếu kwarg được cung cấp, giả sử rằng bạn muốn một lưới và b do đó được đặt thành True. " - vì vậy bạn có thể bỏ qua 'b = True'. – miku

18

Một cách DIY đơn giản sẽ làm cho lưới điện cho mình:

import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111) 

ax.plot([1,2,3], [2,3,4], 'ro') 

for xmaj in ax.xaxis.get_majorticklocs(): 
    ax.axvline(x=xmaj, ls='-') 
for xmin in ax.xaxis.get_minorticklocs(): 
    ax.axvline(x=xmin, ls='--') 

for ymaj in ax.yaxis.get_majorticklocs(): 
    ax.axhline(y=ymaj, ls='-') 
for ymin in ax.yaxis.get_minorticklocs(): 
    ax.axhline(y=ymin, ls='--') 
plt.show() 
+0

này làm việc rất lớn đối với tôi. –

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