gpt4 book ai didi

R - ggplot2 - geom_line - 去掉缺失值的直线

转载 作者:行者123 更新时间:2023-12-04 23:02:49 26 4
gpt4 key购买 nike

我有要绘制的数据。我有几个变量,范围从 1880 年到 2012 年。我每年观察一次。但有时一个变量多年没有观测值。例如,它可能有 1880-1888 年的观测值,但没有 1889-1955 年和 1956-2012 年的观测值。我希望 ggplot2 + geom_line 在缺失的年份(1889-1955)中没有任何东西。但它用一条直线连接 1888 年和 1956 年。我能做些什么来删除这条线吗?我正在使用 ggplot 函数。

不相关的问题,但是有没有办法让 ggplot 不按字母顺序对图例中的变量名称进行排序?我有这样的代码:

ggplot(dataFrame, aes(Year, value, colour=Name)) + geom_line()

或者在变量名称 (Name1, ..., Name10) 前面添加数字到图例。例如,
1.姓名1
2. 姓名 2
...
10.姓名10

最佳答案

这里有一些示例数据可以回答您的问题,我添加了 geom_point()功能,以便更轻松地查看哪个 value s 在数据中:

library(ggplot2)
seed(1234)
dat <- data.frame(Year=rep(2000:2013,5),
value=rep(1:5,each=14)+rnorm(5*14,0,.5),
Name=rep(c("Name1","End","First","Name2","Name 3"),each=14))
dat2 <- dat
dat2$value[sample.int(5*14,12)]=NA
dat3可能是您的数据的示例,只是我正在处理 Year作为整数。
dat3 <- dat2[!is.na(dat2$value),]

# POINTS ARE CONNECTED WITH NO DATA IN BETWEEN #
ggplot(dat3, aes(Year, value, colour=Name)) +
geom_line() + geom_point()

但是,如果您在数据中添加缺少列的年份的列并将该值设置为 NA然后当你绘制数据时,你会得到差距。
# POINTS ARE NOT CONNECTED #
ggplot(dat2, aes(Year, value, colour=Name)) +
geom_line() + geom_point()

最后,回答你的最后一个问题,这是你如何更改 Name 的顺序和标签。在传说中:
# CHANGE THE ORDER AND LABELS IN THE LEGEND #
ggplot(dat2, aes(Year, value, colour=Name)) +
geom_line() + geom_point() +
scale_colour_discrete(labels=c("Beginning","Name 1","Name 2","Name 3","End"),
breaks=c("First","Name1","Name2","Name 3","End"))

关于R - ggplot2 - geom_line - 去掉缺失值的直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19074259/

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