R在ggplot2的x轴上绘制年龄(以年和月为单位)
我试图在ggplot2中创建一个x轴上以年和月为单位的图形。年龄变量应如下所示:“2;6”=2岁6个月,“5;9”=5岁9个月。x轴的原始数据包括以月为单位的年龄,需要一个函数来创建以年和月为单位的年龄变量。我在网上查过,虽然我可以找到大量关于绘图日期的资料(例如使用“lubridate”软件包),但我无法确定如何使这些例程适应绘图年龄。理想的解决方案是使用自定义函数重新标记x轴。下面是一个简单的示例。我已经创建了一个小的数据集,一个将月份转换为年和月的函数,我已经开始绘图。有人能帮我重新标记x-axs的语法吗(我认为“scale-x-discrete”可能是正确的函数)。谢谢R在ggplot2的x轴上绘制年龄(以年和月为单位),r,ggplot2,axes,R,Ggplot2,Axes,我试图在ggplot2中创建一个x轴上以年和月为单位的图形。年龄变量应如下所示:“2;6”=2岁6个月,“5;9”=5岁9个月。x轴的原始数据包括以月为单位的年龄,需要一个函数来创建以年和月为单位的年龄变量。我在网上查过,虽然我可以找到大量关于绘图日期的资料(例如使用“lubridate”软件包),但我无法确定如何使这些例程适应绘图年龄。理想的解决方案是使用自定义函数重新标记x轴。下面是一个简单的示例。我已经创建了一个小的数据集,一个将月份转换为年和月的函数,我已经开始绘图。有人能帮我重新标记x
库(ggplot2)
#创建数据帧
df您可以在末尾添加此项以获得这些自定义标签:
my_breaks = 6*0:10 # every six months, from 0 to 60 months
my_breaks_labels = m2ym(my_breaks) # save those numbers as "yr + mo" format
g + scale_x_continuous(breaks = my_breaks, # use these breaks...
labels = my_breaks_labels) # ...with these labels
您可以在末尾添加以下内容以获得这些自定义标签:
my_breaks = 6*0:10 # every six months, from 0 to 60 months
my_breaks_labels = m2ym(my_breaks) # save those numbers as "yr + mo" format
g + scale_x_continuous(breaks = my_breaks, # use these breaks...
labels = my_breaks_labels) # ...with these labels
我不确定我是否完全理解了这个问题,也无法发表评论,但从我的理解来看,如果您想使用函数结果绘制x轴,为什么不使用函数更改一个新列,即
library(dplyr)
df <- df %>% mutate(age_y_m = m2ym(age_months))
库(dplyr)
df%突变(年龄y月=m2ym(年龄月))
然后绘制新柱并重新标记x轴
g <- ggplot(df, aes(x = age_y_m, y = height)) +
geom_point() +
xlab("Age in Years and Months (y;m)")
g我不确定我是否完全理解了这个问题,也无法发表评论,但根据我的理解,如果您想使用函数结果绘制x轴,为什么不使用您的函数变异一个新列,即
library(dplyr)
df <- df %>% mutate(age_y_m = m2ym(age_months))
库(dplyr)
df%突变(年龄y月=m2ym(年龄月))
然后绘制新柱并重新标记x轴
g <- ggplot(df, aes(x = age_y_m, y = height)) +
geom_point() +
xlab("Age in Years and Months (y;m)")
g可能的重复:(重点不是回答地址是“日期”,重点是你需要使用标签=
并创建你的5;9
,不管你想如何处理你的数据。)可能的重复:(重点不是回答地址是“日期”,重点是您需要使用标签=
并创建您的5;9
,无论您希望如何处理数据。)df$age\u y\m谢谢。这样标签就正确了,但是两次休息之间的时间间隔是不均匀的。df$age\u y\m谢谢。这样标签就对了,但是间隔时间是不均匀的。太好了。这就是我要找的。很简单。谢谢,太好了。这就是我要找的。很简单。谢谢