我有我试图绘制的数据.我有几个变量,范围从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()
Run Code Online (Sandbox Code Playgroud)
或者在变量名称(Name1,...,Name10)前面添加数字到图例.例如,1.Name1 2. Name2 ... 10. Name10
这里有一些示例数据可以回答您的问题,我添加了这个geom_point()函数,以便更容易查看value数据中的哪些内容:
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
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
但是,如果您在数据中添加缺少列的年份列并将该值设置为NA当您绘制数据时,您将获得间隙.
# POINTS ARE NOT CONNECTED #
ggplot(dat2, aes(Year, value, colour=Name)) +
geom_line() + geom_point()
Run Code Online (Sandbox Code Playgroud)
最后,回答您的上一个问题,这是您如何更改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"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6237 次 |
| 最近记录: |