#pandas #matplotlib #seaborn
#pandas #matplotlib #seaborn
Вопрос:
Вот код, который я использую. Это автономный код, который можно копировать и вставлять.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
### Load the Titanic dataset
titanic = sns.load_dataset("titanic")
### Divide the data by sex; male and female
male = titanic[titanic.sex == 'male']
female = titanic[titanic.sex == 'female']
### Now use groupby to group by fare//5 and then create a column with the survival rate for each group
male_chart= male.groupby([male.fare // 5]).survived.mean().reset_index()
female_chart= female.groupby([female.fare // 5]).survived.mean().reset_index()
#Plot male_chart
sns.set(style="whitegrid")
g = sns.factorplot(x='fare', y= 'survived', data=male_chart,
size=6, aspect =3 ,kind="bar", palette="muted")
g.despine(left=True)
g.set_ylabels("Survival Probability")
g.set_xlabels('Fare *5')
g.set_titles('Males') # set_title doesn't produce "Males" on the chart itself
#sns.plt.title('Males') #This code seems to work but not sure why it does.
#plot: female_chart
h= sns.factorplot(x='fare', y= 'survived', data=female_chart,
size=6, aspect =3 ,kind="bar", palette="muted")
h.despine(left=True)
h.set_ylabels("survival probability")
h.set_xlabels('fare *5')
h.set_titles('Females') #Once again doesn't work.
#sns.plt.title('Females') #but this works
plt.show()
Я не получаю никаких ошибок при запуске строки «set_titles», но она не выдает заголовок на самом графике.
Как я неправильно использую set_title? Спасибо за всю вашу помощь.
Комментарии:
1.
set_titles
используется, когда у вас есть огранкаcol
/row
, которую вы здесь не используете. Вы хотитеg.ax.set_title()
.2. Я делаю это, когда хочу сообщить полезную информацию, но у меня нет времени написать полный ответ.
Ответ №1:
set_titles («имя_заголовка») работает только в FacetGrid
тех случаях, когда у вас есть x столбцов или y строк.
(Например)
facet_grid = sns.relplot(data=data, x = "X", y = "Y", col = "Split"). set_titles("Works fine")
если ваш график не является таким, FacetGrid
и вы используете set_titles
, заголовок отображаться не будет
Например
не будет работать
plt.figure(figsize=(20,6))
sns.displot(df["GPA"],kind='kde').set_titles("Distribution of Data")
Работает нормально
plt.figure(figsize=(20,6)) # works fine
sns.displot(df["GPA"],kind='kde').set(title='Title of Plot')
https://seaborn.pydata.org/generated/seaborn .FacetGrid.set_titles.html
Комментарии:
1. Ваш первый пример —
set_title
, но вопрос оset_titles
(с «s»), который отличается. Как сказал мваском,set_titles
(с «s») возможно только в том случае, если вы обработали параметрыcol
илиrow
.2. @tdy спасибо, tdy это была опечатка, вы думаете, что мой ответ — это просто репутация, и мне нужно ее удалить или я должен ее сохранить,
3. Но теперь ваш отредактированный код не работает.
set_titles
не работает на обычном (не ограненном) графике безcol
илиrow
. Это именно то, о чем спрашивал Мундра.4. @tdy я вижу, что удалю свой ответ
5. @tdy мое предложение заключается в том, что он может использовать
set(title='Title of Plot')
, чтобы быть конкретным