Matplotlib 在seaborn FactoryPlot中旋转标签文本

Matplotlib 在seaborn FactoryPlot中旋转标签文本,matplotlib,seaborn,Matplotlib,Seaborn,我有一个简单的factorplot import seaborn as sns g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2, linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2]) 问题是x标签都在一起运行,使它们无法读取。如何旋转文本以使标签可读?这仍然是matplotlib对象。试试这个: # <your co

我有一个简单的factorplot

import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2, 
    linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])


问题是x标签都在一起运行,使它们无法读取。如何旋转文本以使标签可读?

这仍然是matplotlib对象。试试这个:

# <your code here>
locs, labels = plt.xticks()
plt.setp(labels, rotation=45)
#
locs,labels=plt.xticks()
plt.setp(标签,旋转=45)

您可以使用matplotlib
轴上的
tick_params
方法旋转记号标签。

我对@mwaskorn的答案有一个问题,即

g.set_xticklabels(rotation=30)
失败,因为这也需要标签。比@Aman的答案更简单的一点是添加

plt.xticks(rotation=45)

如果有人想知道如何使用clustermap CorrGrids(给定seaborn示例的一部分):

对于a,可以使用(基于)旋转这些


您还可以按如下方式使用
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度。

FaceGrid支持的任何seaborn绘图都无法使用(例如catplot)

但是,条形图、计数图等将起作用,因为facetgrid不支持它们。下面将为他们工作

g.set_xticklabels(g.get_xticklabels(), rotation=30)

此外,如果有两个图形重叠在一起,请尝试在支持它的图形上设置标签。

如果标签名称较长,则可能很难正确设置。使用
catplot
对我很有效的解决方案是:

import matplotlib.pyplot as plt
fig = plt.gcf()
fig.autofmt_xdate()
你可以用它来做这件事


它是如何工作的。

使用
ax.tick_参数(labelrotation=45)
。您可以将其应用于绘图中的轴图形,而无需提供标签。如果您不希望使用FacetGrid,则这是使用FacetGrid的替代方法。

我收到一个错误:Indexer错误:索引太多。我的密码!g=sns.factorplot(“月日”、“数量建议”、“账户”、排序数据,col=“账户”,col\u wrap=3,sharex=False);g、 set_xticklabels(rotation=30)@soupault-这对我来说很有效,与你提出的类似,但可能更干净-用于g.axes.flatte()中的ax:ax.set_xticklabels(ax.get_xticklabels(),rotation=30)使用
ha=“right”
将x轴标签与其记号对齐。i、 例如,
g.set\u xticklabels([label1,label2],rotation=30,ha='right')
类似于上面的一些评论,这给了我一个错误,直到我将
g.set\u xticklabels(rotation=30)
更改为
g.set\u xticklabels(g.get\u xticklabels(),rotation=30)
多亏了这个答案:一些Seaborn绘图方法返回
FaceGrid
对象,一些返回Matplotlib
Axes
对象。对于前者,不设置标签会起作用,对于后者,则不会。通过查看文档,您可以看到哪些是
FaceGrid
对象:。例如,如果使用
g=sns.catplot()
这会起作用,但
sns.barplot()
不会起作用,因为它返回一个
Axes
对象。您还可以获得类似于这样的标签
g.set\u xticklabels(g.get\u xticklabels(),rotation=30)
。如果要抑制输出,请将其指定给一个变量。我认为这是正确的,当设置
plt.xtics
对我有效时。我尝试了小提琴绘图的上述所有选项,并且plt.xticks(rotation=n)是我唯一可以使用的选项。当我尝试此操作时,我的xticklabel不再与x刻度对齐。有人知道原因吗?
将matplotlib.pylab作为plt导入<代码>plt.xticks(旋转=‌​45)
The具有包装标签、设置图形大小和dpi的功能,无需使用matplotlib。这对我来说很有效,只是传入旋转参数没有任何作用,我还必须传入标签才能正常工作
g.set_xticklabels(rotation=30) 
g.set_xticklabels(g.get_xticklabels(), rotation=30)
import matplotlib.pyplot as plt
fig = plt.gcf()
fig.autofmt_xdate()
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)