不同的 y-Axis 标签 facet_grid 和尺寸
Different y-Axis Labels facet_grid and sizes
我遇到了以下问题:
我想在一个图中(具有多个子图)显示时间序列的不同特征。为了对齐图表区域并方便创建,我使用 ggplot2
及其 facet_grid
函数。
但是,我只想更改一个轴标签(例如,上图更改为百分比)。
此外,我想调整每个图的高度,使上图大约是下图的两倍大。
非常感谢您的帮助!
例子
require(ggplot2)
#simulate some data
df <- data.frame(date=c(1:1000),
value=cumsum(rnorm(1000)),
volume=abs(rnorm(1000)*10))
#melt for ggplot
df_melt <- melt(df, id=c("date"),measure.vars=c("value","volume"))
#plot
ggplot(df_melt, aes(x=date, y=value)) + geom_line() +
facet_grid(variable~., scales = "free")
结果如下:
您可以更改情节的 grobs
来执行此操作
library(ggplot2)
library(grid)
library(scales)
#plot
p <- ggplot(df_melt, aes(x=date, y=value)) +
geom_line() +
facet_grid(variable~., scales = "free")
# change facet heights
g1 <- ggplotGrob(p)
g1$heights[[3]] <- unit(2, "null")
# change labels - create second plot with percentage labels (nonsese % here)
p2 <- ggplot(df_melt, aes(x=date, y=value)) +
geom_line() +
facet_grid(variable~., scales = "free") +
scale_y_continuous(labels = percent_format())
g2 <- ggplotGrob(p2)
#Tweak axis - overwrite one facet
g1[["grobs"]][[2]] <- g2[["grobs"]][[2]]
grid.newpage()
grid.draw(g1)
我遇到了以下问题:
我想在一个图中(具有多个子图)显示时间序列的不同特征。为了对齐图表区域并方便创建,我使用 ggplot2
及其 facet_grid
函数。
但是,我只想更改一个轴标签(例如,上图更改为百分比)。
此外,我想调整每个图的高度,使上图大约是下图的两倍大。
非常感谢您的帮助!
例子
require(ggplot2)
#simulate some data
df <- data.frame(date=c(1:1000),
value=cumsum(rnorm(1000)),
volume=abs(rnorm(1000)*10))
#melt for ggplot
df_melt <- melt(df, id=c("date"),measure.vars=c("value","volume"))
#plot
ggplot(df_melt, aes(x=date, y=value)) + geom_line() +
facet_grid(variable~., scales = "free")
结果如下:
您可以更改情节的 grobs
来执行此操作
library(ggplot2)
library(grid)
library(scales)
#plot
p <- ggplot(df_melt, aes(x=date, y=value)) +
geom_line() +
facet_grid(variable~., scales = "free")
# change facet heights
g1 <- ggplotGrob(p)
g1$heights[[3]] <- unit(2, "null")
# change labels - create second plot with percentage labels (nonsese % here)
p2 <- ggplot(df_melt, aes(x=date, y=value)) +
geom_line() +
facet_grid(variable~., scales = "free") +
scale_y_continuous(labels = percent_format())
g2 <- ggplotGrob(p2)
#Tweak axis - overwrite one facet
g1[["grobs"]][[2]] <- g2[["grobs"]][[2]]
grid.newpage()
grid.draw(g1)