python – 为什么sns.lmplot和FacetGrid plt.scatter会从相同的数据创建不同的散点?

我对Python,pandas DataFrames和Seaborn都很陌生.当我试图更好地理解Seaborn时,特别是sns.lmplot,我发现两个由相同数据构成的数字之间存在差异,我认为它们应该看起来很相似,我想知道为什么会这样.

数据:我的数据是一个pandas DataFrame,有454行和19列.与此问题相关的数据包括4列,如下所示:

列:Av_density; PRED2; LOC;年;

变量类型:连续变量;连续变量;分类变量1 … 4;分类2012 … 2014

没有丢失的数据点.

我的目标是绘制一个2×2图形面板,分别描述每个LOC(=位置)的Av_density和pred2之间的关系,其中年份标记有不同的颜色.我打电话给seaborn:

import seaborn as sns
sns.set(style="whitegrid")
np.random.seed(sum(map(ord, "linear_categorical")))

(侧点:由于某种原因,调用“linear_quantitative”不起作用,即我得到一个“文件”stdin“,第2行
    sns.lmplot(“Av_density”,“pred2”,Data,col =“LOC”,hue =“YEAR”,col_wrap = 2);
 ^
SyntaxError:语法无效“)

图方法1,FacetGrid散点图:

sur=sns.FacetGrid(Data,col="LOC", col_wrap=2,hue="YEAR")
sur.map(plt.scatter, "Av_density", "pred2" );
plt.legend()

这样可以准确地分散数据.你可以在这里看到图片:https://drive.google.com/file/d/0B7h2wsx9mUBScEdUbGRlRk5PV1E/view?usp=sharing

图方法2,sns.lmplot:

sns.lmplot("Av_density", "pred2", Data, col="LOC", hue="YEAR", col_wrap=2);

这会使图形面板精确地除以LOC,其中年份的颜色不同,但数据点的分散看起来并不正确.相反,看起来lmplot已经对数据点进行了线性化,并且除了回归线之外还丢失了它应该绘制的原始散点.
你可以看到这里的数字:https://drive.google.com/file/d/0B7h2wsx9mUBSRkN5ZXhBeW9ob1E/view?usp=sharing

我的数据每年每个位置只产生三个点,我首先想知道这是否是lmplot数据点中出现“错误”的原因.最好我会用一条较短的线描述几年之间的趋势,而不是一个适当的回归,但我还没有想出代码.

但在解决这个问题之前,我真的想知道我能解决的问题是否有问题,或者这是lmplot试图处理我的数据的问题?

我们热烈欢迎任何帮助,评论和想法!

-TA-

PS.我正在使用Spyder 2.3.4运行Python 2.7.8

编辑:我通过添加第一种方法得到更短的“趋势线”:

sur.map(plt.plot,"Av_density", "pred2" );

仍然想知道什么是用lmplot搞乱这个数字.

解决方法:

问题可能只是添加的回归线弄乱了y轴,因此无法看到数据的可变性.
尝试根据原始绘图中的可变性重置y轴,看看它们是否显示相同的内容,例如

fig1 = sns.lmplot("Av_density", "pred2", Data, col="LOC", hue="YEAR", col_wrap=2);
fig1.set(ylim=(-0.03, 0.05))
plt.show(fig1)
上一篇:python – Seaborn OS X:seaborn.pairplot()ValueError:’transform’必须是’matplotlib.transform.Transform’的


下一篇:python – Seaborn BarPlot反转y轴并将x轴保持在图表区域的底部