小编sgu*_*ars的帖子

使用facet在ggplot中绘制连续和离散系列

我有数据随着时间的推移绘制四个不同的变量.我想使用facet_grid将它们组合在一个图中,其中每个变量都有自己的子图.以下代码类似于我的数据和我呈现它的方式:

require(ggplot2)
require(reshape2)

subm <- melt(economics, id='date', c('psavert','uempmed','unemploy'))
mcsm <- melt(data.frame(date=economics$date, q=quarters(economics$date)), id='date')
mcsm$value <- factor(mcsm$value)


ggplot(subm, aes(date, value, col=variable, group=1)) + geom_line() + 
       facet_grid(variable~., scale='free_y') + 
       geom_step(data=mcsm, aes(date, value)) + 
       scale_y_discrete(breaks=levels(mcsm$value))
Run Code Online (Sandbox Code Playgroud)

如果我遗漏了scale_y_discrete,R会抱怨我正在尝试将离散值与连续比例相结合.如果我包括scale_y_discreate,我的连续系列会错过它们的比例.

有没有任何巧妙的方法来解决这个问题,即.让所有秤都正确吗?我还看到图例按字母顺序排序,我可以更改它,以便图例的顺序与子图的顺序相同吗?

r ggplot2

5
推荐指数
1
解决办法
1万
查看次数

R:使用 for 循环和过滤 data.table

我正在尝试遍历一个列表,该列表用于对 data.table 进行子集化,并通过几行代码运行结果。在没有 for 循环的情况下,使用变量进行子集可以正常工作,但是当包含循环时,它无法按预期工作。我猜问题是由数据类型或范围引起的。

以下代码完美运行:

dt <- data.table(mpg)
list <- levels(dt$manufacturer)

dt[manufacturer==list[3]]
Run Code Online (Sandbox Code Playgroud)

如果我然后尝试使用 for 循环遍历列表:[更新代码 - 已解决]

for (var in list) {
  subs <- data.table(melt(dt[manufacturer==var, list(model, hwy, cty)], id.vars='model'))

  png(paste(var, 'png', sep='.'))
  print(ggplot(subs, aes(model, value, col=variable)) + geom_point())
  dev.off()
}
Run Code Online (Sandbox Code Playgroud)

我什么也得不到。

对我来说,代码部分看起来相同,应该同样工作。有没有人有什么建议可能导致我在第二次过滤中没有得到任何东西?任何帮助表示赞赏。

for-loop r data.table

1
推荐指数
1
解决办法
7700
查看次数

标签 统计

r ×2

data.table ×1

for-loop ×1

ggplot2 ×1