首页 > 解决方案 > 使用seaborn时,分类数据不适合文本从数据框中的图例

问题描述

我将 pandas 与 numpy、matplotlib、seaborne 和大量数据结合使用。我正在使用以下代码行绘制数据帧数据

####MINIMIZED CODE#####
importing numpy ect

df=pd.read_csv("csvfile")
df["movieTitle"]=pd.Categorical(df["movieTitle"] #done for "movieTitle" 
df['releaseData']=pd.to_datetime(df["releaseData"]

df2=df.sort_values('inflationGross', ascending=True) ###which was disneyData2 in original code
df2=df=df2.head(100)

plot=rando=sns.lmplot(x='releaseDate', y='inflationGross', data=df2, fit_reg=False, hue='movieTitle', legend=True)
rando.set_xticklabels(rotation=90)


########ACTUAL CODE#########

rando=sns.lmplot(x='releaseDate', y='inflationGross', data=disneyData2, fit_reg=False, hue='movieTitle', legend=True)```

情节本身很好,但是,一系列电影标题的分类数据并不完全符合传奇。有很多类别,我知道这不是一个好习惯,但我想找到一种方法来缩小文本大小,或者正确格式化图例。一切都已正确导入,并且我检查了代码中没有错误。我想继续只使用 seaborne 来分析这个数据而不是 matplotlib 问题的图片包含在下面。

图例问题示例

预先感谢您的任何帮助!

标签: pythonpandasmatplotlibseaborn

解决方案


粗略来说,可以删除自动创建的图例,取原图例的文本新建一个图例会设置为(我设置的字体大小为8)。由于没有显示数据,我修改了上面的代码官方网站用于说明目的。如果提供数据,我们将从更多人那里得到一些很好的答案。

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(color_codes=True)
tips = sns.load_dataset("tips")

g = sns.lmplot(x="total_bill", y="tip", hue='smoker', data=tips, legend=True, legend_out=True)

# Figure can hold multiple legends, so you can specify the first legend in the list
lg = g.fig.legends[0]
# Figure legend delete
g.fig.legends[0].remove()

# The list where the handle is kept
handles = lg.legendHandles
# Extracts only strings from the list of Text objects holding labels
labels = [t.get_text() for t in lg.texts]
print(handles)
print(labels)
g.fig.axes[0].legend(handles, labels, loc='center left', bbox_to_anchor=(1.0, 0.5), frameon=False, fontsize=8)

在此处输入图像描述


推荐阅读