在ggplot中添加一行
Posted
技术标签:
【中文标题】在ggplot中添加一行【英文标题】:Adding a line to ggplot 【发布时间】:2010-12-18 02:52:35 【问题描述】:我正在尝试在点图中添加一条线,但我无法弄清楚。我的 y 值是从 0 到 Inf 的数字,而我的 x 值来自有序因子。
这是绘图代码,只显示点:
g = ggplot() +
layer(data = ratesdf, mapping = aes(x = age, y = rates), geom = "point", stat="identity") +
layer(data = ratesdf, mapping = aes(x = age, y = rates), geom = "smooth", stat = "smooth", method = loess)
print(g)
这是数据框:
rates age
[0,5) 0.00000000 [0,5)
[5,10) 0.00000000 [5,10)
[10,15) 0.00000000 [10,15)
[15,20) 0.02017059 [15,20)
[20,25) 0.32707402 [20,25)
[25,30) 0.54013169 [25,30)
[30,35) 0.71698958 [30,35)
[35,40) 0.81120944 [35,40)
[40,45) 0.87283637 [40,45)
[45,50) 0.91411649 [45,50)
[50,55) 0.91273334 [50,55)
[55,60) 0.95627322 [55,60)
[60,65) 0.92879819 [60,65)
[65,70) 0.98088779 [65,70)
[70,75) 0.90406674 [70,75)
[75,80) 1.00000000 [75,80)
[80,85) 1.00000000 [80,85)
[85,Inf] 1.00000000 [85,Inf]
提前感谢大家!
(哈德利,我保证一拿到我的年度生日礼物就买你的书 :))
【问题讨论】:
如果没有可重现的数据框,很难判断。年龄类型是“因素”还是其他?区间的数学符号不是我以前在 R 中见过的... 看看这个相关的问题:***.com/questions/1476185/…. 列年龄是一个有序因子,使用 cut 的默认结果作为标签。 将数据发布到 SO 的最佳方法是粘贴 dput() 的结果 【参考方案1】:您需要手动指定 group = 1 因为默认情况下 ggplot2 由绘图上所有分类变量的组合进行分组。
【讨论】:
【参考方案2】:我不确定我是否错过了你想要做的事情,但基本上想要一个阶梯函数。例如:
rates = c(0.00000000 ,0.00000000 ,0.00000000 ,0.02017059 ,0.32707402, 0.54013169 ,0.71698958 ,0.81120944 ,0.87283637 ,0.91411649 ,0.91273334 ,0.95627322 ,0.92879819 ,0.98088779 ,0.90406674 ,1.00000000 ,1.00000000, 1.00000000 )
age = seq(0, 85, 5)
#ReJig the variables
r2 = sort(rep(rates,2));r2 = r2[1:(length(r2)-1)]
a = sort(rep(age,2));a = a[2:(length(a))]
library(ggplot2)
ggplot() + geom_line(aes(x=a, y=r2))
HTH
【讨论】:
以上是关于在ggplot中添加一行的主要内容,如果未能解决你的问题,请参考以下文章