matplotlib 在海运中旋转标签文本

nzk0hqpo  于 2023-06-06  发布在  其他
关注(0)|答案(9)|浏览(214)

我有一个简单的因子图

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

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

tvokkenx

tvokkenx1#

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

g.set_xticklabels(rotation=30)

失败,因为这也需要标签。比@Aman的回答简单一点的是

plt.xticks(rotation=45)
14ifxucb

14ifxucb2#

您可以使用matplotlib Axes对象上的tick_params方法旋转刻度标签。举一个具体的例子:

ax.tick_params(axis='x', rotation=90)
dw1jzc5e

dw1jzc5e3#

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

# <your code here>
locs, labels = plt.xticks()
plt.setp(labels, rotation=45)
deikduxw

deikduxw4#

facetgrid支持的任何海运图都不能与(例如catplot)

g.set_xticklabels(rotation=30)

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

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

另外,如果你有两个图形重叠在一起,请在支持它的图形上尝试set_xticklabels。

5tmbdcev

5tmbdcev5#

如果有人想知道如何为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()
alen0pnh

alen0pnh6#

您也可以使用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度。

gc0ot86w

gc0ot86w7#

对于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
gopyfrb3

gopyfrb38#

使用ax.tick_params(labelrotation=45)。您可以将其应用于图中的轴图形,而无需提供标签。这是使用FacetGrid的替代方法,如果这不是您想要的路径。

hkmswyz6

hkmswyz69#

如果标签有很长的名字,可能很难把它弄对。我使用catplot的一个很好的解决方案是:

import matplotlib.pyplot as plt
fig = plt.gcf()
fig.autofmt_xdate()

相关问题