Ẩn giá trị trục nhưng giữ nhãn đánh dấu trục trong matplotlib


101

Tôi có hình ảnh này:

plt.plot(sim_1['t'],sim_1['V'],'k')
plt.ylabel('V')
plt.xlabel('t')
plt.show()

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

Tôi muốn ẩn các con số; nếu tôi sử dụng:

plt.axis('off')

... Tôi nhận được hình ảnh này:

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

Nó cũng ẩn các nhãn Vt. Làm cách nào để giữ các nhãn trong khi ẩn các giá trị?

Câu trả lời:


136

Nếu bạn sử dụng phương pháp hướng đối tượng matplotlib , đây là một tác vụ đơn giản bằng cách sử dụng ax.set_xticklabels()ax.set_yticklabels():

import matplotlib.pyplot as plt

# Create Figure and Axes instances
fig,ax = plt.subplots(1)

# Make your plot, set your axes labels
ax.plot(sim_1['t'],sim_1['V'],'k')
ax.set_ylabel('V')
ax.set_xlabel('t')

# Turn off tick labels
ax.set_yticklabels([])
ax.set_xticklabels([])

plt.show()

11
Hoạt động tuyệt vời để loại bỏ nhãn đánh dấu, nhưng bạn vẫn nhận được điểm đánh dấu ...
Andrew Schreiber

85

Nếu không có subplots, bạn có thể loại bỏ các bọ ve như sau:

plt.xticks([])
plt.yticks([])

44

Điều này hoạt động tuyệt vời. Chỉ cần dán cái này trước plt.show():

plt.gca().axes.get_yaxis().set_visible(False)

Bùng nổ.


2
Cảm ơn, điều này làm việc tuyệt vời. Trong các trường hợp khác ve được bảo quản (vì hướng đánh dấu là theo mặc định)
user140259

Không giống như các câu trả lời như ax.set_xticklabels ([]), câu trả lời này hoạt động hoàn hảo cho trường hợp sau: một người sử dụng các ô con với tùy chọn sharex và chỉ muốn xóa dấu tích cho một trong các ô con.
Михаил Лисаков

Tuyệt quá! Và plt.gca (). Axis.get_xaxis (). Set_visible (False) cũng để loại bỏ các nhãn và dấu tích trục x.
fbparis 11/02/19

1
hoặc nếu bạn đã có đối tượng rìu,ax.xaxis.set_visible(False)
spinup

1
@filip Tôi rất vui vì nó đã giúp :)
MRT

3

Không chắc đây là cách tốt nhất, nhưng bạn chắc chắn có thể thay thế các nhãn đánh dấu như sau:

import matplotlib.pyplot as plt
x = range(10)
y = range(10)
plt.plot(x,y)
plt.xticks(x," ")
plt.show()

Trong Python 3.4, điều này tạo ra một biểu đồ đường đơn giản không có nhãn đánh dấu trên trục x. Một ví dụ đơn giản ở đây: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

Câu hỏi liên quan này cũng có một số gợi ý tốt hơn: Ẩn văn bản trục trong các biểu đồ matplotlib

Tôi mới làm quen với python. Số dặm của bạn có thể thay đổi trong các phiên bản trước đó. Có thể những người khác có thể giúp đỡ?


2

để xóa dấu tích hoàn toàn, hãy sử dụng:

ax.set_yticks([])
ax.set_xticks([])

nếu không ax.set_yticklabels([])ax.set_xticklabels([])sẽ giữ dấu tích.


Khi tôi thử ax.set_yticks([], []), tôi nhận được cảnh báo sau: "MatplotlibDeprecationWarning: Việc chuyển tham số phụ của set_xticks () positionally không được dùng nữa vì Matplotlib 3.2; tham số sẽ trở thành từ khóa chỉ hai bản phát hành nhỏ sau này." Giải pháp thay thế phù hợp là gì?
Rylan Schaeffer

@RylanSchaeffer, trong ví dụ của ax.set_yticks([], [])bạn, bạn đang chuyển 2 danh sách trống gây ra lỗi. Tại sao làm điều đó? Xem hướng dẫn sử dụng lệnh. Nếu đối số đầu tiên không nên được thông qua địa vị, vượt qua nó với từ khóa: ax.set_yticks(ticks=[]).
Ruslan S.

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.