gpt4 book ai didi

r - 在ggplot2中添加水平线到绘图和图例

转载 作者:行者123 更新时间:2023-12-03 07:47:40 26 4
gpt4 key购买 nike

这段代码创建了一个漂亮的图,但我想在 y=50 处添加一条水平黑线,并让图例显示一条黑线,并在图例中显示文本“cutoff”,但在图例中保留源点。我可以使用 geom_line 添加该行,但无法在图例中获取该行。

    library(ggplot2)
the.data <- read.table( header=TRUE, sep=",",
text="source,year,value
S1,1976,56.98
S1,1977,55.26
S1,1978,68.83
S1,1979,59.70
S1,1980,57.58
S1,1981,61.54
S1,1982,48.65
S1,1983,53.45
S1,1984,45.95
S1,1985,51.95
S1,1986,51.85
S1,1987,54.55
S1,1988,51.61
S1,1989,52.24
S1,1990,49.28
S1,1991,57.33
S1,1992,51.28
S1,1993,55.07
S1,1994,50.88
S2,1993,54.90
S2,1994,51.20
S2,1995,52.10
S2,1996,51.40
S3,2002,57.95
S3,2003,47.95
S3,2004,48.15
S3,2005,37.80
S3,2006,56.96
S3,2007,48.91
S3,2008,44.00
S3,2009,45.35
S3,2010,49.40
S3,2011,51.19")
ggplot(the.data, aes( x = year, y = value ) ) +
geom_point(aes(colour = source)) +
geom_smooth(aes(group = 1))

最佳答案

(1) 试试这个:

cutoff <- data.frame( x = c(-Inf, Inf), y = 50, cutoff = factor(50) )
ggplot(the.data, aes( year, value ) ) +
geom_point(aes( colour = source )) +
geom_smooth(aes( group = 1 )) +
geom_line(aes( x, y, linetype = cutoff ), cutoff)

screenshot

(2)关于您的评论,如果您不希望将截止值列为单独的图例,那么在绘图上标记截止线会更容易:

ggplot(the.data, aes( year, value ) ) + 
geom_point(aes( colour = source )) +
geom_smooth(aes( group = 1 )) +
geom_hline(yintercept = 50) +
annotate("text", min(the.data$year), 50, vjust = -1, label = "Cutoff")

screenshot

更新

这看起来更好,并且可以推广到多行,如下所示:

line.data <- data.frame(yintercept = c(50, 60), Lines = c("lower", "upper"))
ggplot(the.data, aes( year, value ) ) +
geom_point(aes( colour = source )) +
geom_smooth(aes( group = 1 )) +
geom_hline(aes(yintercept = yintercept, linetype = Lines), line.data)

关于r - 在ggplot2中添加水平线到绘图和图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13254441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com