首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定网格绘图面板的顺序

指定网格绘图面板的顺序
EN

Stack Overflow用户
提问于 2013-02-23 05:02:33
回答 2查看 2.9K关注 0票数 2

我已经看过关于这个主题的两个类似的问题,但没有在这两个问题中找到我想要的答案。as.table函数改变字母顺序,从左下角开始到左上角开始,但对组中窗格的顺序不做任何操作。

数据(属于我的客户)具有由字母和数字组成的站点标识。当在所有要绘制的站点组中有一系列具有相同首字母的站点时,它们将按第一个数字排序,而不是按我们人类计数的方式排序。例如,SW-1、SW-10、SW-11、SW-2、SW-3。我要他们按SW-1,SW-2,SW-3,SW-10,SW-11的顺序。我使用的代码是:

代码语言:javascript
复制
 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的结果图,但会这样做,如果有人告诉我如何做到这一点。

EN

回答 2

Stack Overflow用户

发布于 2013-02-23 05:16:03

您需要按您期望的顺序指定该因子变量的级别。正如您注意到的,默认设置为lexigraphic:

代码语言:javascript
复制
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')

根据问题的当前状态,您可能需要:

代码语言:javascript
复制
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')
票数 6
EN

Stack Overflow用户

发布于 2013-02-23 05:27:10

这里有几个要点。

首先,在R中,像因子水平的顺序这样的东西被认为是数据的属性或属性,而不是图/分析的属性。由于在绘图或分析函数中通常没有用于指定顺序的参数,而是您在数据对象本身中指定该顺序,因此所有绘图与分析都使用该顺序。

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15033107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档