我有以下示例数据,需要将其绘制两次,一次使用 yr、mo、Var 和 long,另一次使用 yr、mo、var 和 lat。我需要对 long 和 lat 使用辅助轴,以便我可以跟踪年度变化。 我尝试了几种方法,但都没有成功。请有任何想法。
month <- month.abb[c(1,2,3,4,5,9,10,11,12,1,2,3,4,5,9,10,11,12,1,2,3,4,5,9,10,11)] # no summer
month <- ordered(month, month.abb)
yr= seq(1980, 2005, by = 1)
Var <- runif(26, min=-29, max=32)
longitude <- runif(26, min=37, max=81)
latitude <-runif(26, min=4, max=67)
#Set the dataframe
df <- data.frame(month, yr, Var, longitude, latitude)
## for Long
normalizer <- max(df$yr) / max(df$longitude)
df %>%
arrange(month) %>%
mutate(month = factor(month,
levels=c("Jan","Feb","Mar","Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov","Dec"))) %>%
ggplot() +
geom_raster( aes(x=month, y=yr,fill = Var))+
geom_point( aes(x= month, y=longitude/normalizer),size = 2)+
#geom_point( aes(x= month, y= (5- longitude/10),size = 2))+
scale_y_continuous("yr", sec.axis = sec_axis(trans= ~.*normalizer,name = "Long"))+
#scale_y_continuous("yr", sec.axis = sec_axis(~ 5 -.*10, name = "Long"))+
theme_bw()+
scale_fill_gradientn(colors=c("purple4","blue","dodgerblue","lightcyan","olivedrab1", "yellow","red","#7F0000","deeppink"),
breaks = breaks3) +
xlab("") + ylab("")
答案 0 :(得分:0)
如果删除引用未定义的breaks3的scale_fill
命令并取消注释geom_point
,您的代码会生成一个带有辅助轴的图:
library(tidyverse)
month <- month.abb[c(1,2,3,4,5,9,10,11,12,1,2,3,4,5,9,10,11,12,1,2,3,4,5,9,10,11)] # no summer
month <- ordered(month, month.abb)
yr <- seq(1980, 2005, by = 1)
Var <- runif(26, min=-29, max=32)
longitude <- runif(26, min=37, max=81)
latitude <-runif(26, min=4, max=67)
#Set the dataframe
df <- data.frame(month, yr, Var, longitude, latitude)
# for Long
normalizer <- max(df$yr) / max(df$longitude)
df %>%
arrange(month) %>%
mutate(month = factor(month,
levels=c("Jan","Feb","Mar","Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov","Dec"))) %>%
ggplot() +
geom_raster( aes(x=month, y=yr,fill = Var))+
geom_point( aes(x= month, y=longitude/normalizer),size = 2)+
geom_point( aes(x= month, y= (5- longitude/10),size = 2))+
scale_y_continuous("yr", sec.axis = sec_axis(~ 5 -.*10, name = "Long"))