【发布时间】:2018-05-10 09:47:19
【问题描述】:
我有以下数据:
d = data.frame(x=rnorm(100), y=rnorm(100), w=sample(c(0,1,2), 100, replace=T))
我想绘制这些数据,因此每条线的宽度由 d$w 给出(理想情况下以“pt”为单位)。但是,我在使用 ggplot 时遇到了麻烦。事实上,即使 d$w 为零,ggplot 仍然会画一条线:
ggplot(d, aes(x=x,y=y)) + geom_line(aes(size=w)) + scale_size_continuous(range=c(0,2))
关于如何解决这个问题的任何想法?我知道我可以用 NA 替换零,但我更担心的是比例本身不正确。有什么方法可以用有意义的固定单位测量线宽?
【问题讨论】:
-
不要将 size 放在对 aes 的调用中。试试看,
ggplot(d, aes(x=x,y=y),size=w) + geom_line() + scale_size_continuous(range=c(0,2)) -
我收到此错误:层错误(数据 = 数据,映射 = 映射,stat = stat,geom = GeomLine,:找不到对象 'w'
-
奇怪,我逐字复制了您的代码,但从未收到此错误。
d = data.frame(x=rnorm(100), y=rnorm(100), w=sample(c(0,1,2), 100, replace=T)) ggplot(d, aes(x=x,y=y),size=w) + geom_line() + scale_size_continuous(range=c(0,2)) -
我的错误。我在 geom_line() 中添加了“大小”参数。但是,使用您提出的解决方案并不能解决问题。事实上,现在看起来所有的线条都以相同的宽度绘制。这对你有用吗?
-
不,它也不适合我。我的错误,我没有正确理解这个问题。本质上,您需要根据变量值绘制不同的线宽,不包括零值?