gpt4 book ai didi

r - XY散点图,热图带在r中的边缘

转载 作者:行者123 更新时间:2023-12-01 09:30:26 25 4
gpt4 key购买 nike

这里的数据和假设:

set.seed(1234)
myd <- data.frame (X = rnorm (100), Y = rnorm (100, 10, 3))

只是对 X 和 Y 进行分类,有时这可能与 X 和 Y 不同并且是类别本身

myd$xcat <- cut (myd$X, 10)
myd$ycat <- cut (myd$Y, 10)

我想制作如下图,其中类别绘制为热图 strip enter image description here

require(ggplot2)
ggplot(myd, aes(x=X, y=Y)) + geom_point(shape=1) + theme_bw()

这可能是 ggplot2 或其他包还是需要专门的解决方案?

最佳答案

实现此目的的一种方法是使用 ggplot2 制作三个单独的图,然后使用 viewport()grid.layout() 来把它们安排在一起。

第一个图只包含中间部分(散点图)。 pxpy 是 x 和 y 轴的热图(使用 geom_tile() 制作)。最重要的部分是在绘图中使用相同的 theme() 设置(只需将 x 更改为 y)。对某些元素使用 color="white" 以确保该元素有一个位置(具有正确的尺寸),但它们在绘图上不可见。

#Scatter plot without axis titles
p<-ggplot(myd, aes(x=X, y=Y)) + geom_point(shape=1) +
theme_bw() + theme(axis.title=element_blank())

#tile plot for the x axis
px<-ggplot(myd,aes(x=xcat,y=1,fill=xcat))+geom_tile()+
scale_x_discrete(expand=c(0,0))+
scale_fill_hue(h=c(0,180))+
scale_y_continuous(expand=c(0,0),breaks=1,labels="10")+
theme(legend.position="none",
axis.title=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.text.y=element_text(color="white"),
axis.ticks.y=element_line(color="white"))

#tile plot for the y axis
py<-ggplot(myd,aes(x=1,y=ycat,fill=ycat))+geom_tile()+
scale_y_discrete(expand=c(0,0))+
scale_x_continuous(expand=c(0,0),breaks=1,labels="1")+
scale_fill_hue(h=c(181,360))+
theme(legend.position="none",
axis.title=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
axis.text.x=element_text(color="white"),
axis.ticks.x=element_line(color="white"))

#Define layout for the plots (2 rows, 2 columns)
layt<-grid.layout(nrow=2,ncol=2,heights=c(7/8,1/8),widths=c(1/8,7/8),default.units=c('null','null'))
#View the layout of plots
grid.show.layout(layt)

#Draw plots one by one in their positions
grid.newpage()
pushViewport(viewport(layout=layt))
print(py,vp=viewport(layout.pos.row=1,layout.pos.col=1))
print(p,vp=viewport(layout.pos.row=1,layout.pos.col=2))
print(px,vp=viewport(layout.pos.row=2,layout.pos.col=2))

enter image description here

关于r - XY散点图,热图带在r中的边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16045384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com