ซ่อนค่าแกน แต่เก็บป้ายกำกับแกนไว้ใน matplotlib


107

ฉันมีภาพนี้:

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

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

ฉันต้องการซ่อนตัวเลข ถ้าฉันใช้:

plt.axis('off')

... ฉันได้ภาพนี้:

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

นอกจากนี้ยังซ่อนฉลากและV tฉันจะเก็บป้ายกำกับในขณะที่ซ่อนค่าได้อย่างไร

คำตอบ:


148

หากคุณใช้วิธีเชิงวัตถุ matplotlib นี่เป็นงานง่ายๆโดยใช้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()

12
ใช้งานได้ดีในการลบฉลากเห็บ แต่คุณยังคงได้รับเครื่องหมายถูก ...
Andrew Schreiber


46

ใช้งานได้ดี วางสิ่งนี้ก่อนplt.show():

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

บูม


2
ขอบคุณมันใช้งานได้ดี ในกรณีอื่น ๆ เห็บจะถูกเก็บรักษาไว้ (เนื่องจากทิศทางการทำเครื่องหมายจะออกโดยค่าเริ่มต้น)
140259

ไม่เหมือนกับคำตอบเช่น ax.set_xticklabels ([]) อันนี้ใช้ได้ดีกับกรณีต่อไปนี้: อันหนึ่งใช้พล็อตย่อยที่มีตัวเลือก sharex และต้องการลบเห็บเฉพาะสำหรับพล็อตย่อยอย่างใดอย่างหนึ่ง
Mikhail Lisakov

เยี่ยมมาก! และ plt.gca (). axes.get_xaxis (). set_visible (False) เพื่อกำจัดเลเบลแกน x และขีด
fbparis

2
หรือถ้าคุณมีวัตถุขวานอยู่แล้วax.xaxis.set_visible(False)
spinup

1
@filip ดีใจจังที่ช่วย :)
MRT

2

ไม่แน่ใจว่านี่เป็นวิธีที่ดีที่สุด แต่คุณสามารถเปลี่ยนป้ายกำกับแบบนี้ได้:

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

ใน Python 3.4 จะสร้างพล็อตเส้นอย่างง่ายโดยไม่มีเครื่องหมายถูกบนแกน x ตัวอย่างง่ายๆอยู่ที่นี่: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

คำถามที่เกี่ยวข้องนี้ยังมีคำแนะนำที่ดีกว่า: การ ซ่อนข้อความแกนในพล็อต matplotlib

ฉันยังใหม่กับ python ไมล์สะสมของคุณอาจแตกต่างกันไปในรุ่นก่อนหน้านี้ บางทีคนอื่นสามารถช่วย?


2

ในการลบเครื่องหมายถูกทั้งหมดใช้:

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

มิฉะนั้นax.set_yticklabels([])และax.set_xticklabels([])จะทำให้เครื่องหมายถูกสำหรับ


เมื่อฉันลองax.set_yticks([], [])ฉันจะได้รับคำเตือนดังต่อไปนี้: "MatplotlibDeprecationWarning: การส่งผ่านพารามิเตอร์ย่อยของ set_xticks () ตามตำแหน่งจะถูกเลิกใช้งานเนื่องจาก Matplotlib 3.2 พารามิเตอร์จะกลายเป็นคีย์เวิร์ดเท่านั้นสองรีลีสรองในภายหลัง" ทางเลือกที่ถูกต้องคืออะไร?
Rylan Schaeffer

@RylanSchaeffer ในตัวอย่างของax.set_yticks([], [])คุณคุณกำลังส่งรายการว่าง 2 รายการซึ่งทำให้เกิดข้อผิดพลาด ทำไมต้องทำอย่างนั้น? ดูคู่มือคำสั่ง ถ้าอาร์กิวเมนต์แรกไม่ควรผ่าน positionally ax.set_yticks(ticks=[])ผ่านมันด้วยคำสำคัญ:
Poe Dator

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