gpt4 book ai didi

r - 如何在 ggplot 气泡图中添加两个不同大小的点?

转载 作者:行者123 更新时间:2023-12-02 03:26:44 29 4
gpt4 key购买 nike

我刚刚遇到这样的图表,其中使用了两种颜色的 geom_point(我相信它是由 ggplot2 制作的)。同样,我想要一种颜色的点,范围从 1 到 5,一系列点的范围为 10 到 50 的另一种颜色。但是我不知道如何添加两个不同范围的点一张图。

在我的基本步骤中:

a <- c(1,2,3,4,5)
b <- c(10,20,30,40,50)
Species <- factor(c("Species1","Species2","Species3","Species4","Species5"))
bubba <- data.frame(Sample1=a,Sample2=b,Species=Species)
bubba$Species=factor(bubba$Species, levels=bubba$Species)
xm=melt(bubba,id.vars = "Species", variable.name="Samples", value.name = "Size")
str(xm)
ggplot(xm,aes(x= Samples,y= fct_rev(Species)))+geom_point(aes(size=Size))+scale_size(range = range(xm$Size))+theme_bw()

任何人都可以提供我应该调查的线索吗?谢谢!

enter image description here

最佳答案

我有一种方法可以完成 90% 的工作,但我不确定如何完成这项工作。为了获得尺寸的单个图例,我使用了一个转换将输入尺寸转换为显示尺寸。这使得图异常(exception)观符合显示。我还没有弄清楚的是如何对 fill 应用类似的转换,以便两者可以集成到同一个图例中。

这是转换,在本例中将所有内容缩小 10 或更多:

library(scales)
shrink_10s_trans = trans_new("shrink_10s",
transform = function(y){
yt = if_else(y >= 10, y*0.1, y)
return(yt)
},
inverse = function(yt){
return(yt) # Not 1-to-1 function, picking one possibility
}
)

然后我们可以对大小使用这种转换来有选择地仅缩小 10 或更大的点。除了将填充编码与大小编码集成之外,这对于图例来说效果很好。

ggplot(xm,aes(x= Samples,y= fct_rev(Species), fill = Size < 10))+
geom_point(aes(size=Size), shape = 21)+
scale_size_area(trans = shrink_10s_trans, max_size = 10,
breaks = c(1,2,3,10,20,30,40),
labels = c(1,2,3,10,20,30,40)) +
scale_fill_manual(values = c(rgb(136,93,100, maxColorValue = 255),
rgb(236,160,172, maxColorValue = 255))) +
theme_bw()

enter image description here

关于r - 如何在 ggplot 气泡图中添加两个不同大小的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53177306/

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