【问题标题】:geom_rect gives empty plot with no rectanglegeom_rect 给出没有矩形的空图
【发布时间】:2021-02-09 11:31:31
【问题描述】:

我想在黎明和黄昏的每个点之间获得一个矩形框。我不明白为什么下面的代码没有给出预期的结果

dawn = seq(200, 210, by =  0.5)
dusk = seq(200.5, 210.5, by = 0.5)
night = data.frame("dusk" = dusk, "dawn" = dawn)


ggplot()+
  geom_rect(data = night, aes(xmin = dawn , xmax = dusk ,
                              ymin = -Inf, ymax = Inf),
 fill = "blue", alpha = 0.5, colour = NA)

我看不到填充的矩形。

【问题讨论】:

  • Inf 无法绘制...指定精确值并可能为min/ymax 使用高值并定义轴限制...
  • 是的。你是对的!现在可以使用了

标签: r ggplot2 data-visualization


【解决方案1】:

作为替代方案,您可以定义带限制的坐标系...

ggplot()+
    geom_rect(data = night, aes(xmin = dawn , xmax = dusk ,
                                ymin = -Inf, ymax = Inf),
              fill = "blue", alpha = 0.5, colour = NA) +
    coord_cartesian(ylim=c(0.2,0.8))

这样它也可以与Inf 一起使用。

【讨论】:

  • 这是个好主意。但是,如果我们有不同 y 尺度的面,这会起作用吗?
  • 目前不确定...试试看,我认为coord_cartesian 独立于各个方面...使用sclaes='free_y' 应该可以,但不确定...你没有不是一开始就要求的:-D
  • 没有 y - y 的那些不同比例是什么:D
【解决方案2】:

你需要一种审美。你到底想画什么??

library(ggplot2)
dawn = seq(200, 210, by =  0.5)
dusk = seq(200.5, 210.5, by = 0.5)
night = data.frame("dusk" = dusk, "dawn" = dawn, y = 1)


ggplot(night, aes(dawn, y))+
  geom_rect(data = night, aes(xmin = dawn , xmax = dusk ,
                              ymin = -Inf, ymax = Inf),
            fill = "blue", alpha = 0.5, colour = NA) 

reprex package (v0.3.0) 于 2021 年 2 月 9 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2013-03-05
    相关资源
    最近更新 更多