ลบ xticks ในพล็อต matplotlib หรือไม่?


290

ฉันมีพล็อต semilogx และฉันต้องการลบ xticks ฉันเหนื่อย:

plt.gca().set_xticks([])
plt.xticks([])
ax.set_xticks([])

ตารางหายไป (ok) แต่ยังมีเห็บขนาดเล็กอยู่ (ที่สถานที่ของเห็บหลัก) จะลบออกได้อย่างไร


วิธีแก้ปัญหาบางอย่างใช้ไม่ได้สำหรับฉัน แต่เพียงตัวอย่างเล็กน้อยที่นี่: ax.set_xticks([], [])และมันได้รับการแก้ไข ...
TravelTrader

คำตอบ:


464

tick_paramsวิธีการเป็นประโยชน์อย่างมากสำหรับสิ่งเช่นนี้ รหัสนี้จะปิดเครื่องหมายติ๊กหลักและรองและลบเลเบลออกจากแกน x

from matplotlib import pyplot as plt
plt.plot(range(10))
plt.tick_params(
    axis='x',          # changes apply to the x-axis
    which='both',      # both major and minor ticks are affected
    bottom=False,      # ticks along the bottom edge are off
    top=False,         # ticks along the top edge are off
    labelbottom=False) # labels along the bottom edge are off
plt.show()
plt.savefig('plot')
plt.clf()

ป้อนคำอธิบายรูปภาพที่นี่


87
ฉันขอขอบคุณที่สิ่งนี้ไม่เพียง แต่ตอบคำถาม แต่ยังให้แม่แบบสำหรับการเปิด / ปิดหลายสิ่ง สิ่งนี้ใช้กับทั้งแกน x และ y:plt.tick_params(axis='both', which='both', bottom='off', top='off', labelbottom='off', right='off', left='off', labelleft='off')
Steven C. Howell

2
เกิดอะไรขึ้นถ้ามันเป็นพล็อต 3 มิติ?
tommy.carstensen

38
นี่คือคำตอบที่ดี สำหรับผู้ที่มองหาเวอร์ชั่น oo axesมีtick_paramsวิธีการเดียวกัน
นักฟิสิกส์บ้า

22
ในรุ่นใหม่ของmatplotlibคุณควรเปลี่ยน'on'ด้วยTrueและมี'off' False
BallpointBen

1
ควรปรับปรุงคำตอบสำหรับส่วนต่อประสาน OOP และไวยากรณ์เวอร์ชันที่ใหม่กว่า
ifly6

142

ไม่ใช่สิ่งที่ OP ร้องขอมา แต่เป็นวิธีที่ง่ายในการปิดการใช้งานทุกบรรทัดแกนติ๊กและป้ายกำกับคือเรียกง่ายๆ:

plt.axis('off')

26
สิ่งที่ฉันต้องการขอบคุณ รุ่นที่มุ่งเน้นวัตถุจะอยู่ax.axis('off')ในอินสแตนซ์แกนที่มีอยู่
PlasmaBinturong

5
เป็นอย่างไรสำหรับ xaxis เท่านั้น?
qrtLs

82

หรือคุณสามารถผ่านตำแหน่งที่ว่างเปล่าและป้ายกำกับเป็น

# for matplotlib.pyplot
# ---------------------
plt.xticks([], [])
# for axis object
# ---------------
# from Anakhand May 5 at 13:08
# for major ticks
ax.set_xticks([])
# for minor ticks
ax.set_xticks([], minor=True)

8
หากคุณมีอินสแตนซ์แกนอยู่axแล้วคุณสามารถใช้:ax.set_xticks([], [])
Guilherme Salomé

@ GuilhermeSaloméสิ่งนี้ทำให้เกิดคำเตือน "การส่งผ่านพารามิเตอร์รองของ set_xticks () ถูกเลิกใช้เนื่องจากตำแหน่ง Matplotlib 3.2 พารามิเตอร์จะกลายเป็นคำหลักเพียงสองรุ่นย่อยในภายหลัง" ทางออกที่ถูกต้องคืออะไรตอนนี้
Rylan Schaeffer

2
@RylanSchaeffer ax.set_xticks([])สำหรับเห็บหลักax.set_xticks([], minor=True)สำหรับเห็บย่อย เทียบเท่ากับpyplotAre และplt.xticks([]) plt.xticks([], minor=True)
Anakhand


42

มีวิธีแก้ปัญหาที่ดีกว่าและเรียบง่ายกว่าที่ John Vinyard มอบให้ การใช้NullLocator:

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.show()
plt.savefig('plot')

หวังว่าจะช่วย


22
"ดีกว่า" เป็นที่ถกเถียงกัน แต่ +1 สำหรับทางเลือก
mechanical_meat

ความแตกต่างของวิธีการแก้ปัญหานี้ก็ใช้ได้กับฉันเช่นกันเมื่อเป้าหมายคือลบ xticks จากส่วน "ซูมเข้า" เท่านั้นในขณะที่ยังคงอยู่ในพล็อตหลัก ใช้axins.xaxis.set_major_locator(plt.NullLocator())ซึ่งaxinsเป็นวัตถุที่ส่งกลับโดยaxins = zoomed_inset_axes()(ฟังก์ชั่นนำเข้าจากmpl_toolkits.axes_grid1.inset_locator)
Dennis Soemers

28

ลองใช้วิธีนี้เพื่อลบป้ายกำกับ (แต่ไม่ใช่เห็บ):

import matplotlib.pyplot as plt

plt.setp( ax.get_xticklabels(), visible=False)

ตัวอย่าง


3
setpอยู่ในโหมด pylab ไม่สามารถใช้กับแต่ละแกนได้
dashesy

1
วิธีการเกี่ยวกับอินเตอร์เฟซที่มุ่งเน้นวัตถุ?
ifly6

นี่เป็นคำตอบเดียวที่ใช้ได้กับพล็อต 3 มิติสำหรับฉัน ขอบคุณสำหรับสิ่งนี้!
เบรนต์

13

ตัวอย่างนี้อาจช่วยในการลบ xticks เท่านั้น

from matplotlib import pyplot as plt    
plt.xticks([])

ตัวอย่างนี้อาจช่วยในการลบ xticks และ yticks ทั้งสอง

from matplotlib import pyplot as plt    
plt.xticks([]),plt.yticks([])

3
# remove all the ticks (both axes), and tick labels on the Y axis
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')

2
รุ่นเชิงวัตถุของนี้คือax.tick_params()
Marcelo Villa-Piñeros

1
นอกจากนี้การใช้offและonเลิกใช้แล้ว MatplotlibDeprecationWarning: Passing one of 'on', 'true', 'off', 'false' as a boolean is deprecated; use an actual boolean (True/False) instead.
Marcelo Villa-Piñeros

0

ผู้ที่คุณกำลังมองหาคำสั่งสั้น ๆ เพื่อปิดการทำเครื่องหมายและป้ายกำกับทั้งหมดควรใช้ได้ด้วย

plt.tick_params(top=False, bottom=False, left=False, right=False, labelleft=False, labelbottom=False)

ซึ่งอนุญาตให้พิมพ์boolพารามิเตอร์ตามลำดับตั้งแต่เวอร์ชัน matplotlib> = 2.1.1

สำหรับการตั้งค่าติ๊กที่กำหนดเองเอกสารนั้นมีประโยชน์:

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.tick_params.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.