我在ggplot2和ggmarginal中使用viridis时遇到了一个问题。
我想给我用ggplot2绘制的一个布兰德-阿尔特曼图上的点加颜色:
diff <- (a1$A1_phones - a1$A1_video)
diffp <- (a1$A1_phones - a1$A1_video)/a1$A1_video*100
sd.diff <- sd(diff)
sd.diffp <- sd(diffp)
my.data <- data.frame(a1$A1_video, a1$A1_phones, diff, diffp)
dev.off()
diffplot <- ggplot(my.data, aes(a1$A1_video, diff)) +
geom_point(size=2, colour = rgb(0,0,0, alpha = 0.5)) +
theme_bw() +
#when the +/- 2SD lines will fall outside the default plot limits
#Thanks to commenter for noticing this.
ylim(mean(my.data$diff) - 7*sd.diff, mean(my.data$diff) + 7*sd.diff) +
geom_hline(yintercept = 0, linetype = 3) +
geom_hline(yintercept = mean(my.data$diff)) +
geom_hline(yintercept = mean(my.data$diff) + 2*sd.diff, linetype = 2) +
geom_hline(yintercept = mean(my.data$diff) - 2*sd.diff, linetype = 2) +
ylab("Difference Video vs Algorithm [ms]") +
xlab("Average of Video vs Algorithm [ms]")
p<-ggMarginal(diffplot, type="histogram", bins = 40)+ scale_colour_viridis_d()

现在,将A1_video中的点与A1_phones中的点进行不同的着色,并让viridis绘制连续的密度图,这将是非常漂亮的。
发布于 2019-06-19 21:47:49
我不确定这是否是您想要的,请尝试更具体,并提供示例数据。如果只希望颜色根据源数据集中的另一列更改,则必须在aes()函数中指定:
diffplot <- ggplot(my.data,aes(col=a1$A1_video))https://stackoverflow.com/questions/56667508
复制相似问题