【问题标题】:Binwidth for loop循环的binwidth
【发布时间】:2015-07-07 14:05:19
【问题描述】:

这行得通

for (i in 1:50) {
    plot(1,i)
}

这不起作用,为什么?它是 binwidth 我想要改变

d <- diamonds
for (i in 1:50 by=10) {
ggplot(aes(x = d$price), data = d) + geom_histogram(color = 'black', fill = '#099DD1', binwidth = i)
}

【问题讨论】:

  • 使用 ggplot 时,不要使用 $ 提取器指定美学。只需使用变量名称,因为范围已经在数据框环境中进行了评估。只是 ggplot(d, aes(x=price))+ geom_...

标签: r ggplot2


【解决方案1】:

在循环中(或通过source)进行绘图有一些意想不到的陷阱(Plotting during a loop in RStudioR: ggplot does not work if it is inside a for loop although it works outside of it),因此将其包含在print() 中会有所帮助。另请注意,您应该使用seq(from, to, by),如下所示:

d <- diamonds
for (i in seq(1,50,10)) {
  print(ggplot(aes(x = d$price), data = d) + geom_histogram(color = 'black', fill = '#099DD1', binwidth = i))
}

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • @limonte,您能具体说明一下吗?在我看来,上面提供的代码提供了所需的输出(据我理解的问题),并且很容易与原始代码进行比较以作为答案。
  • @limonte 我根据您的建议添加了一些解释,感谢您的澄清。然而,我认为代码本身对于阅读问题和答案的人来说是不言自明的,并花了两分钟时间来比较两者。只是我的观点。在 meta 上提出的问题似乎是一个有趣的问题,可以认为是最低限度的答案。
【解决方案2】:

它必须是一个循环吗?你可以试试这个:

 lapply(seq(1,50,10), function(x) ggplot(aes(x = d$price), data = d) + geom_histogram(color = 'black', fill = '#099DD1', binwidth = x))

【讨论】:

  • 不一定是循环。
猜你喜欢
  • 2018-06-10
  • 2020-08-28
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多