为什么ggplot2不允许我为每个单独的点设置大小?

3

我有一个散点图。我想按其频率缩放每个点的大小。因此,我有一个相同长度的频率列。然而,如果我这样做:

... + geom_point(size=Freq)

我收到了这个错误信息:

When _setting_ aesthetics, they may only take one value. Problems: size

我理解为所有点只能有一个大小。那么我该如何做到我想要的效果呢?
更新:数据在此处here。我使用的基本代码如下:
dcount=read.csv(file="New_data.csv",header=T)
ggplot(dcount,aes(x=Time,y=Counts)) + geom_point(aes(size=Freq))

也许您可以展示数据和/或更多的代码。看起来这个人有类似的问题:http://groups.google.com/group/ggplot2/browse_thread/thread/0489a702f3afc83b - apeescape
当然,您始终可以使用geom_hex()。https://dev59.com/Fk7Sa4cB1Zd3GeqP6s1i#3161015 - apeescape
从ggplot2的2.0.0版本开始,您可以使用geom_count而无需创建新的“Freq”列。请参见https://dev59.com/lXPYa4cB1Zd3GeqPl66k。此外,此帖子中的数据链接现在重定向到亚马逊。 - Sam Firke
3个回答

3

是的,它仍然不会根据频率缩放点。它确实创建了一系列大小不同的点的渐变,但这与Freq值无关。 - Maiasaura
一如既往,一个可复现的示例是关键。 - hadley
当然,我在编辑的帖子中包含了数据和代码的示例。 - Maiasaura

2

好的,这可能是你在寻找的内容。你提供的代码将信息聚合成四个类别。如果你不想这样,可以使用scale_size_manual()指定类别。

sizes <- unique(dcount$Freq)
names(sizes) <- as.character(unique(dcount$Freq))

ggplot(dcount,aes(x=Time,y=Counts)) + geom_point(aes(size=as.factor(Freq))) + scale_size_manual(values = sizes/2)

非常感谢,apeescape!这正是我在寻找的。干杯。 - Maiasaura

1
如果gd047提供的代码无效,我会确认一下你的列是否实际上被称为,并且你的工作空间中没有其他名为的对象。除此之外,代码应该能够运行。你怎么知道比例尺与频率无关呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接