我有这种数据集
lat long val
41.69 -71.566389 0.25756813
41.69 -71.566389 0.325883146
42.86 -71.959722 0.897783941
42.86 -71.959722 0.621170816
42.37 -71.234167 0.224426988
41.84 -71.143333 0.048329645
我的完整数据集中val的范围是0-1。 我想创建两个数字,一个绘制0-1的所有值,另一个绘制0.5-1的值。 但两者必须采用相同的色标。
我知道我可以将它们分组并创建两个数字。但我不知道如何以相同的色标制作它们。
目前,我有这段代码:
library(ggplot2)
library(maps)
usamap <- map_data("state")
myPalette <- colorRampPalette(rev(brewer.pal(10, "Spectral")))
ggplot(data=df,aes(x=long,y=lat,color=val)) +
geom_polygon( data=usamap, aes(x=long, y=lat,group=group),colour="black", fill="white" )+
geom_point(size = 0.01)+
scale_colour_gradientn(name = "Range",colours = myPalette(10))+
xlab('Longitude')+
ylab('Latitude')+
theme_bw()
答案 0 :(得分:4)
您只需将limits
选项添加到scale_colour_gradientn
即可。例如:
#Simulate some example data
set.seed(1123)
df = data.frame(lon = rnorm(100), lat = rnorm(100), val = runif(100))
# Define colour palette
library(RColorBrewer)
myPalette <- colorRampPalette(rev(brewer.pal(10, "Spectral")))
# Make plots
library(ggplot2)
## All points
ggplot(df, aes(x = lon, y = lat, colour = val)) + geom_point() +
scale_colour_gradientn(name = "Range",colours = myPalette(10), limits = c(0, 1)) +
theme_bw() + xlim(-3, 3) + ylim(-3, 3)
## Subset
ggplot(subset(df, val >= 0.5), aes(x = lon, y = lat, colour = val)) + geom_point() +
scale_colour_gradientn(name = "Range",colours = myPalette(10), limits = c(0, 1)) +
theme_bw() + xlim(-3, 3) + ylim(-3, 3)
结果: