光滑的二维表面
Smooth 2D surface
我想知道是否可以平滑绘图或以某种方式使其更好,因为现在像素太大了。
library(ggplot2)
library(reshape2)
# plot2d = melt(c)
plot2d = melt(matrix(rnorm(20), 5)) # fake data
names(plot2d) <- c("x", "y", "z")
v <- ggplot(plot2d, aes(x, y, z = z))
v + geom_tile(aes(fill = z)) +
scale_alpha_continuous(limits=c(start.point, end.point)) +
scale_fill_gradient2('TYYYT',low="green", mid = "white", high="red")
library(ggplot2)
library(reshape2)
set.seed(101)
## set dimnames so that melt() picks them up
m <- matrix(rnorm(20),5,dimnames=list(x=1:5,y=1:4))
plot2d_1 <- melt(m,value.name="z")
gg0 <- ggplot(plot2d_1, aes(x,y,z=z,fill=z))
平滑此图的最简单方法是将 geom_raster()
与 interpolate=TRUE
结合使用(请参阅 ?geom_tile
了解其他优点)。
gg0 + geom_raster(interpolate=TRUE)
您也可以使用 fields
包手动进行(双线性)插值(有很多选项:例如 library(sos); findFn("{bilinear interpolation}")
.
library(fields)
m2 <- interp.surface.grid(list(x=1:5,y=1:4,z=m),
grid.list=list(x=seq(1,5,length=101),
y=seq(1,4,length=101)))
dimnames(m2$z) <- list(x=m2$x,y=m2$y)
现在熔化它并重新绘制:
plot2d_2 <- melt(m2,value.name="z")
gg0 %+% plot2d_2 + geom_tile()
嗯,插值似乎改变了 z 尺度 - 你应该小心......
我想知道是否可以平滑绘图或以某种方式使其更好,因为现在像素太大了。
library(ggplot2)
library(reshape2)
# plot2d = melt(c)
plot2d = melt(matrix(rnorm(20), 5)) # fake data
names(plot2d) <- c("x", "y", "z")
v <- ggplot(plot2d, aes(x, y, z = z))
v + geom_tile(aes(fill = z)) +
scale_alpha_continuous(limits=c(start.point, end.point)) +
scale_fill_gradient2('TYYYT',low="green", mid = "white", high="red")
library(ggplot2)
library(reshape2)
set.seed(101)
## set dimnames so that melt() picks them up
m <- matrix(rnorm(20),5,dimnames=list(x=1:5,y=1:4))
plot2d_1 <- melt(m,value.name="z")
gg0 <- ggplot(plot2d_1, aes(x,y,z=z,fill=z))
平滑此图的最简单方法是将 geom_raster()
与 interpolate=TRUE
结合使用(请参阅 ?geom_tile
了解其他优点)。
gg0 + geom_raster(interpolate=TRUE)
您也可以使用 fields
包手动进行(双线性)插值(有很多选项:例如 library(sos); findFn("{bilinear interpolation}")
.
library(fields)
m2 <- interp.surface.grid(list(x=1:5,y=1:4,z=m),
grid.list=list(x=seq(1,5,length=101),
y=seq(1,4,length=101)))
dimnames(m2$z) <- list(x=m2$x,y=m2$y)
现在熔化它并重新绘制:
plot2d_2 <- melt(m2,value.name="z")
gg0 %+% plot2d_2 + geom_tile()
嗯,插值似乎改变了 z 尺度 - 你应该小心......