指定晶格图面板的顺序

时间:2013-02-22 21:02:33

标签: r lattice

我已经看过关于这个主题的两个类似的问题,但是找不到我正在寻找的答案。 as.table函数改变了字母序列,从左下角开始到左上角开始,但对组内窗格的顺序没有任何影响。

数据(我的客户专有)具有字母和数字组合的电台标识。如果在绘制的所有网站的组中有一系列具有相同首字母的网站,则它们按第一个数字排序,而不是我们人类统计的方式。例如,SW-1,SW-10,SW-11,SW-2,SW-3。我希望它们按顺序SW-1,SW-2,SW-3,SW-10,SW-11。我使用的代码是:

 xyplot(as.d$quant ~ as.d$sampdate | as.d$site, ylim=range(as.d$quant), xlim=range(as.d$sampdate), 
 main='Arsenic By Time', ylab='Concentraion (mg/L)', xlab='Time')

我不知道如何附加结果图的.pdf,但如果有人告诉我如何执行此操作,则会这样做。

2 个答案:

答案 0 :(得分:6)

您需要在预期的序列中指定该因子变量的级别。你注意到默认是lexigraphic:

xyplot(as.d$quant ~ as.d$sampdate | factor( as.d$site, 
                                            levels=1:length(unique(as.d$site))) , 
         ylim=range(as.d$quant),   xlim=range(as.d$sampdate), 
         main='Arsenic By Time', ylab='Concentration (mg/L)', xlab='Time')

根据目前的问题,您可能需要:

require(gtools)
xyplot(as.d$quant ~ as.d$sampdate | factor( as.d$site, 
                                  levels=mixedsort( as.character(unique(as.d$site)) ) ) , 
         ylim=range(as.d$quant),   xlim=range(as.d$sampdate), 
         main='Arsenic By Time', ylab='Concentration (mg/L)', xlab='Time')

答案 1 :(得分:5)

这里有几点。

首先,在R中,因子级别的顺序被认为是数据的属性或属性,而不是图形/分析的属性。因此,在绘图或分析函数中通常没有用于指定顺序的参数,而是在数据对象本身中指定该顺序,然后所有绘图和分析都使用该顺序。

要更改顺序,您可以使用factor功能指定所需的顺序,也可以使用relevelreorder等功能更改因子级别的顺序。如果您希望级别与它们在数据中显示的顺序相同,则unique功能可以正常工作。对于混合了字符和数字的排序,gtools包中的mixedsort函数可能很有用。