我想在ggplot中创建动态ylim值,以便ylim参数引用dplyr通过管道提供的值。为了说明该问题,请参阅一个我想更改为(当前不工作的通用)代码的有效(非通用)代码。

require(dplyr)
require(scales)
require(ggplot2)

x <- data.frame(name = c("A","B","C"),
                value = c(2,4,6))

工作的非通用代码:
arrange(x[1:2, ], value) %>%
  ggplot(data=., aes(x=factor(name), y=value)) +
  geom_bar(stat="identity") +
  scale_y_continuous(labels=comma,
                     limits=c(0,max(arrange(x[1:2, ], value)$value) * 1.1))

无效的通用代码(调用未找到值):
arrange(x[1:2, ], value) %>%
  ggplot(data=., aes(x=factor(name), y=value)) +
  geom_bar(stat="identity") +
  scale_y_continuous(labels=comma,
                     limits=c(0,max(value) * 1.1))

因此,问题是是否有任何方法通常可以设置极限,即排列后的零件将始终是相同的(我需要制作很多相同的图形,它们具有不同的x,即不同的极限)。
谢谢!

最佳答案

您可以在极限值处绘制大小为零的虚拟点。这不是一个特别漂亮的解决方案,但它确实相当灵活。代码看起来像

arrange(x[1:2, ], value) %>%
  ggplot(data=., aes(x=factor(name), y=value)) +
  geom_bar(stat="identity") +
  geom_point(aes(x=c(name[1], name[1]), y = c(0, max(value)*1.1)), size=0) +
  scale_y_continuous(labels=comma)

关于r - 使用dplyr管道在ggplot2中进行动态ylim,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29121995/

10-12 23:31