相关疑难解决方法(0)

如何用y = 0以上和以下的不同颜色填充geom_polygon?

考虑以下多边形图:

ggplot(df, aes(x=year,y=afw)) +
  geom_polygon() +
  scale_x_continuous("", expand=c(0,0), breaks=seq(1910,2010,10)) +
  theme_bw()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,我想用两种不同的颜色填充它.例如,红色表示上方黑色区域0,蓝色表示下方黑色区域0.不幸的是,使用fill=col不填充正确的区域.

我尝试了以下代码(我添加了geom_line以便说明填充边框应该在哪里):

ggplot(df, aes(x=year,y=afw)) +
  geom_line() +
  geom_polygon(aes(fill=col), alpha=0.5) +
  scale_x_continuous("", expand=c(0,0), breaks=seq(1910,2010,10)) +
  theme_bw()
Run Code Online (Sandbox Code Playgroud)

这使: 在此输入图像描述

正如你所看到的,它的填充量超出了应有的水平.我怎么解决这个问题?

数据:

df <- structure(list(year = c(1901, 1901, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, …
Run Code Online (Sandbox Code Playgroud)

r polygon colors ggplot2

16
推荐指数
2
解决办法
5140
查看次数

ggplot2:如何在函数曲线上方和直线下方阴影区域?

所以我有一个像这样的数据框:

a_data <-
  data.frame(
    f = f,
    alpha = alpha,
    asymptote = alpha_1_est)
Run Code Online (Sandbox Code Playgroud)

和这样的功能:

a_formula <- function(x) {
  0.7208959 - 0.8049132 * exp(-21.0274 * x)}
Run Code Online (Sandbox Code Playgroud)

我将它们与ggplot2结合使用:

ggplot(a_data, aes(x = f, y = alpha)) + 

geom_point() +

#function curve
stat_function(fun = a_formula,
              color = "red") +

#asymptote of alpha
geom_hline(
  yintercept = asymptote,
  linetype = "longdash",
  color = "blue")
Run Code Online (Sandbox Code Playgroud)

产生如下图: 基本情节

我想要并且找不到的方法是对y轴,函数曲线(红色)和渐近线(虚线)之间的区域进行着色,如下所示: 阴影图

我尝试在其中挤压功能区或多边形,但无法正常工作-可能是因为我想在曲线上方而不是下方着色(下面的效果很好)。

数据框如下所示:

> head(a_data)
     f       alpha asymptote
1 0.01 0.007246302 0.7208959
2 0.03 0.374720198 0.7208959
3 …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

3
推荐指数
1
解决办法
1383
查看次数

R中ggplot中两条线之间的颜色区域?

这里这里已经提出了类似的问题,但我似乎无法让它们适用于我的示例。如果我有一个看起来像这样的情节:

library(ggplot2)
set.seed(100)
x <- seq(0, 20, length.out=1000)
x1 <- seq(0, 18, length.out=1000)
x2 <- seq(0, 22, length.out=1000)
dat <- data.frame(x=x, 
                  px = dexp(x, rate=0.5),
                  pxHi = dexp(x1, rate=0.5),
                  pxLo = dexp(x2, rate=0.5)
                  )

ggplot(dat, aes(x=x, y=px)) + 
  geom_line() +
  geom_line(aes(x= x, y = pxHi), col = 'red') +
  geom_line(aes(x= x, y = pxLo), col = 'blue') + theme_bw()
Run Code Online (Sandbox Code Playgroud)

示例图

我试图在红线和蓝线之间进行着色。我尝试使用geom_ribbon,但似乎无法让它正常工作。

关于我如何做到这一点有什么建议吗?

r ggplot2

1
推荐指数
1
解决办法
61
查看次数

标签 统计

ggplot2 ×3

r ×3

colors ×1

plot ×1

polygon ×1