我的条形图上刻有股票代号名称:
我希望能够在每个图下方添加一个指标的小“子图”,如下所示:
ggplot2是否可能?我想到了辅助轴,但是大多数情况下,主绘图轴和指标轴之间没有线性关系(因此,不能使用sec_axis
。
谢谢!
答案 0 :(得分:1)
由于这些图显然是不同类型的图,所以我认为您最好创建单独的图,然后将它们渲染在一起。这是使用cowplot
软件包的一种解决方案:
library(ggplot2)
library(cowplot)
#sample data
df <- data.frame(x = 1:100, y = cumsum(rnorm(100)), volume = sample(1:10, 100, replace = TRUE))
p1 <- ggplot(df, aes(x,y)) +
geom_line()
p2 <- ggplot(df, aes(x,volume)) +
geom_bar(stat = "identity")
plot_grid(p1, p2, align = "v", ncol = 1, rel_heights = c(.8, .2))
由reprex package(v0.2.1)于2019-01-25创建
继续在这个笨拙的示例上进行构建以支持构面的概念。忽略丑陋的图形,由于图像尺寸的限制,它变得模糊了。
library(ggplot2)
library(cowplot)
library(gridExtra)
#sample data
df <- data.frame(x = 1:100, y = cumsum(rnorm(100)), volume = sample(1:10, 400, replace = TRUE), group = letters[1:4])
plots <- list()
for (j in unique(df$group)){
plot_df <- df[df$group == j, ]
p1 <- ggplot(plot_df, aes(x,y)) +
geom_line() +
facet_wrap(~group) +
xlab("")
p2 <- ggplot(plot_df, aes(x,volume)) +
geom_bar(stat = "identity")
p_out <- plot_grid(p1, p2, align = "v", ncol = 1, rel_heights = c(.7, .3))
plots[[j]] <- p_out
}
do.call(grid.arrange, plots)
由reprex package(v0.2.1)于2019-01-25创建