Ben*_*n J 13 matlab plot r ggplot2 plyr
看这个例子
这是在matlab中创建的,通过独立制作两个散点图,创建每个散点图,然后使用imagesc将它们绘制到同一个图中,然后最终将顶部图像的alpha设置为0.5.
我想在不使用图像的情况下在R或matlab中执行此操作,因为创建图像不会保留轴刻度信息,也不能覆盖网格(例如,在matlab中使用'grid on').理想情况下,我想在matlab中正确地做到这一点,但也会对R中的解决方案感到满意.看起来它应该是可能的,但我不能为我的生活弄明白.
所以一般来说,我希望能够设置整个绘图对象的alpha(即matlab绘图中的matlab绘图句柄...)
谢谢,
本.
编辑:上例中的数据实际上是2D.绘制的点来自计算机模拟.每个点代表"振幅"(y轴)(特定于我正在运行的模拟的紧急属性),针对"性能"(x轴)绘制.
编辑2:每个数据集中有1796400个点.
Pau*_*tra 11
使用ggplot2你可以将两个加在一起,geom_point并使用alpha参数使它们透明.ggplot2als增加了透明度,我认为这就是你想要的.这应该工作,虽然我还没有运行.
dat = data.frame(x = runif(1000), y = runif(1000), cat = rep(c("A","B"), each = 500))
ggplot(aes(x = x, y = y, color = cat), data = dat) + geom_point(alpha = 0.3)
Run Code Online (Sandbox Code Playgroud)
ggplot2太棒了!
这是计算和绘制凸包的示例:
library(automap)
library(ggplot2)
library(plyr)
loadMeuse()
theme_set(theme_bw())
meuse = as.data.frame(meuse)
chull_per_soil = ddply(meuse, .(soil),
function(sub) sub[chull(sub$x, sub$y),c("x","y")])
ggplot(aes(x = x, y = y), data = meuse) +
geom_point(aes(size = log(zinc), color = ffreq)) +
geom_polygon(aes(color = soil), data = chull_per_soil, fill = NA) +
coord_equal()
Run Code Online (Sandbox Code Playgroud)
这导致以下插图:

您可以先将两个数据集导出为位图图像,重新导入它们,添加透明度:

library(grid)
N <- 1e7 # Warning: slow
d <- data.frame(x1=rnorm(N),
x2=rnorm(N, 0.8, 0.9),
y=rnorm(N, 0.8, 0.2),
z=rnorm(N, 0.2, 0.4))
v <- with(d, dataViewport(c(x1,x2),c(y, z)))
png("layer1.png", bg="transparent")
with(d, grid.points(x1,y, vp=v,default="native",pch=".",gp=gpar(col="blue")))
dev.off()
png("layer2.png", bg="transparent")
with(d, grid.points(x2,z, vp=v,default="native",pch=".",gp=gpar(col="red")))
dev.off()
library(png)
i1 <- readPNG("layer1.png", native=FALSE)
i2 <- readPNG("layer2.png", native=FALSE)
ghostize <- function(r, alpha=0.5)
matrix(adjustcolor(rgb(r[,,1],r[,,2],r[,,3],r[,,4]), alpha.f=alpha), nrow=dim(r)[1])
grid.newpage()
grid.rect(gp=gpar(fill="white"))
grid.raster(ghostize(i1))
grid.raster(ghostize(i2))
Run Code Online (Sandbox Code Playgroud)
例如,你可以将这些添加为图层ggplot2.