我对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)