繁体   English   中英

在 ggplot2 的 geom_dotplot 中改变点大小

[英]Varying dotsizes in ggplot2's geom_dotplot

我正在尝试制作一个点图,其中根据字符变量对数字 y 值进行分组。 这很好用,但我也想根据另一个变量更改点的大小,以便在 plot 中有三种不同大小的点。 我可以更改点的大小,只是 R 似乎没有做对。

我找不到一个好的样本数据集,所以我做了一个简单的例子:

#Making some sufficient data:
y1 <- c(1,1,2,3,4,5,6,6)
x1 <- c('A','A','B','C','A','A','B','B') 
size1 <- c(0.3,0.3,0.3,0.3,0.3,0.6,0.6,1.0)

data1 <- data.frame(x1,y1,size1)
data1

#define size as a vector: apparently it helps some problems
size2 <- data1$size1 

#plot my dotplot! 
ggplot(data1, aes(x=x1,y=y1)) + 
geom_dotplot(binaxis="y", stackdir="center", dotsize=size2)

总的来说,点图工作正常。 y 变量根据它们的 A、B 或 C 组进行分组。 但是,点的大小不正确:组 C 中唯一的点应该很小(点大小 = 0.3),A 组的 y=1 处的两个点应该都大小相等......等等。

具有各种点大小不准确的点图

问题 'geom_dotplot dot sizes change when plotting different datasets in loop'( geom_dotplot dot sizes changes when plotting different datasets in loop )表示 geom_dotplot 的点大小不完全是点大小,而是相对于 bin 宽度。 这可以解释为什么我有麻烦。 但是,我不确定如何解决这个问题。 有没有办法可靠地改变 ggplot2 点图中的点大小,或者我应该尝试使用比 geom_dotplot 更灵活的工具制作点图? (重新启动 R 和我的电脑不工作。)

干杯!

使用geom_point而不是geom_dotplot应该可以解决问题

ggplot(data1, aes(x=x1,y=y1)) + 
     geom_point(aes(size=size1))

结果图

您共享的堆栈溢出线程阐明了您可以使用geom_dotplot做什么,如果您添加binwidth参数,您可以看到dotsize的效果。 这是一个例子,

base <- ggplot(data1, aes(x=x1,y=y1))
base + geom_dotplot(binaxis="y", stackdir="center", dotsize=size1, binwidth = 1)

Output

点图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM