我想使用ggplot实现这样的图形:
我能得到的最接近的是:
ggplot(dat, aes(x = Date, color = Rain)) +
geom_linerange(aes(ymin = 0, ymax = 1)) +
facet_wrap(~Station, ncol = 1)
给出:
我可以整理所有格式细节。我的问题是:我可以在y轴上使用Station
而不是像原始的facet变量那样实现这一点吗?
我不认为geom_linerange
是正确的方法。我尝试将Station
作为y
美学,但这不起作用。我可以使用另一个geom吗?
答案 0 :(得分:3)
正如我上面评论的那样,我认为geom_raster
将是您最好的选择。让我们编写一些数据,看看它是如何工作的。
library(ggplot)
dat <- data.frame(Date = c(1:5, 1:5),
Station = c(rep("A", 5), rep("B", 5)),
Rain = c(0,0,1,1,0, NA,1,0,1,1))
一个简单的情节就是,
ggplot(dat, aes(Date, Station)) +
geom_raster(aes(fill = factor(Rain)))
现在,使用geom_raster
优于geom_tile
的优势在于您可以使用hjust
和vjust
来控制切片的对齐方式。这个值从0变为1,默认值为0.5,让我们尝试将这些值替换为零
ggplot(dat, aes(Date, Station)) +
geom_raster(aes(fill = factor(Rain)),
hjust = 0,
vjust = 0)
我认为默认选项工作正常,我希望这会有所帮助。 干杯!
答案 1 :(得分:1)
怎么样
ggplot(dat, aes(x = Date, color = Rain)) +
geom_linerange(aes(ymin = 0, ymax = 1)) +
facet_wrap(Station ~ .)
使用facet_wrap
代替facet_grid
将标签放在轴上,而不是通过将标签放在单个图表的顶部来使整个网格混乱。