【问题标题】:Why wont ggplot2 allow me to set a size for each individual point?为什么 ggplot2 不允许我为每个单独的点设置大小?
【发布时间】:2010-07-06 20:45:10
【问题描述】:

我有一个散点图。我想通过频率来缩放每个点的大小。所以我有一个相同长度的频率列。但是,如果我这样做:

... + geom_point(size=Freq)

我收到此错误:

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

我解释为所有点只能有 1 个大小。那我该怎么做呢?

更新:数据为here 我使用的基本代码是:

dcount=read.csv(file="New_data.csv",header=T)
ggplot(dcount,aes(x=Time,y=Counts)) + geom_point(aes(size=Freq))

【问题讨论】:

标签: r ggplot2


【解决方案1】:

你试过了吗..

+ geom_point(aes(size = Freq))

美学是mapped 对具有aes 函数的数据中的变量。查看http://had.co.nz/ggplot2/geom_point.html

【讨论】:

  • 是的。仍然没有根据频率缩放点。它确实会创建与 Freq 值无关的点大小梯度。
  • 一如既往,一个可重复的例子是关键
  • 当然,我已经在我编辑的帖子中包含了数据示例和代码。
【解决方案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!这正是我想要的。干杯。
【解决方案3】:

如果 gd047 给出的代码不起作用,我会仔细检查您的 Freq 列实际上是否称为 Freq,并且您的工作区没有其他名为 Freq 的对象。除此之外,代码应该可以工作。你怎么知道音阶和频率无关?

【讨论】:

    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2018-05-22
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多