Python xticks trong các ô con


83

Nếu tôi vẽ một imshowâm mưu duy nhất, tôi có thể sử dụng

fig, ax = plt.subplots()
ax.imshow(data)
plt.xticks( [4, 14, 24],  [5, 15, 25] )

để thay thế các nhãn xtick của tôi.

Bây giờ, tôi đang vẽ 12 imshowô bằng cách sử dụng

f, axarr = plt.subplots(4, 3)
axarr[i, j].imshow(data)

Làm cách nào để tôi có thể thay đổi xticks của mình chỉ cho một trong những ô phụ này? Tôi chỉ có thể truy cập các trục của các ô con với axarr[i, j]. Làm cách nào để tôi có thể truy cập pltchỉ cho một ô con cụ thể?

Câu trả lời:


161

Có hai cách:

  1. Sử dụng các phương thức trục của đối tượng subplot (ví dụ ax.set_xticksax.set_xticklabels) hoặc
  2. Sử dụng plt.scađể thiết lập các trục hiện tại cho máy trạng thái pyplot (tức là pltgiao diện).

Như một ví dụ (điều này cũng minh họa việc sử dụng setpđể thay đổi các thuộc tính của tất cả các ô con):

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=3, ncols=4)

# Set the ticks and ticklabels for all axes
plt.setp(axes, xticks=[0.1, 0.5, 0.9], xticklabels=['a', 'b', 'c'],
        yticks=[1, 2, 3])

# Use the pyplot interface to change just one subplot...
plt.sca(axes[1, 1])
plt.xticks(range(3), ['A', 'Big', 'Cat'], color='red')

fig.tight_layout()
plt.show()

nhập mô tả hình ảnh ở đây


Phiên bản nào bạn đang sử dụng? Tôi nhận được AttributeError: Unknown property xtickslabelschoplt.setp(ax, xtickslabels=xticks)
Frederick Nord

19

Xem câu trả lời (khá) gần đây trên kho lưu trữ matplotlib, trong đó giải pháp sau được đề xuất:

  • Nếu bạn muốn đặt xticklabels:

    ax.set_xticks([1,4,5]) 
    ax.set_xticklabels([1,4,5], fontsize=12)
    
  • Nếu bạn chỉ muốn tăng kích thước phông chữ của xticklabels, bằng cách sử dụng các giá trị và vị trí mặc định (đó là điều mà cá nhân tôi thường cần và thấy rất hữu ích):

    ax.tick_params(axis="x", labelsize=12) 
    
  • Để làm tất cả cùng một lúc:

    plt.setp(ax.get_xticklabels(), fontsize=12, fontweight="bold", 
             horizontalalignment="left")`
    
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.