【问题标题】:Removing the zero level of an imagemap using ggplot2使用 ggplot2 删除图像映射的零级
【发布时间】:2010-10-12 16:01:11
【问题描述】:

我正在使用geom_tile 来绘制图像映射,并希望清除零级以清楚起见。

#dummy data
set.seed(1)
tdata <- data.frame(cat1=rep(letters[1:3],4),cat2=sort(rep(LETTERS[1:4],3)),val=rpois(12,1.5))
tdata$val<-tdata$val/max(tdata$val)

我找到了两种方法来做到这一点,但都有各自的缺点:

1)

qplot(cat1,cat2,data=tdata,geom="tile",fill=val) + scale_fill_continuous(limits=c(.Machine$double.eps,1))

这有一个缺点是最小值颜色没有打印在刻度中。

2)

qplot(cat1,cat2,data=tdata,geom="tile",fill=val,alpha=ifelse(val,1,0))

这有一个缺点是也绘制了 alpha 比例。将 alpha 参数包装在 I() 中会导致它失败。

有没有办法做到这一点而没有缺点?

【问题讨论】:

  • “清零”是什么意思?一方面,您的测试数据在 tdata$val 中没有任何零...
  • 应该可以,除非set.seed(1) 在您的系统上生成不同的随机数。我的意思是如果值为零,而不是色带的底端,则不绘制任何内容。

标签: r ggplot2


【解决方案1】:

您可以对数据进行子集化。

qplot(..., data=subset(tdata, val > 0), ...) 
qplot(cat1,cat2,data=subset(tdata, val >0),geom="tile",fill=val)

【讨论】:

    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    相关资源
    最近更新 更多