在下面的截图中,我所有的x标签都相互重叠。
g = sns.factorplot(x='Age', y='PassengerId', hue='Survived', col='Sex', kind='strip', data=train);
我知道我可以通过调用g.set(xticks=[])删除所有标签,但是有没有办法只显示一些年龄标签,比如0,20,40,60,80?
g.set(xticks=[])
j91ykkif1#
我不知道为什么没有像y轴上那样合理的默认刻度和值。FormatStrFormatter示例是提供set_major_formatter所必需的。%d来自格式规范迷你语言。
FormatStrFormatter
set_major_formatter
%d
import seaborn as sns import matplotlib.pyplot as plt import matplotlib.ticker as ticker titanic = sns.load_dataset('titanic') sns.factorplot(x='age',y='fare',hue='survived',col='sex',data=titanic,kind='strip') ax = plt.gca() ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%d')) ax.xaxis.set_major_locator(ticker.MultipleLocator(base=20)) plt.show()
这也适用于catplot,它取代了factorplot
catplot
factorplot
titanic = sns.load_dataset('titanic') sns.catplot(x='age', y='fare', hue='survived', col='sex', data=titanic, kind='strip') ax = plt.gca() ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%d')) ax.xaxis.set_major_locator(ticker.MultipleLocator(base=20)) plt.show()
fslejnso2#
relplot
kind='scatter'
strings
datetime
numeric
import seaborn as sns titanic = sns.load_dataset('titanic') g = sns.relplot(x='age', y='fare', hue='survived', col='sex', data=titanic)
scatterplot
pandas.DataFrame.plot
ax.scatter
import seaborn as sns import matplotlib.pyplot as plt titanic = sns.load_dataset('titanic') fig, axes = plt.subplots(1, 2, figsize=(12, 5), sharex=True) axes = axes.flat for ax, (sex, data) in zip(axes, titanic.groupby('sex')[['survived', 'age', 'fare']]): ax.spines[['top', 'right']].set_visible(False) for (survived, sel), color in zip(data.groupby('survived'), ['tab:blue', 'tab:orange']): sel.plot(kind='scatter', x='age', y='fare', ec='w', s=30, color=color, title=sex.title(), label=survived, ax=ax) axes[0].get_legend().remove() axes[1].legend(title='Survived', bbox_to_anchor=(1, 0.5), loc='center left', frameon=False) plt.show()
2条答案
按热度按时间j91ykkif1#
我不知道为什么没有像y轴上那样合理的默认刻度和值。
FormatStrFormatter
示例是提供set_major_formatter
所必需的。%d
来自格式规范迷你语言。这也适用于
catplot
,它取代了factorplot
fslejnso2#
factorplot
用于主自变量为分类变量时,并已重命名为catplot
。factorplot
。catplot
。*主要问题是这应该是一个定量图,而不是分类图,这就是为什么每个类别都有一个xtick。
*正确图类型为
relplot
和kind='scatter'
。*分类图将始终显示所有xtick。
*定量图通常会格式化xtick的步长。
strings
,而不是datetime
或numeric
,则将显示所有xtick。relplot
和scatterplot
,则可以直接用pandas.DataFrame.plot
(或ax.scatter
)绘制,但这是一个更复杂的实现。