【问题标题】:Specifing order of lattice plot panels指定格点图面板的顺序
【发布时间】:2013-02-22 21:02:33
【问题描述】:

我已经查看了关于这个主题的两个类似问题,但在这两个问题中都没有找到我想要的答案。 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,但如果有人告诉我如何执行此操作,我会这样做。

【问题讨论】:

  • 通常最好发布PNG版本。当您打开编辑窗口时,{} 图标右侧会出现一个绿色方形图标,可让您从计算机上传文件。

标签: r lattice


【解决方案1】:

这里有几点。

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

要更改顺序,您可以使用factor 函数指定所需的顺序,或者您可以使用relevelreorder 等函数来更改因子水平的顺序。如果您希望级别与它们在数据中出现的顺序相同,那么unique 函数可以正常工作。对于混合使用字符和数字进行排序,gtools 包中的mixedsort 函数可能很有用。

【讨论】:

  • 谢谢你,格雷格。现在很明显,您指出我需要在将数据读入 R 之前对数据进行排序,或者使用其中一个可用函数。
  • 不完全是。对数据进行排序不会做任何事情。你需要重组你的因子变量。
【解决方案2】:

您需要按您期望的顺序指定该因子变量的水平。如您所见,默认值是字典式:

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')

【讨论】:

  • 谢谢你,大卫。现在我将重新排序文本文件中的站点并将它们重新读入 R。
  • 是的。并在 gtools 中使用 mixedsort 函数。我上面的答案是基于您之前在 Rhelp 上发布的内容,这与上面现在显示的内容不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
相关资源
最近更新 更多