到目前为止,我的ggplot编译中包含以下内容:
这次我得到了正确的 Axis ...带有以下代码片段:
p<- p + ylim(c(0,100))
p<- p + geom_hline(aes(yintercept=0))
p<- p + scale_x_continuous(breaks = c(seq(1940,1985,by=5)))
p
因此,我有一个1940-1985年的 x轴(步长为5 )和一个0-100年的 y轴(步长为20 )...第一个问题
如何使100出现在y轴上?
第二个问题
如何将x标签更改为以下字符串向量?
abbrev_x <- c("1940","'45","'50","'55","'60","'65","'70","'75","'80","'85")
abbrev_y <- c("0","20","40","60","80","100%")
因此,我发现的最佳解决方案围绕scale_x_continuous
,以下代码片段示例建议与已经存在的字符串 Axis 标签一起使用:p + scale_x_discrete(limit = c("I1", "SI2", "SI1"),
labels = c("Ione","SItwo","SIone"))
这当然是一个问题,因为我要编写的内容如下:
abbrev_x <- c("1940","'45","'50","'55","'60","'65","'70","'75","'80","'85")
abbrev_y <- c("0","20","40","60","80","100%")
p<- p + scale_x_continuous(breaks = abbrev_x)
p<- p + scale_y_continuous(breaks = abbrev_y)
p
但这似乎是我当今世界中的一个虚拟现实。为了证明这种说法的正确性,这里是以下错误代码,其中包括我所调整的代码:Error in x - from[1] : non-numeric argument to binary operator
有什么想法吗? 最佳答案
您需要两个参数来正确标记连续轴:
在scale_x/y_continuous函数中:
数据框示例:
df <- data.frame(YearOfBirth = seq(1940,1985,by=5), AverageProbability = runif(10) * 100)
abbrev_x <- c("1940","'45","'50","'55","'60","'65","'70","'75","'80","'85")
abbrev_y <- c("0","20","40","60","80","100%")
ggplot(df, aes(x = YearOfBirth, y = AverageProbability)) +
geom_line(col = "burlywood3") +
scale_x_continuous(breaks = seq(1940,1985,by=5), labels = abbrev_x) +
scale_y_continuous(breaks = (0:5)*20, labels = abbrev_y, limits = c(0, 110))