วิธีเพิ่มชื่อใน Seaborn Facet Plot


106

ฉันจะเพิ่มชื่อในพล็อต Seaborne นี้ได้อย่างไร ขอตั้งชื่อเรื่องว่า 'I AM A TITLE'

tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="sex", row="smoker", margin_titles=True)
g.map(sns.plt.scatter, "total_bill", "tip")

พล็อต

คำตอบ:


179

หลังจากบรรทัดเหล่านั้น:

plt.subplots_adjust(top=0.9)
g.fig.suptitle('THIS IS A TITLE, YOU BET') # can also get the figure from plt.gcf()

หากคุณเพิ่ม suptitle โดยไม่ปรับแกนชื่อด้านทะเลจะซ้อนทับกัน

(ด้วยข้อมูลที่แตกต่างกัน):

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


6
สิ่งนี้ใช้ได้ผลสำหรับฉัน แต่ฉันต้องใช้plt.subplots_adjust(top=0.8)แทนtop=0.9.
Mack

5
suptitleยังมีyพารามิเตอร์ สิ่งนี้ได้ผลสำหรับฉัน:g.fig.suptitle('foo', y=1.05)
trianta2

1
สิ่งนี้จะใช้ไม่ได้ถ้าคุณใช้col_wrapทั้งร่างและแผนย่อยแกนสุดท้าย (ล่างขวา) จะสืบทอดชื่อเรื่องเดียวกัน
xApple

ตรงไม่ทำงานได้ดีกับ col_wrap
Sören


25

ในโน้ตบุ๊ก ipython สิ่งนี้ใช้ได้กับฉัน!

sns.plt.title('YOUR TITLE HERE')

10
ฉันลองสิ่งนี้และมันเพิ่มชื่อที่รูปล่างขวาไม่ใช่ทั้งรูป
crypdick

13
การเข้าถึงpltผ่านsnsแพ็คเกจถูกเลิกใช้งานใน 0.8.1 สิ่งนี้ควรทำโดยใช้plt.title('YOUR TITLE HERE')
แม็ค

2
AttributeError: module 'seaborn' ไม่มีแอตทริบิวต์ 'plt'
xApple

AttributeError: module 'seaborn' ไม่มีแอตทริบิวต์ 'plt'
seralouk

3

สิ่งที่ได้ผลสำหรับฉันคือ:

sns.plt.suptitle('YOUR TITLE HERE')


2
AttributeError: module 'seaborn' ไม่มีแอตทริบิวต์ 'plt'
xApple

1
AttributeError: module 'seaborn' ไม่มีแอตทริบิวต์ 'plt'
seralouk

0

คำตอบที่ใช้sns.plt.title()และsns.plt.suptitle()ไม่ทำงานอีกต่อไป

คุณต้องใช้title()ฟังก์ชันของ matplotlib แทน:

import matplotlib.pyplot as plt
sns.FacetGrid(<whatever>)
plt.title("A title")

1
นี่ไม่ได้ตั้งชื่อเรื่องในตำแหน่งที่ถูกต้องสำหรับฉัน
Gabriel Romon

4
คุณลองplt.suptitle()หรือยัง?
crypdick

คำตอบของคุณไม่ได้ผลเนื่องจากมีผลต่อชื่อเรื่องของแผนย่อยแกนสุดท้าย (ล่างขวา) คำแนะนำของคุณplt.suptitle()ยังปรับเปลี่ยนแกนสุดท้ายเช่นเดียวกับตัวเลขหลัก
xApple

0
plt.suptitle("Title") 

หรือ

plt.title("Title")

สิ่งนี้ได้ผลสำหรับฉัน


โซลูชันที่สองใช้ไม่ได้ในขณะที่โซลูชันแรกสร้างการแทรกสลับกันของชื่อ suptitle และ facet ที่น่าเกลียด คุณจำเป็นต้องใช้โดยใช้พิกัด
MERose

0

ชื่อเรื่องจะไม่อยู่กึ่งกลางกับหัวเรื่องย่อย เพื่อกำหนดตำแหน่งของหัวเรื่องที่คุณสามารถใช้ได้ plt.suptitle("Title", x=center)

ในกรณีของฉันพล็อตย่อยของฉันอยู่ในตาราง 2x1 ดังนั้นฉันจึงสามารถใช้ bbox = g.axes[0,0].get_position()เพื่อค้นหากล่องขอบเขตแล้วcenter=0.5*(bbox.x1+bbox.x2)

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