我有一个简单的因子图
import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2,
linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])
问题是X标签全都挤在一起,无法阅读。您如何旋转文本以使标签可读?我有一个简单的因子图
import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2,
linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])
问题是X标签全都挤在一起,无法阅读。您如何旋转文本以使标签可读?我对@mwaskorn的回答有些问题,具体来说是
g.set_xticklabels(rotation=30)
失败了,因为这也需要标签。比@Aman的答案容易一点的方法就是只需添加
plt.xticks(rotation=45)
g.set_xticklabels(g.get_xticklabels(), rotation=30)
,如果您想要抑制输出,请将其赋值给一个变量。 - joelostblomplt.xtics
时它对我有效。 - muammarplt.tight_layout()
,这样边距就会自动调整以适应文本。 - Ufosg.set_xticklabels(rotation=30)
可以在FacetGrid
上使用了。 - Ufos您可以使用Matplotlib Axes
对象上的tick_params
方法旋转刻度标签。以下是一个具体的示例:
ax.tick_params(axis='x', rotation=90)
for ax in g.axes.flatten(): \n for t in ax.get_xticklabels(): \n t.set(rotation=30)
(注意:此处为Python代码,翻译仅供参考) - soupaultha="right"
将x轴标签居中对齐到它们的刻度线上。例如:g.set_xticklabels([label1, label2], rotation=30, ha='right')
。 - Manavalan Gajapathyg.set_xticklabels(rotation=30)
更改为g.set_xticklabels(g.get_xticklabels(), rotation=30)
,才没有报错。感谢这个答案:https://dev59.com/npvga4cB1Zd3GeqPwBHB#39689464 - Max PowerFacetGrid
对象,有些则返回Matplotlib的Axes
对象。对于前者,不设置标签也可以工作,而对于后者,则不行。您可以通过查看文档来确定哪些是FacetGrid
对象:https://seaborn.pydata.org/api.html。例如,如果您使用`g = sns.catplot(),那么它将起作用,但是
sns.barplot()不会,因为它返回的是一个
Axes`对象。 - getup8这仍然是一个 matplotlib 对象。尝试一下:
# <your code here>
locs, labels = plt.xticks()
plt.setp(labels, rotation=45)
任何由FacetGrid支持的Seaborn图表(例如catplot)都无法正常工作。
g.set_xticklabels(rotation=30)
然而,由于facetgrid不支持barplot、countplot等,因此它们将正常工作。以下内容适用于它们。
g.set_xticklabels(g.get_xticklabels(), rotation=30)
此外,如果您有两个相互叠加的图形,请尝试在支持它的图形上使用set_xticklabels。
如果有人想知道如何为clustermap CorrGrids(seaborn示例的一部分)做此操作:
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(context="paper", font="monospace")
# Load the datset of correlations between cortical brain networks
df = sns.load_dataset("brain_networks", header=[0, 1, 2], index_col=0)
corrmat = df.corr()
# Set up the matplotlib figure
f, ax = plt.subplots(figsize=(12, 9))
# Draw the heatmap using seaborn
g=sns.clustermap(corrmat, vmax=.8, square=True)
rotation = 90
for i, ax in enumerate(g.fig.axes): ## getting all axes of the fig object
ax.set_xticklabels(ax.get_xticklabels(), rotation = rotation)
g.fig.show()
你也可以使用plt.setp
,方法如下:
import matplotlib.pyplot as plt
import seaborn as sns
plot=sns.barplot(data=df, x=" ", y=" ")
plt.setp(plot.get_xticklabels(), rotation=90)
将标签旋转90度。
对于一个 seaborn.heatmap
,你可以使用以下方式来旋转它们(基于@Aman的答案)
pandas_frame = pd.DataFrame(data, index=names, columns=names)
heatmap = seaborn.heatmap(pandas_frame)
loc, labels = plt.xticks()
heatmap.set_xticklabels(labels, rotation=45)
heatmap.set_yticklabels(labels[::-1], rotation=45) # reversed order for y
使用matplotlib.pyplot.xticks
可以实现此操作。
import matplotlib.pyplot as plt
plt.xticks(rotation = 'vertical')
# Or use degrees explicitly
degrees = 70 # Adjust according to one's preferences/needs
plt.xticks(rotation=degrees)
这里有一个例子,可以看到它是如何工作的。
如果标签名称很长,可能很难正确地获取它。我使用 catplot
的一个解决方案是:
import matplotlib.pyplot as plt
fig = plt.gcf()
fig.autofmt_xdate()
ax.tick_params(labelrotation=45)
。您可以将其应用于绘图中的轴图,而无需提供标签。如果您不想采用FacetGrid,这是一种替代方法。
import matplotlib.pylab as plt
.plt.xticks(rotation=45)
- rafaelvalleseaborn.objects
的 v0.12 版本,请参见如何使用 seaborn.objects 旋转 xticks。 - Trenton McKinney