2

这可能是一个简单的问题,但我不知道答案。是否可以在不破坏您的尺寸审美的情况下重新调整 ggplot 中的点?

基本上,假设我有以下内容:

data <- data.frame(size=c(1, 1, 2, 2, 2), x=1:5, y=1:5, color=factor(c(0, 0, 1, 1, 1)))
cols <- unique(data$color)
names(cols) <- c("group 1", "group 2")
sols <- unique(data$size)
names(sols) <- c("group 1", "group 2")

我可以将其绘制为:

ggplot(data,aes(x=x, y=y, size=size, color=color)) +
  geom_point() +
  scale_color_discrete("Dot", labels=names(cols)) +
  scale_size_continuous("Dot", breaks=sols)

显示如下点:

在此处输入图像描述

这看起来不错,但是假设现在我对数据进行了 1000 次观察,而不是只有 5 次。突然之间,我的绘图被大量点塞满了,因为 group2 点太大了。如何重新调整点的大小以使它们的大小更合适,以便我可以在不重叠的情况下适应更多点?我已经考虑过 geom_density ,但它并不真正适合我的目的,我更喜欢散点图可视化。

我的目标是一些功能可以重新调整我的点,使点通常比现在具有适当大小比例的点小。为了使事情更合理,一旦我有了它,我将对大小变量进行对数变换,以使事情更成比例(特别是,因为点的任何整体重新缩放都可能导致较小的点接近不可见的小) . 如果有更好的方法来做到这一点,我全神贯注!多谢你们。

4

1 回答 1

4

弄清楚了。可以使用该scale_size()函数直接映射到大小值,如下所示(使用初始示例):

ggplot(data,aes(x=x, y=y, size=size, color=color)) +
  geom_point() +
  scale_color_discrete("Dot", values=cols) +
  scale_size_continuous("Dot", breaks=sols) +
  scale_size(range=c(0.5, 2))

在此处输入图像描述

于 2018-01-19T19:58:11.953 回答