我有要绘制的数据。我有几个变量,范围从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()
或在图例中在变量名称(名称1,...,名称10)前添加数字。例如,1. Name1 2. Name2 ... 10. Name10
以下是一些示例数据,可以回答您的问题,我添加了该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"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句