วิธีเพิ่มหัวเรื่องในซีบอร์นบ็อกซ์พล็อต


118

ดูเหมือนจะเป็น Google ที่ใช้งานได้ดี แต่ไม่พบสิ่งที่ใช้งานได้ทางออนไลน์

ฉันได้ลองทั้งสองsns.boxplot('Day', 'Count', data= gg).title('lalala')และsns.boxplot('Day', 'Count', data= gg).suptitle('lalala'). ไม่มีผล ฉันคิดว่าอาจเป็นเพราะฉันทำงานกับ matplotlib ด้วย

คำตอบ:


191

Seaborn box plot ส่งคืนอินสแตนซ์แกน matplotlib ซึ่งแตกต่างจาก pyplot ตัวเองซึ่งมีวิธีการอาร์กิวเมนต์ที่สอดคล้องกันสำหรับแกนเป็นplt.title() ax.set_title()ดังนั้นคุณต้องโทร

sns.boxplot('Day', 'Count', data= gg).set_title('lalala')

ตัวอย่างที่สมบูรณ์จะเป็น:

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
sns.boxplot(x=tips["total_bill"]).set_title("LaLaLa")

plt.show()

Of course you could also use the returned axes instance to make it more readable:

ax = sns.boxplot('Day', 'Count', data= gg)
ax.set_title('lalala')
ax.set_ylabel('lololo')

4
its a shame set_title() and similar functions do not return self, that would be neat.
Laurens Koppenol

@LaurensKoppenol Matplotlib's credo is to return the object that the method creates or manipulates. This is a question of flexibility; and matplotlib explicitely wants to give users this flexibility. More high-level APIs that sit on top of matplotlib often decide to allow for chaining, but in those cases you have problems manipulating the underlying objects when wanting some non-standard behaviour.
ImportanceOfBeingErnest

when combining the various interfaces matplotlib has I definitely agree
Laurens Koppenol

1
AttributeError: 'FacetGrid' object has no attribute 'set_title'
Dumb ML


21

sns.boxplot() function returns Axes(matplotlib.axes.Axes) object. please refer the documentation you can add title using 'set' method as below:

sns.boxplot('Day', 'Count', data=gg).set(title='lalala')

you can also add other parameters like xlabel, ylabel to the set method.

sns.boxplot('Day', 'Count', data=gg).set(title='lalala', xlabel='its x_label', ylabel='its y_label')

There are some other methods as mentioned in the matplotlib.axes.Axes documentaion to add tile, legend and labels.


1
This is a nice solution since it also works for sns.relplot().
James Brusey

9

For a single boxplot:

import seaborn as sb
sb.boxplot(data=Array).set_title('Title')

For more boxplot in the same plot:

import seaborn as sb
sb.boxplot(data=ArrayofArray).set_title('Title')

e.g.

import seaborn as sb
myarray=[78.195229, 59.104538, 19.884109, 25.941648, 72.234825, 82.313911]
sb.boxplot(data=myarray).set_title('myTitle')

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