ggplot2的geom_line中行的大小不同

时间:2015-09-28 13:05:48

标签: r ggplot2 line-plot

是否可以使用geom_line

绘制不同大小(即粗)的线条

无论小组如何,所有行的大小参数都相同:

bp <- ggplot(data=diamonds, aes(x=cut, y=depth)) +
  geom_line(aes(color=cut), size=1)

但是,我希望线条的粗细能够反映它们作为观察次数测量的相对重要性:

relative_size <- table(diamonds$cut)/nrow(diamonds)
bp <- ggplot(data=diamonds, aes(x=cut, y=depth)) +
  geom_line(aes(color=cut), size=cut)
bp
# Error: Incompatible lengths for set aesthetics: size

有趣的是,geom_line(..., size=cut)有效,但效果不如预期,因为它根本不会改变行大小。

1 个答案:

答案 0 :(得分:3)

为了做到这一点,您需要为relative_size创建一个与data.frame行长度相同的新变量,并将其添加到data.frame中。为此,您可以这样做:

#convert relative_size to a data.frame
diams <- diamonds
relative_size <- as.data.frame(table(diamonds$cut)/nrow(diamonds))

#merge it to the diams data.frame so that it has the same length
diams <- merge(diams, relative_size, by.x='cut', by.y='Var1', all.x=TRUE)

请注意,上述代码可以使用dplyr

替换为代码
diamonds %>% group_by(cut) %>% mutate(size = length(cut) / nrow(diamonds))

然后你需要关注@Heroka的建议,并使用你在diams data.frame中新创建的列的aes内的大小:

bp <- ggplot(data=diams, aes(x=cut, y=depth)) +
  geom_line(aes(color=cut, size=Freq))
bp

它有效:

enter image description here