我试着画一个点图,其中一个数字y值根据字符变量进行分组。这很好用,但我还想根据另一个变量更改点的大小,以便在图中有三种不同大小的点。我可以改变点的大小,只是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中唯一的点应该很小(dotsize=0.3),组A的y=1处的两个点的大小都应该相等……诸若此类。
Dotplot with all sorts of dotsize inaccuracies
“当在循环中绘制不同的数据集时,geom_dotplot点大小会发生变化”(geom_dotplot dot sizes change when plotting different datasets in loop)这个问题回答说,geom_dotplot的点大小并不完全是点大小,而是与面元宽度相关。这就可以解释为什么我有麻烦了。然而,我不确定如何解决这个问题。有没有一种方法可以可靠地改变ggplot2的点图中的点大小,或者我应该尝试用比geom_dotplot更灵活的工具来绘制点图?(重新启动R,我的计算机无法工作。)
干杯!
发布于 2019-10-01 07:10:18
使用geom_point
而不是geom_dotplot
应该可以解决这个问题
ggplot(data1, aes(x=x1,y=y1)) +
geom_point(aes(size=size1))
发布于 2019-10-01 07:26:24
你分享的堆栈溢出线程阐明了你可以用geom_dotplot
做什么,如果你添加了一个binwidth
参数,你可以看到dotsize
的效果。下面是一个例子,
base <- ggplot(data1, aes(x=x1,y=y1))
base + geom_dotplot(binaxis="y", stackdir="center", dotsize=size1, binwidth = 1)
输出
https://stackoverflow.com/questions/58175968
复制相似问题