我一直在学习ggplot2,并希望将它用于我的所有R图形.但是,我还没有找到一种方法来制作一个类似于传统轮廓图的等高线图,就像使用lattice:filled.contour()获得的那样.例如:
#define data
x<-seq(1,11,1)
y<-seq(1,11,1)
xyz.func<-function(x,y) {-10.4+6.53*x+6.53*y-0.167*x^2-0.167*y^2+0.0500*x*y}
#contour plot using lattice graphics and R Color Brewer
library(lattice) #for filled.contour()
library(RColorBrewer) #for brewer.pal()
z.lattice<-outer(x,y,xyz.func)
filled.contour(x,y,z.lattice,nlevels=6,col=brewer.pal(6,"YlOrRd"))
Run Code Online (Sandbox Code Playgroud)
这给了我一个很好的轮廓图.

现在,让我们在ggplot2中尝试相同的事情.基于我读过的所有内容(特别是ggplot2中轮廓线的平面部分上的绘图标签),我能想到的最好的是:
#contour plot using ggplot2
library(ggplot2)
library(reshape2) #for melt()
z.molten<-melt(z.lattice)
names(z.molten) <- c("x", "y", "z")
v<-ggplot(z.molten, aes(x,y,z=z))+
geom_tile(aes(fill=z))+
stat_contour(bins=6,aes(x,y,z=z), color="black", size=0.6)+
scale_fill_gradientn(colours=brewer.pal(6,"YlOrRd"))
v
Run Code Online (Sandbox Code Playgroud)
此图与fill.contour()具有相同的基本思想,但彩色图块不能很好地符合轮廓.

我也没有成功改变瓷砖的尺寸.
关于如何使ggplot2的输出更接近fill.contour()的输出的任何建议?
我在使用g中的ggmap/ggplot2在地图上绘制填充的等高线图时遇到了问题.
我的数据是规则间隔的纬度/经度坐标,其中az值表示降雨量
> head( flood )
lat lon rain
1 22.51916 -105.9318 1.486188e-05
2 22.59956 -105.9318 1.735962e-05
3 22.67996 -105.9318 2.024598e-05
4 22.76037 -105.9318 2.357599e-05
5 22.84077 -105.9318 2.741153e-05
6 22.92117 -105.9318 3.182212e-05
Run Code Online (Sandbox Code Playgroud)
在使用ggmap获取基本地图后,我正试图过度绘制充满雨水的轮廓
map = ggmap( baseMap ) +
geom_contour( data = flood, aes( x = lon, y = lat, z = rain ) ) +
scale_fill_continuous( name = "Rainfall (inches)", low = "yellow", high = "red" )
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误
Error in unit(tic_pos.c, "mm") : 'x' and 'units' must have …Run Code Online (Sandbox Code Playgroud)